Advertisement
cunha1

Untitled

Jan 29th, 2020
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.07 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. class autori {
  7.   public:
  8.   int sifra;
  9.   char
  10.     ime[25],
  11.     drzava[25];
  12. };
  13.  
  14. class clanci {
  15.   public:
  16.   int
  17.     rednibroj,
  18.     sifra,
  19.     ocjena;
  20.   char napomena[25];
  21.   clanci* sljedeci;
  22.   clanci() {
  23.     sljedeci=NULL;
  24.   }
  25. };
  26.  
  27. clanci* clanciGlava;
  28.  
  29. void unos_autora () {
  30.   autori autor;
  31.   do {
  32.     cout << "Sifra: "; cin>>autor.sifra;
  33.   }
  34.   while(!(autor.sifra >= 100 && autor.sifra <= 999));
  35.   cout << "Ime: "; cin>>autor.ime;
  36.   cout << "Drzava: "; cin>>autor.drzava;
  37.   ofstream dat("datoteka.dat", ios::binary | ios::app);
  38.   dat.write((char*)&autor,sizeof(autor));
  39.   dat.close();
  40. }
  41.  
  42. void ispis_autora() {
  43.   autori autor;
  44.   ifstream dat("datoteka.dat", ios::binary);
  45.   while(dat.read((char*)&autor,sizeof(autor))) {
  46.     cout << "Sifra: " << autor.sifra << endl <<
  47.             "Ime: " << autor.ime << endl <<
  48.             "Drzava: " << autor.drzava << endl;
  49.   }
  50.   dat.close();
  51. }
  52.  
  53. clanci* clanciZadnji_element() {
  54.   clanci* el = clanciGlava;
  55.   while(el->sljedeci != NULL) {
  56.     el=el->sljedeci;
  57.   }
  58.   return el;
  59. }
  60.  
  61. void upis_clanka() {
  62.   clanci* clanak = new clanci;
  63.   bool sifra_nadena = false;
  64.   do {
  65.     cout << "Sifra: "; cin>>clanak->sifra;
  66.     autori autor;
  67.     ifstream dat("datoteka.dat", ios::binary);
  68.     while(dat.read((char*)&autor,sizeof(autor))) {
  69.       if(autor.sifra == clanak->sifra)
  70.         sifra_nadena=true;
  71.     }
  72.     dat.close();
  73.   } while(sifra_nadena == false);
  74.  
  75.   cout << "Redni broj: "; cin>>clanak->rednibroj;
  76.   cout << "Ocjena: "; cin>>clanak->ocjena;
  77.   cout << "Napomena: "; cin>>clanak->napomena;
  78.   clanci* zadnji = clanciZadnji_element();
  79.   zadnji->sljedeci = clanak;
  80. }
  81.  
  82. void ispis_clanka() {
  83.   clanci* el = clanciGlava->sljedeci;
  84.   int sifra;
  85.   cout << "Sifra: "; cin>>sifra;
  86.   while(el!=NULL) {
  87.     if(el->sifra==sifra) {
  88.       cout << "Redni broj: " << el->rednibroj << endl;
  89.       cout << "Sifra: " << el->sifra << endl;
  90.       cout << "Ocjena: " << el->ocjena << endl;
  91.       cout << "Napomena: " << el->napomena << endl;
  92.     }
  93.     el=el->sljedeci;
  94.   }
  95. }
  96.  
  97. void najveca_vrijednost_zbroj() {
  98.   autori autor;
  99.   int max=0;
  100.   ifstream dat("datoteka.dat",ios::binary);
  101.   while(dat.read((char*)&autor,sizeof(autor))) {
  102.     if(autor.sifra>max) {
  103.       max=autor.sifra;
  104.     }
  105.   }
  106.   dat.close();
  107.   cout << "Najveca sifra autora: " << max << endl;
  108.   clanci* el = clanciGlava->sljedeci;
  109.   int sum=0;
  110.   while(el!=NULL) {
  111.     sum+=el->sifra;
  112.     el=el->sljedeci;
  113.   }
  114.   cout << "Zbroj sifra iz clanaka: " << sum << endl;
  115. }
  116.  
  117. void elementi_sa_sifrom() {
  118.   int sifra;
  119.   cout << "Sifra: "; cin>>sifra;
  120.   autori autor;
  121.   ifstream dat("datoteka.dat",ios::binary);
  122.   bool pronadeno_autor=false;
  123.   while(dat.read((char*)&autor,sizeof(autor))) {
  124.     if(autor.sifra == sifra) {
  125.       pronadeno_autor=true;
  126.       cout << "Autor------" << endl;
  127.       cout << "Sifra: " << autor.sifra << endl <<
  128.               "Ime: " << autor.ime << endl <<
  129.               "Drzava: " << autor.drzava << endl;
  130.       bool pronadeno_clanak=false;
  131.       clanci* el = clanciGlava->sljedeci;
  132.       while(el!=NULL) {
  133.         if(el->sifra == sifra) {
  134.           pronadeno_clanak=true;
  135.           cout << "Clanak------" << endl;
  136.           cout << "Redni broj: " << el->rednibroj << endl <<
  137.                   "Sifra: " << el->sifra << endl <<
  138.                   "Ocjena: " << el->ocjena << endl <<
  139.                   "Napomena: " << el->napomena << endl;
  140.         }
  141.         el=el->sljedeci;
  142.       }
  143.       if(!pronadeno_clanak)
  144.         cout << "Nema clanaka s tom sifrom." << endl;
  145.      
  146.     }
  147.   }
  148.   if(!pronadeno_autor)
  149.     cout << "Nema autora s tom sifrom. " << endl;
  150. }
  151.  
  152. void ispis_autora_sa_clancima() {
  153.   autori autor;
  154.   ifstream dat("datoteka.dat",ios::binary);
  155.   while(dat.read((char*)&autor,sizeof(autor))) {
  156.     clanci* el = clanciGlava->sljedeci;
  157.     bool clanak_pronaden=false;
  158.     while(el!=NULL) {
  159.       if(el->sifra == autor.sifra) {
  160.         clanak_pronaden=true;
  161.         break;
  162.       }
  163.     }
  164.     if(clanak_pronaden) {
  165.       cout << "Sifra: " << autor.sifra << endl <<
  166.             "Ime: " << autor.ime << endl <<
  167.             "Drzava: " << autor.drzava << endl;
  168.     }
  169.   }
  170. }
  171.  
  172. int main() {
  173.   // ocisti datoteku
  174.   ofstream dat("datoteka.dat");
  175.   dat.close();
  176.   clanciGlava = new clanci;
  177.   int unos;
  178.   do {
  179.     cout << "1. Upis autora" << endl <<
  180.             "2. Ispis autora" << endl <<
  181.             "3. Upis clanka" << endl <<
  182.             "4. Ispis clanka" << endl <<
  183.             "5. Najveca vrijednost sifre iz autora i zbroj sifra clanaka" << endl <<
  184.             "6. Ispisi elemente sa zadanom sifrom" << endl <<
  185.             "7. Ispisi samo autore koji imaju clanke" << endl;
  186.     cin>>unos;
  187.  
  188.     switch(unos) {
  189.       case 1: unos_autora(); break;
  190.       case 2: ispis_autora(); break;
  191.       case 3: upis_clanka(); break;
  192.       case 4: ispis_clanka(); break;
  193.       case 5: najveca_vrijednost_zbroj(); break;
  194.       case 6: elementi_sa_sifrom(); break;
  195.       case 7: ispis_autora_sa_clancima(); break;
  196.     }
  197.   } while(unos!=9);
  198.   return 0;
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement