Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Języki i paradygmaty programowania...

panek89 26 Cze 2009 17:30 2179 9
  • #1 26 Cze 2009 17:30
    panek89
    Poziom 9  

    Witam Panowie mam problem z kilkoma zadaniami z przedmiotu Języki i paradygmaty programowania...

    Zad.1. 1.pkt. Utworzyć klasę posiadającą:
    - dwa atrybuty prywatne: typu int i typu tablica znakowa o rozmiarze 10
    - metody: konstruktor nadający atrybutom wartości: 11 i „wiersz”, konstruktor przeciążony nadający wartości atrybutom poprzez pobierane wartości parametrów, wpisz, wyświetl wszystko, wyświetl wartość pola tekstowego(wszystkie metody publiczne).

    Code:
    #include <iostream.h>
    
    #include <stdlib.h>
    #include <string.h>
    class a1
    {
          private: int a; char w[10];
         
            public:   
         a1()
          {a=11; strcpy(w,"wiersz");}
         a1(int x,char w1[10])
         { a=x; strcpy(w,w1);}
         void wysw()
         {cout<<"a="<<a<<"\nw="<<w<<endl;}
        void wysw(int t)
        {cout<<"pole tekstowe="<<w<<endl;}
         void wpisz(int aa, char ww[10]){
         a=aa; strcpy(w,ww);}
         
    };     
          main ()
     {  a1 p1;
        p1.wysw();
        a1 p2(15,"tekst2");
        p2.wysw();
        a1 p3;
        p3.wpisz(44,"tekst3");
        p3.wysw();
       

        system("pause");
        return 0;
    }   


    Zad.2. 1.5.pkt. W oparciu o klasę z zad.1. (ewentualnie ją modyfikując) za pomocą mechanizmu dziedziczenia utworzyć klasę pochodną dziedziczącą atrybut tablica znakowa, mającą dodatkowo jeden atrybut typu int jako publiczny, oraz swoje metody: konstruktor – nadający wartość obu atrybutom – odpowiednio 555 i „kolokwium”, wyświetl wartości wszystkich atrybutów, wpisz wartość atrybutu tablica znakowa.

    Zad.3. 1.pkt. Utworzyć klasę posiadającą dwa atrybuty – jeden typu int, drugi typu float. Atrybut typu int ma być statyczny. Należy nadać mu wartość początkową 101. Klasa ma zawierać metody: konstruktor nadający wartość dla atrybutu typu float poprzez parametr i zwiększający wartość atrybutu statycznego o 10, wyświetl wartość atrybutu statycznego. Utworzyć trzy obiekty, pokazać zmiany wartości atrybutu statycznego.

    Zad.4. 1.5.pkt. Utworzyć klasę bazową z chronionym atrybutem typu float, konstruktorem nadającym mu wartość 2.33, oraz pochodną od niej zawierającą dodatkowy parametr typu int i swój konstruktor nadający wartości przez parametry. W klasie bazowej zdefiniować metodę „obliczenia”, która ma wywoływać prywatną metodę kwadrat – która ma liczyć kwadrat wartości atrybutu typu całkowitego danej klasy. W klasie pochodnej ma być swoja metoda kwadrat. Metody „kwadrat” maja być wirtualne. W funkcji main pokazać działanie mechanizmu wirtualnego.

    Nie wiem jak zrobić zadanie 2,3 i 4... 1 zrobiłem, ale czy dobrze też nie wiem.

    Pozdrawiam

  • #2 26 Cze 2009 18:17
    Demoman
    Poziom 17  

    kod w znaczniki code a potem pomyślimy :)

  • #3 27 Cze 2009 03:08
    panek89
    Poziom 9  

    Okey ;) już jest ;p także kto chętnych niech myśli :)

  • Pomocny post
    #4 29 Cze 2009 23:52
    laurearel
    Poziom 12  

    Mam nadzieję że nie za późno ;p

    Ad 1

    Code:
    #include <iostream.h>
    
    #include <stdlib.h>
    #include <string.h>

    /****************** KLASA NOWA *******************/
    class KlasaNowa
    {
          private:
            int a;
            char w[10];
         
          public: 
          /******* konstruktory ************/
          KlasaNowa()
          {
              a=11; strcpy(w,"wiersz");
             
          }
         
          KlasaNowa(int x,char w1[10])
          {
                 a = x;
                 for (int i=0 ; i< 10 ; i++)
                 w[i] = w1[i] ;
          }
          /*********************************/
         void wyswietl()
         {
              cout << "int a = " << a << endl ;
              cout << "char w = " << w << endl ;
         }
    };

    /***************** MAIN ******************/

    int main ()
    {   
        char tab[10] ;
        int x,y ;
       
        KlasaNowa nowa1 ;
        nowa1.wyswietl();


        cout << " Podaj x : " ;
        cin >> x ; cout << endl;

        cout << "Podaj tab [max 10 znakow] : " ;
        cin >> tab;
         
       
        KlasaNowa nowa2(x,tab);
        nowa2.wyswietl();
       
       
        system("pause");
        return 0;
    }   


    Ad2
    Po pierwsze zmieniasz w klasie bazowej (klasa nowa) zmienną char z private na protected .
    Cytat:
    wpisz wartość atrybutu tablica znakowa.

    Którego atrybutu ? Nie łapię za bardzo

    Klasa pochodna :
    Code:
     class KlasaPochodna : public KlasaNowa
    
    {
          public :
                 int iks ;
                 
                 KlasaPochodna()
                 {
                                iks = 555 ;
                                strcpy(w,"kolokwium");
                 }
                 void wyswietl()
                 {
                      cout << "int iks = " << iks << endl ;
                      cout << "char w = " << w << endl ;
                 }
    };

    w main :
    Code:
        KlasaPochodna pochod ;
    
        pochod.wyswietl();


    Ad.3
    Code:
    class Trzy
    
    {
                     
          public :
                 static int umc ;
                 float arghhh ;
                 
                 Trzy(float zm)
                 {
                      arghhh = zm ;
                      umc = 101 ;
                 }

                 void wyswietl ()
                 {
                      cout << "zm. statyczna umc = " << umc << ", zm. float = " << arghhh << endl ;
                 }
    };


    Ostatnie pisałem na szybko bez sprawdzania, jutro jak nie zapomnę dopiszę 4te , teraz mykam, pozdro

  • #5 30 Cze 2009 21:57
    panek89
    Poziom 9  

    Wielkie dzięki :) myślałem, że już nikt się nie skusi :)

  • #6 01 Lip 2009 14:56
    laurearel
    Poziom 12  

    i Ad.4

    Code:
    #include <cstdlib>
    
    #include <iostream>
    #include <math.h>

    using namespace std;

    class KBaz
    {
          protected :
                    float fChron ;
          public :
          KBaz ()
          {
              fChron = 2.33 ;
          }
         
          void obliczenia()
          {
               cout << " Kwadrat wynosi : " << kwadrat();
          }
         
          private :
                  virtual double kwadrat()
                  {
                         
                  }
    };

    class KPoch : public KBaz
    {
          int iNew;
          public :
          KPoch (int a, float b)
          {
                fChron = b ;
                iNew = a ;
          }

                private :
                       
                  double kwadrat()
                  {
                         return pow(iNew,2);
                  }
    };

    int main(int argc, char *argv[])
    {
        KPoch nius(10, 4);
        nius.obliczenia();
        cout << endl ;
        system("PAUSE");
        return EXIT_SUCCESS;
    }

  • #7 02 Lip 2009 22:12
    panek89
    Poziom 9  

    Hee fajnie fajnie :) a co powiecie na te zadania ? ja wymiękam ;]

    Code:
    Zad.1. 1.5.pkt. W oparciu o klasę z zad.2. (ewentualnie ją modyfikując) za pomocą mechanizmu dziedziczenia utworzyć klasę pochodną dziedziczącą oba atrybuty, mającą dodatkowo jeden atrybut typu tablica znakowa jako publiczny, oraz swoje metody: konstruktor – nadający wartość wszystkim atrybutom poprzez parametry, wyświetl wartość atrybutu tablica znakowa, wpisz wartości obu atrybutów liczbowych.
    

    Zad.2. 1.pkt. Utworzyć  klasę posiadającą:
    - dwa atrybuty: prywatny typu float i publiczny typu int
    - metody: konstruktor nadający atrybutowi typu float wartość 11.77, dla typu int poprzez parametr, konstruktor przeciążony nadający wartości atrybutom poprzez pobierane wartości parametrów, wpisz wartość atrybutu typu int, wyświetl wszystko, średnia – obliczająca wartość średnią obu atrybutów i zwracająca ją (wszystkie metody publiczne).

    Zad.3. 1.5.pkt. Utworzyć klasę bazową z atrybutem typu int, konstruktorem nadającym mu wartość przez parametr, oraz pochodną od niej zawierającą dodatkowy parametr typu float i swój konstruktor nadający wartości przez parametry. W klasie bazowej zdefiniować metodę „wyniki” wywołującą prywatną metodę „suma” – która ma liczyć sumę wartości atrybutów danej klasy i ją zwracać. W klasie pochodnej ma być swoja metoda suma. Metody „suma” maja być wirtualne. W funkcji main pokazać działanie mechanizmu wirtualnego.

    Zad.4. 1.pkt. Utworzyć klasę posiadającą trzy atrybuty typu int. Jeden z atrybutów typu int ma być statyczny. Należy nadać mu wartość początkową 77. Klasa ma zawierać metody: konstruktor nadający wartości dla atrybutów 33 i 88, i zwiększający wartość atrybutu statycznego o 6, wyświetl wartości wszystkich atrybutów. Utworzyć dwa obiekty, pokazać zmiany wartości atrybutu statycznego.

  • #8 02 Lip 2009 23:39
    laurearel
    Poziom 12  

    słuchaj , to nie jest trudne. Sorki, ale ja nie mam czasu teraz, mam masę na głowę, i i tak nie wyrabiam ze wszystkim ;/
    Przeanalizuj przykłady, po modyfikuj , porównaj treśc, a spokojnie dojdziesz do tego ; p
    W tamtych przykładach masz wystarczająco informacji ;p

    pozdro;p

  • #9 03 Lip 2009 08:42
    lord_dagoth
    Poziom 25  

    Zad. 2

    Code:
    class jakasKlasa
    
    {
       private:
          float zmiennaFloat;
       public:
          int zmiennaInt;

          jakasKlasa(int x)
          {
             zmiennaInt=x;
             zmiennaFloat=11.77;
          }
       
          jakasKlasa(int x, float y)
          {
             zmiennaInt=x;
             zmiennaFloat=y;
          }
       
          void WpiszInt(int x)
          {
             zmiennaInt=x;
          }   

          void WyswietlWszystko()
          {
             std::cout<<zmiennaInt<<' '<<zmiennaFloat<<std::endl;
          }
       
          float srednia()
          {
             return ((float)zmiennaInt+zmiennaFloat)/2;
          }
    };

    Zad. 1
    Code:
    class jakasKlasa
    
    {
       public:
          float zmiennaFloat;
          int zmiennaInt;

          jakasKlasa()
          {
          }

          jakasKlasa(int x)
          {
             zmiennaInt=x;
             zmiennaFloat=11.77;
          }
       
          jakasKlasa(int x, float y)
          {
             zmiennaInt=x;
             zmiennaFloat=y;
          }
       
          void WpiszInt(int x)
          {
             zmiennaInt=x;
          }   

          void WyswietlWszystko()
          {
             std::cout<<zmiennaInt<<' '<<zmiennaFloat<<std::endl;
          }
       
          float srednia()
          {
             return ((float)zmiennaInt+zmiennaFloat)/2;
          }
    };

    class klasaPochodna : jakasKlasa
    {
       public:
          //nie ma sprecyzowanej dlugosci tablicy, ani tego, czy ma byc tworzona dynamicznie
          //wiec zalozylem ze ma 30 znakow, oczywiscie latwo to zmienic sobie :P
          char tablicaZnakow[30];

          klasaPochodna(int x, float y, char* ciagZnakow)
          {
             zmiennaInt=x;
             zmiennaFloat=y;

             //nie ma rowniez nic sprecyzowanego do sposobu przypisania tego, wiec
             //wzialem funkcje z string.h
             strncpy(tablicaZnakow,ciagZnakow,30);
          }

          void WyswietlTablice()
          {
             std::cout<<tablicaZnakow<<std::endl;
          }

          void WpiszAtrybutyLiczbowe(int x, float y)
          {
             zmiennaInt=x;
             zmiennaFloat=y;
          }
    };

    Reszty już mi się nie chce robić, ale będą dosłownie analogicznie :P

  • #10 03 Lip 2009 15:28
    panek89
    Poziom 9  

    Wielkie dzięki :) Pozdrawiam miłego kolegę ;)

 
Promocja -20%
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
tme