Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- class autori {
- public:
- int sifra;
- char
- ime[25],
- drzava[25];
- };
- class clanci {
- public:
- int
- rednibroj,
- sifra,
- ocjena;
- char napomena[25];
- clanci* sljedeci;
- clanci() {
- sljedeci=NULL;
- }
- };
- clanci* clanciGlava;
- void unos_autora () {
- autori autor;
- do {
- cout << "Sifra: "; cin>>autor.sifra;
- }
- while(!(autor.sifra >= 100 && autor.sifra <= 999));
- cout << "Ime: "; cin>>autor.ime;
- cout << "Drzava: "; cin>>autor.drzava;
- ofstream dat("datoteka.dat", ios::binary | ios::app);
- dat.write((char*)&autor,sizeof(autor));
- dat.close();
- }
- void ispis_autora() {
- autori autor;
- ifstream dat("datoteka.dat", ios::binary);
- while(dat.read((char*)&autor,sizeof(autor))) {
- cout << "Sifra: " << autor.sifra << endl <<
- "Ime: " << autor.ime << endl <<
- "Drzava: " << autor.drzava << endl;
- }
- dat.close();
- }
- clanci* clanciZadnji_element() {
- clanci* el = clanciGlava;
- while(el->sljedeci != NULL) {
- el=el->sljedeci;
- }
- return el;
- }
- void upis_clanka() {
- clanci* clanak = new clanci;
- bool sifra_nadena = false;
- do {
- cout << "Sifra: "; cin>>clanak->sifra;
- autori autor;
- ifstream dat("datoteka.dat", ios::binary);
- while(dat.read((char*)&autor,sizeof(autor))) {
- if(autor.sifra == clanak->sifra)
- sifra_nadena=true;
- }
- dat.close();
- } while(sifra_nadena == false);
- cout << "Redni broj: "; cin>>clanak->rednibroj;
- cout << "Ocjena: "; cin>>clanak->ocjena;
- cout << "Napomena: "; cin>>clanak->napomena;
- clanci* zadnji = clanciZadnji_element();
- zadnji->sljedeci = clanak;
- }
- void ispis_clanka() {
- clanci* el = clanciGlava->sljedeci;
- int sifra;
- cout << "Sifra: "; cin>>sifra;
- while(el!=NULL) {
- if(el->sifra==sifra) {
- cout << "Redni broj: " << el->rednibroj << endl;
- cout << "Sifra: " << el->sifra << endl;
- cout << "Ocjena: " << el->ocjena << endl;
- cout << "Napomena: " << el->napomena << endl;
- }
- el=el->sljedeci;
- }
- }
- void najveca_vrijednost_zbroj() {
- autori autor;
- int max=0;
- ifstream dat("datoteka.dat",ios::binary);
- while(dat.read((char*)&autor,sizeof(autor))) {
- if(autor.sifra>max) {
- max=autor.sifra;
- }
- }
- dat.close();
- cout << "Najveca sifra autora: " << max << endl;
- clanci* el = clanciGlava->sljedeci;
- int sum=0;
- while(el!=NULL) {
- sum+=el->sifra;
- el=el->sljedeci;
- }
- cout << "Zbroj sifra iz clanaka: " << sum << endl;
- }
- void elementi_sa_sifrom() {
- int sifra;
- cout << "Sifra: "; cin>>sifra;
- autori autor;
- ifstream dat("datoteka.dat",ios::binary);
- bool pronadeno_autor=false;
- while(dat.read((char*)&autor,sizeof(autor))) {
- if(autor.sifra == sifra) {
- pronadeno_autor=true;
- cout << "Autor------" << endl;
- cout << "Sifra: " << autor.sifra << endl <<
- "Ime: " << autor.ime << endl <<
- "Drzava: " << autor.drzava << endl;
- bool pronadeno_clanak=false;
- clanci* el = clanciGlava->sljedeci;
- while(el!=NULL) {
- if(el->sifra == sifra) {
- pronadeno_clanak=true;
- cout << "Clanak------" << endl;
- cout << "Redni broj: " << el->rednibroj << endl <<
- "Sifra: " << el->sifra << endl <<
- "Ocjena: " << el->ocjena << endl <<
- "Napomena: " << el->napomena << endl;
- }
- el=el->sljedeci;
- }
- if(!pronadeno_clanak)
- cout << "Nema clanaka s tom sifrom." << endl;
- }
- }
- if(!pronadeno_autor)
- cout << "Nema autora s tom sifrom. " << endl;
- }
- void ispis_autora_sa_clancima() {
- autori autor;
- ifstream dat("datoteka.dat",ios::binary);
- while(dat.read((char*)&autor,sizeof(autor))) {
- clanci* el = clanciGlava->sljedeci;
- bool clanak_pronaden=false;
- while(el!=NULL) {
- if(el->sifra == autor.sifra) {
- clanak_pronaden=true;
- break;
- }
- }
- if(clanak_pronaden) {
- cout << "Sifra: " << autor.sifra << endl <<
- "Ime: " << autor.ime << endl <<
- "Drzava: " << autor.drzava << endl;
- }
- }
- }
- int main() {
- // ocisti datoteku
- ofstream dat("datoteka.dat");
- dat.close();
- clanciGlava = new clanci;
- int unos;
- do {
- cout << "1. Upis autora" << endl <<
- "2. Ispis autora" << endl <<
- "3. Upis clanka" << endl <<
- "4. Ispis clanka" << endl <<
- "5. Najveca vrijednost sifre iz autora i zbroj sifra clanaka" << endl <<
- "6. Ispisi elemente sa zadanom sifrom" << endl <<
- "7. Ispisi samo autore koji imaju clanke" << endl;
- cin>>unos;
- switch(unos) {
- case 1: unos_autora(); break;
- case 2: ispis_autora(); break;
- case 3: upis_clanka(); break;
- case 4: ispis_clanka(); break;
- case 5: najveca_vrijednost_zbroj(); break;
- case 6: elementi_sa_sifrom(); break;
- case 7: ispis_autora_sa_clancima(); break;
- }
- } while(unos!=9);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement