limun11

Postavka - Artikli

Jan 8th, 2017
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.65 KB | None | 0 0
  1. 1char * crt = "\n----------------------------------------------------\n";
  2. struct Datum {
  3. int * _dan, *_mjesec, *_godina;
  4. void Unos(int d, int m, int g) {
  5. _dan = new int(d);
  6. _mjesec = new int(m);
  7. _godina = new int(g);
  8. }
  9. void Ispis() { cout << *_dan << "/" << *_mjesec << "/" << *_godina << endl; }
  10. void Dealociraj() {
  11. delete _dan; delete _mjesec; delete _godina;
  12. _dan = _mjesec = _godina = nullptr;
  13. }
  14. };
  15. struct Artikal {
  16. char * _naziv;
  17. float _cijena;
  18. void Unos(char * naziv, float cijena) {
  19. int vel = strlen(naziv) + 1;
  20. _naziv = new char[vel];
  21. strcpy_s(_naziv, vel, naziv);
  22. _cijena = cijena;
  23. }
  24. void Dealociraj() { delete[]_naziv; _naziv = nullptr; }
  25. void Ispis() { cout << _naziv << " " << _cijena << " KM"; }
  26. };
  27. struct Racun {
  28. //format broja racuna: 006005491
  29. //osigurati automatsko generisanje broja racuna pocevsi od 000000001
  30. char _brojRacuna[10];
  31. Datum _datumKreiranja;
  32. Artikal * _artikli;
  33. int * _kolicine;//cuva informaciju o kolicini svakog artikla na racunu
  34. int _brojArtikala;
  35. //Potpisi funkcija trebaju odgovarati onima u main-u
  36. //1. Unos
  37. //2. Dealociraj
  38. //3. DodajArtikal - dodaje novi artikal u listu artikala zajedno sa njegovom kolicinom.
  39. Onemoguciti ponavljanje artikala na nacin da se uvecava samo kolicina ukoliko
  40. korisnik vise puta pokusa dodati isti artikal.
  41. //4. Ispis - ispisuje racun u formatu prikazanom na slici (nije obavezno da bude
  42. identican, ali je svakako pozeljno). Prilikom svakog ispisa, racun
  43. je potrebno spasiti u tekstualni fajl sa istim nazivom kao i broj racuna.
  44. //5. BinarnaPretraga - koristeci binarnu pretragu, na osnovu naziva, pronalazi i vraca
  45. pokazivac na artikal. Ukoliko trazeni artikal ne postoji funkcija vraca nullptr.
  46. };
  47. //1. PronadjiNajskupljiArtikal - rekurzivna funkcija koja vraca pokazivac na artikal sa najvecom ukupnom cijenom (cijena*kolicina)
  48. //2. GenerisiSljedeciBrojRacuna - generise i vraca naredni broj racuna
  49.  
  50. void main() {
  51. //za eventualne nejasnoce analizirati testni program i ispise na slici
  52. Datum danas; danas.Unos(13, 6, 2016);
  53. Artikal cigarete, cokolada, sok;
  54. cigarete.Unos("Cigarete", 2.23);
  55. cokolada.Unos("Cokolada", 1.23);
  56. sok.Unos("Cappy", 2.10);
  57. Racun racun;
  58. racun.Unos(GenerisiSljedeciBrojRacuna(), danas);
  59. racun.DodajArtikal(cokolada, 5);
  60. racun.DodajArtikal(sok, 10);
  61. racun.DodajArtikal(cigarete, 2);
  62. racun.DodajArtikal(cigarete, 5);
  63. racun.Ispis();
  64. Artikal * p1 = racun.BinarnaPretraga("Cokolada");
  65. cout << "Binarnom pretragom pronadjen artikal -> ";
  66. p1->Ispis();
  67. racun.Ispis();
  68. Artikal * p2 = PronadjiNajskupljiArtikal(/*potrebni parametri*/);
  69. cout << "Rekurzivno pronadjen najskuplji artikal -> ";
  70. p2->Ispis();
  71. cout << endl;
  72. //dealocirati zauzetu memoriju
  73. }
Advertisement
Add Comment
Please, Sign In to add comment