Mam prośbę a nie chcę zakładać nowego tematu. Otoż mam takie zadanie
Do tej pory na laboratoriach stworzyliście zbiór funkcji operujących na strukturze Osoba (takie MENU, gdzie można było dodawać, usuwać, wyświetlać itd. ). Dzisiaj Waszym zadaniem będzie przerobienie tego kodu tak, aby korzystał on z klas i obiektów. Na
początek - zastanówcie się nad odpowiednim abstrakcyjnym opisaniem "osoby". Moja propozycja jest taka (oczywiście możecie ją wzbogacić lub poprawić):
+------------------+| Osoba |+------------------+| -imię || -nazwisko || -data_urodzenia |+------------------+| +Osoba() || +ustawImię() || +ustawNazwisko() || +ustawDate() || +wyświetl() |+------------------+Poniżej zaimplementuję fragment powyższego opisu klasy - Waszym zadaniem będzie uzupełnienie go o brakujące elementy.class Osoba { char imie[50]; char nazwisko[50];public: Osoba (char *im, char *na); void wyswietl();};Osoba::Osoba(char *im, char *na){ strncpy(imie, im, 50); strncpy(nazwisko, na, 50);}void Osoba::wyswietl(){ cout << imie << " " << nazwisko << endl;}int main(){ Osoba a("Jan", "Kowalski"); Osoba b("Adam", "Nowak"); a.wyswietl(); b.wyswietl(); return 0;}
O to co ja wypociłem. Czy mógłby ktoś poprawić błędy, bo ja nie za bardzo to rozumiem a nie chcę, żeby mi ktoś pisał gotowego programu, bo przecież nie o to chodzi.
#include <cstdlib>#include <iostream>using namespace std;#ifndef stack.h#define stac.hclass Stack { double *buffer; public: Stack(int size); bool push(double v,int l); bool pop(double *v,int l); bool pop(double &v,int l); void wys(int l); ~Stack() {if (buffer) delete [] buffer;}};#endif [b] bool Stack:ush(double v,int l)[/b] <=w tym miejscu wywala błąd. { buffer[l]=v; } bool Stack:op(double *v,int l) { cout<<buffer[l]; } bool Stack:op(double &v,int l) { cout<<buffer[l]; } void Stack::wys(int l) {for(int i=0;i<=l;i++)cout<<"\n"<<i<<"- "<<buffer[i]; }int main(int argc, char *argv[]){ int l=0; double v; char m; int size; cout<<"\tPodaj rozmiar stosu liczb"; cin>>size; buffer = new typ[size]; do{ cout<<"\n\tMENU\n1-dodaj skladnik stosu\n2-zdejmij skladnik ze stosu (przez wskaznik)\n3-zdejmij skladnik ze stosu (przez referencje)4-wyswietl stos\nq-wyjscie\n; cin>>m; tolower(m); switch(m): { case '1': { if(n<size) {cout<<"\npodaj liczbe : "; cin>>v; if(Stack.push(v))cout<<"\nzapisano"; } else cout<<"\nstos jest pelny!"; break;} case '2': cout<<"\nzdjoles skladnik (*): "; if(Stack.pop(v,l))--l; break; case '3': cout<<"\nzdjoles skladnik (&) : " if(Stack.pop(v),l)--l; break; case '4': if(l==0){cout<<"\n Stos jest pusty!"; }else if(Stack.wys(l)); break; case 'q': break; default : cout<<"\nnie ma takiego numeru"; } } while('q'!=m) system("PAUSE"); return EXIT_SUCCESS;}
Od razu mówię, że kompilator wywala błąd (zaznaczyłem to miejsce). Programuję w dev. C++ . Z góry dziękuję za pomoc.