Ovo je malo uprosceno koristimo STL, sklepno je na brzinu izvinjavamo se zbog neurednog koda
Code:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <list.h>
#include <iostream.h>
#include <algorithm>
#include <iterator>
#pragma hdrstop
using namespace std;
//---------------------------------------------------------------------------
#pragma argsused
class Procesor
{
public:
char Ime[255];
long brzina;
long cena;
Procesor(){}; // default konstruktor
Procesor(char*, long, long);
inline bool operator < (const Procesor* prc) // zbog sortiranja
{
return (cena < prc->cena);
}
} ;
list<Procesor*> lista;
list<Procesor*> Sort_lista;
typedef list<Procesor*>::iterator Iter; // iterator
void Dodaj();
void listajSve(list<Procesor*>);
void Brisi();
void Sortiraj();
int main(int argc, char* argv[])
{
char c;
do
{
system("CLS");
cout<< " 1 .... Unos novog procesora " << endl;
cout<< " 2 .... lista svih procesora " << endl;
cout<< " 3 .... Brisanje procesora " << endl;
cout<< " 4 .... Sortiranje procesora po ceni " << endl;
cout<< " q .... RAZLAZ " << endl;
c= getchar();
switch (c)
{
case '1': Dodaj(); break;
case '2': listajSve(lista); break;
case '3': Brisi(); break;
case '4': Sortiraj(); break;
}
} while (c!= 'q');
Iter i;
Procesor *p;
for(i = lista.begin(); i!= lista.end(); i++) // kill 1
{
p= (Procesor*)(*i);
delete p;
}
lista.clear(); // kill 2
for(i = Sort_lista.begin(); i!= Sort_lista.end(); i++) // kill 1
{
p= (Procesor*)(*i);
delete p;
}
Sort_lista.clear(); // kill 2
return 0;
}
//---------------------------------------------------------------------------
Procesor:: Procesor(char * _naziv, long _brzina, long _cena)
{
strcpy( Ime, _naziv);
brzina = _brzina;
cena = _cena;
}
//--------------------------------------------------------
void Dodaj()
{
char naziv[256];
long brzina, cena;
cout<< "Unos novog procesora " << endl;
cout << " Naziv procesora : ";
cin>> naziv; cout << endl;
cout<< "Brzina: ";
cin>> brzina ; cout << endl;
cout<< "Cena: ";
cin>> cena ; cout << endl;
Procesor *p = new Procesor ( naziv,brzina,cena);
lista.push_back(p);
}
//--------------------------------------------------------
void listajSve(list<Procesor*> _lista)
{
Procesor *p;
cout << " Stampanje svih procesora " << endl ;
int counter =1;
Iter i;
for(i = _lista.begin(); i!= _lista.end(); i++)
{
p= (Procesor*)(*i);
cout << counter++ <<":" << p->Ime << " : " << p->brzina << " Hz " << p->cena << " din " << endl;
}
system("PAUSE");
}
//--------------------------------------------------------
void Brisi()
{
int j,index = 0;
Iter i ;
int max = lista.size(); // broj elemenata liste
cout << " Brisanje nekog iz liste najpre sama lista" << endl;
listajSve(lista);
cout << " Unesi redni broj procesora za brisanje " << endl;
cin>> index;
if(index > max) return;
for( j=1, i= lista.begin(); j<index ; i++ ); // jednostavnije je sa find
lista.erase(i);
system("PAUSE");
}
//--------------------------------------------------------
void Sortiraj()
{
Iter i;
Sort_lista.clear();
for(i= lista.begin(); i != lista.end(); i++)
Sort_lista.push_back(*i);
Sort_lista.sort();
listajSve(Sort_lista);
}
//---------------------------------------------------
Jos jednom se izivinjavam ako je kod malo neuredan pisao sam na brzinu i nisam mnogo estirao ali vazan je princip. Mislim da je za pocetnike najbolje da rade preko nizova ili korisnicki definisanih povezanih listi verovatno tako trazi nj. profesor