Skocz do zawartości
Overclocker

Programik - Prosba O Opis

Rekomendowane odpowiedzi

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]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...