| Author |
Message
|
panek89 Poziom 8

Joined: 19 Oct 2006 Posts: 29 Location: Warszawa
|
#1
26 Jun 2009 17:30 Języki i paradygmaty programowania... |
|
|
|
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
|
|
| Back to top |
|
 |
Demoman Poziom 13

Joined: 03 Dec 2003 Posts: 135 Location: -
|
#2
26 Jun 2009 18:17 Re: Języki i paradygmaty programowania... |
|
|
|
kod w znaczniki code a potem pomyślimy :)
|
|
| Back to top |
|
 |
Google

|
#
26 Jun 2009 18:17 |
|
|
|
|
|
| Back to top |
|
 |
panek89 Poziom 8

Joined: 19 Oct 2006 Posts: 29 Location: Warszawa
|
#3
27 Jun 2009 03:08 Re: Języki i paradygmaty programowania... |
|
|
|
Okey ;) już jest ;p także kto chętnych niech myśli :)
|
|
| Back to top |
|
 |
laurearel Poziom 8

Joined: 29 Jun 2009 Posts: 31
|
#4
29 Jun 2009 23:52 Re: Języki i paradygmaty programowania... |
|
|
|
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 .
| Quote: |
| 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
|
|
| Back to top |
|
 |
Google

|
#
29 Jun 2009 23:52 |
|
|
|
|
|
| Back to top |
|
 |
panek89 Poziom 8

Joined: 19 Oct 2006 Posts: 29 Location: Warszawa
|
#5
30 Jun 2009 21:57 Re: Języki i paradygmaty programowania... |
|
|
|
Wielkie dzięki :) myślałem, że już nikt się nie skusi :)
|
|
| Back to top |
|
 |
laurearel Poziom 8

Joined: 29 Jun 2009 Posts: 31
|
#6
01 Jul 2009 14:56 Re: Języki i paradygmaty programowania... |
|
|
|
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;
} |
|
|
| Back to top |
|
 |
panek89 Poziom 8

Joined: 19 Oct 2006 Posts: 29 Location: Warszawa
|
#7
02 Jul 2009 22:12 Re: Języki i paradygmaty programowania... |
|
|
|
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. |
|
|
| Back to top |
|
 |
laurearel Poziom 8

Joined: 29 Jun 2009 Posts: 31
|
#8
02 Jul 2009 23:39 Re: Języki i paradygmaty programowania... |
|
|
|
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
|
|
| Back to top |
|
 |
lord_dagoth Poziom 20

Joined: 06 Mar 2007 Posts: 872 Location: Gdańsk
|
#9
03 Jul 2009 08:42 Re: Języki i paradygmaty programowania... |
|
|
|
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
|
|
| Back to top |
|
 |
Google

|
#
03 Jul 2009 08:42 |
|
|
|
|
|
| Back to top |
|
 |
panek89 Poziom 8

Joined: 19 Oct 2006 Posts: 29 Location: Warszawa
|
#10
03 Jul 2009 15:28 Re: Języki i paradygmaty programowania... |
|
|
|
Wielkie dzięki :) Pozdrawiam miłego kolegę ;)
|
|
| Back to top |
|
 |