Overclocker Opublikowano 11 Czerwca 2005 Zgłoś Opublikowano 11 Czerwca 2005 Mam taki programik w C++ , a ze jestem poczatkujacy w programowaniu w C nie rozumiem niektorych wyraznień co one znacza i w jakim celu tak zostaly uzyte. Tak wieć jak ktos moglby mi pomoc i krotko opisać linijki oznaczone +++ to bede bardzo wdzieczny. Głownie chodzi mi o wyjasnienie co to za wyrazenia(czy jakis wsaznik czy konstruktor itd.) i po co tam sa. [code #include <iostream.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> //---------- miejsce na prototypy funkcji i klas ------------------ class Ramka { public: int licznik; int numer_strony; //numer strony, ktora znajduje sie w ramce //ewentualnie wskaznik do strony moglby byc }; class Pamiec : public Ramka +++ { Ramka * ramka; +++ int ile; //ile ramek przydzielono do programu int ile_pelnych; int pozycja_w_tablicy_stron; //w ktorym miejscu w tablicy stron jestesmy public: Pamiec(); +++ Pamiec(int ilosc); +++ ~Pamiec(); +++ int fifo (int *tablica, int rozmiar); +++ int optymalny (int *tablica, int rozmiar); +++ int lru (int *tablica, int rozmiar); +++ }; //------- main -------------------- int main() { clrscr(); int* odwolania_do_stron=NULL; +++ int ilosc_odwolan, ilosc_stron, ilosc_ramek; cout<<"Podaj liczbe ramek ktora system operacyjny przydzieli procesowi:\n"; cin>>ilosc_ramek; cout<<"\nPodaj liczbe stron dostepna dla procesu (wieksza niz liczba ramek):\n"; cin>>ilosc_stron; cout<<"\nPodaj liczbe odwolan do stron (wieksza niz liczba stron):\n"; cin>>ilosc_odwolan; cout<<"Wyniki symulacji zostaly zapisane w plikach: fifo.txt, lru.txt, opty.txt\nProgram zakonczyl dzialanie. Enter aby kontynuowac\n"; getch(); odwolania_do_stron=new int[ilosc_odwolan]; +++ randomize(); +++ Pamiec P(ilosc_ramek),R(ilosc_ramek),S(ilosc_ramek); +++ for (int i=0;i<ilosc_odwolan;i++) { *(odwolania_do_stron+i)=random(ilosc_stron)+1; +++ } for (i=0;i<ilosc_odwolan;i++) { cout<<*(odwolania_do_stron+i); +++ } cout<<"\nFifo\n"; cout<<"\nBledow: "<<P.fifo(odwolania_do_stron,ilosc_odwolan); +++ cout<<"\nOptymalny\n"; cout<<"\nBledow: "<<R.optymalny(odwolania_do_stron,ilosc_odwolan); cout<<"\nLru\n"; cout<<"\nBledow: "<<S.lru(odwolania_do_stron,ilosc_odwolan); return 0; } //--------- ciala funkcji -------------------------- Pamiec::Pamiec() +++ { ile=0; ramka=NULL; pozycja_w_tablicy_stron=0; } Pamiec::Pamiec(int ilosc) +++ { ramka=new Ramka[ilosc]; +++ ile=ilosc; ile_pelnych=0; pozycja_w_tablicy_stron=0; } //--------------------------------------------------- Pamiec::~Pamiec() +++ { for (int i=0;i<ile;i++) { // delete ramka->el; } delete ramka; ile=0; } //----------------------- int Pamiec::fifo (int *tablica, int rozmiar) +++ { FILE* plik; +++ plik=fopen("fifo.txt","wt"); +++ fprintf(plik, "Algorytm FIFO\nKolejnosc odwolan:\n"); for (int a=0;a<rozmiar;a++) fprintf(plik, "%d ", tablica[a]); +++ fprintf(plik, "\n\n"); +++ //-------------------- int ktora,wymiana=0,max=0, ile_bledow=0; for (int i=0;i<rozmiar;i++) { if (pozycja_w_tablicy_stron<ile) //wstepne wypelnienie { ramka.numer_strony=tablica[pozycja_w_tablicy_stron]; +++ ramka.licznik=0; ile_pelnych++; cout<<"Wypelniam ramke "<<i<<" strona"<< tablica[pozycja_w_tablicy_stron]<<"\n"; +++ fprintf(plik,"Wypelniam ramke %d strona %d\n",i ,tablica[pozycja_w_tablicy_stron]); } else { wymiana=1; for (int j=0;j<ile;j++) if (ramka[j].numer_strony==tablica[pozycja_w_tablicy_stron]) +++ { wymiana=0; //jesli jest to nie rozpatrujemy wymiany cout<<"Nie zamieniam ramki \n"; fprintf(plik,"Nie zamieniam ramki \n"); } if (wymiana) { ile_bledow++; max=0; ktora=0; for (int k=0;k<ile_pelnych;k++) { if (ramka[k].licznik>max) +++ { max=ramka[k].licznik; +++ ktora=k; } } cout<<"Wymieniam zawartosc ramki "<<ktora<<" na strone "<< tablica[pozycja_w_tablicy_stron]<<"\n"; fprintf(plik, "Wymieniam zawartosc ramki %d na strone %d\n" ,ktora,tablica[pozycja_w_tablicy_stron]); ramka[ktora].numer_strony=tablica[pozycja_w_tablicy_stron]; +++ ramka[ktora].licznik=0; } } cout<<"Aktualny stan\n"; fprintf(plik,"Aktualny stan\n"); for (int j=0;j<ile_pelnych;j++) { cout<<"ramka "<<j<<" strona "<<ramka[j].numer_strony<<"\n"; fprintf(plik, "ramka %d - strona %d\n",j,ramka[j].numer_strony); ramka[j].licznik++; //zwieksz licznik wystepowanie wszystkim ramkom } pozycja_w_tablicy_stron++; } fprintf(plik, "\nLiczba bledow braku strony %d",ile_bledow); fcloseall(); +++ return ile_bledow; } [/code] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...