Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- //using namespace std;
- /*
- uncomment:
- - red 4 (namespace std)
- - red 199
- - red 200
- -
- kak da se podobri koda:
- - uppercase proverka
- - globalna promenliva za masiva ot studenti
- - globalna promenliva za scount (size vyv funkciite)
- */
- struct Student{
- std:: string specialnost;
- std:: string fakNomer;
- std:: string grupa;
- std:: string ime;
- int godinaRajdane;
- double bal;
- std:: string grad;
- };
- // Globalni promenlivi
- Student temp;
- int scount = 5;
- // Dopylnitelni funkcii
- void pylni(Student studenti[], int size);
- void izvStudent(Student studenti[], int nomerSt);
- // Originalni funkcii
- void addStudent(Student studenti[], int size); // B.
- void izvStudenti(Student studenti[], int size); // C.
- void izvejdanePoKriterij(Student studenti[], int size); // D.
- void ascFakNomer(Student studenti[], int size); // E.
- void uprFile(Student studenti[], int size); // F. // b?
- void podmenu(Student studenti[], int size); // G.
- void spravkaStipendiq(Student studenti[], int size); // H. ima za dovyrshvane
- int main()
- {
- char choise;
- Student studenti[150];
- pylni(studenti, scount);
- while(true)
- {
- std::cout << "Izberete funkciq ot doluposochenite" << std::endl;
- std::cout << "Cyknete 1 za addstudent" << std::endl;
- std::cout << "Cyknete 2 za izv vs studenti" << std::endl;
- std::cout << "Cyknete 3 za izv na studenta s naj-visok bal i vs studenti ot grad Varna" << std::endl;
- std::cout << "Cyknete 4 za podrejdane na masiva vyv vyzhodqsht red po fak nomer" << std::endl;
- std::cout << "Cyknete 5 za zapisvane/chetene na studenti v/ot fajl" << std::endl;
- std::cout << "Cyknete x za izhod" << std::endl;
- std::cin >> choise;
- switch(choise)
- {
- case '1':
- addStudent(studenti, scount);
- break;
- case '2':
- izvStudenti(studenti, scount);
- break;
- case '3':
- izvejdanePoKriterij(studenti, scount);
- break;
- case '4':
- ascFakNomer(studenti, scount);
- break;
- case '5':
- uprFile(studenti, scount);
- break;
- case 'x':
- std::cout << "Hubav i usmihnat den :)";
- return 0;
- default:
- std::cout << "Nevaliden izbor!" << std::endl;
- break;
- }
- }
- return 0;
- }
- void pylni(Student studenti[], int size)
- {
- // Student 0
- studenti[0].specialnost = "KST";
- studenti[0].fakNomer = "002";
- studenti[0].grupa = "1a";
- studenti[0].ime = "Kameliq Genova";
- studenti[0].godinaRajdane = 2004;
- studenti[0].bal = 5.54;
- studenti[0].grad = "Burgas";
- // Student 1
- studenti[1].specialnost = "SIT";
- studenti[1].fakNomer = "001";
- studenti[1].grupa = "1a";
- studenti[1].ime = "Georgi Georgiev";
- studenti[1].godinaRajdane = 2004;
- studenti[1].bal = 4.49;
- studenti[1].grad = "Varna";
- // Student 2
- studenti[2].specialnost = "KST";
- studenti[2].fakNomer = "003";
- studenti[2].grupa = "1a";
- studenti[2].ime = "Todor Iliev";
- studenti[2].godinaRajdane = 2003;
- studenti[2].bal = 3.94;
- studenti[2].grad = "Staro Jelezare";
- // Student 3
- studenti[3].specialnost = "SIT";
- studenti[3].fakNomer = "004";
- studenti[3].grupa = "1a";
- studenti[3].ime = "Dimitar Karakolev";
- studenti[3].godinaRajdane = 2002;
- studenti[3].bal = 4.01;
- studenti[3].grad = "Dobrich";
- // Student 4
- studenti[4].specialnost = "KST";
- studenti[4].fakNomer = "005";
- studenti[4].grupa = "1a";
- studenti[4].ime = "Stoqn Todorov";
- studenti[4].godinaRajdane = 2000;
- studenti[4].bal = 5.84;
- studenti[4].grad = "Ruse";
- }
- void izvStudent(Student studenti[], int nomerSt)
- {
- std::cout << "Student nomer " << nomerSt + 1 << std::endl;
- std::cout << "-----------" << std::endl;
- std::cout << "Specialnost: " << studenti[nomerSt].specialnost << std::endl;
- std::cout << "Fakulteten nomer: " << studenti[nomerSt].fakNomer << std::endl;
- std::cout << "Grupa: " << studenti[nomerSt].grupa << std::endl;
- std::cout << "Ime: " << studenti[nomerSt].ime << std::endl;
- std::cout << "Godina na rajdane: " << studenti[nomerSt].godinaRajdane << std::endl;
- std::cout << "Bal s kojto e vlqzal: " << studenti[nomerSt].bal << std::endl;
- std::cout << "Grad: " << studenti[nomerSt].grad << std::endl;
- std::cout << std::endl;
- }
- // B.
- void addStudent(Student studenti[], int size)
- {
- int broj;
- //std::string fNomer;
- //std::string grupa;
- //std::string ime;
- //int godinaRajdane;
- //double bal;
- //std::string grad;
- int nextStudent;
- // Broj vyvedeni studenti
- while(true)
- {
- std::cout << "Vyvedete broq na studentite koito iskate da dobavite: ";
- std::cin >> broj;
- if(broj >= 1 && broj + scount <= 150) break;
- std::cout << "Nevaliden broj studenti! Ne moje da dobavqte po-malko ot edin student ili da nadvishite obshtiq broj na studenti kojto e 150!!" << std::endl;
- }
- scount += broj;
- for(int i = 0; i < broj; i++)
- {
- nextStudent = scount - broj + i;
- // Specialnost
- while(true)
- {
- std::cout << "Vyvedete specialnost na studenta[KST / SIT]: ";
- std::cin >> studenti[nextStudent].specialnost;
- if(studenti[nextStudent].specialnost != "KST" && studenti[nextStudent].specialnost != "SIT")
- std::cout << "Specialnostta moje da e samo KST ili SIT!!!" << std::endl;
- else break;
- }
- // Fak nomer
- while(true)
- {
- std::cout << "Vyvedete fakulteten nomer na studenta: ";
- std::cin >> studenti[nextStudent].fakNomer;
- if(std::size(studenti[nextStudent].fakNomer) != 3)
- std::cout << "Fakultetniqt nomer trqbva da e s razmer ot tri simvola!" << std::endl;
- else break;
- //--- Reshenie za namirane na dublirasht fak nomer?
- //..
- //--
- }
- // Grupa
- while(true)
- {
- std::cout << "Vyvedete grupa na studenta: ";
- std::cin >> studenti[nextStudent].grupa;
- if(std::size(studenti[nextStudent].grupa) != 2) std::cout << "Grupata trqbva da e systavena ot 2 simvola!" << std::endl;
- else
- {
- if(studenti[nextStudent].grupa[0] - '0' < 1 || studenti[nextStudent].grupa[0] - '0' > 9)
- std::cout << "Pyrviq simvol na grupata trqbva da e cifra ot 1 do 9!" << std::endl;
- else if(studenti[nextStudent].grupa[1] - 'a' < 0 || studenti[nextStudent].grupa[1] - 'a' > 'z')
- std::cout << "Vtoriq simvol na grupata trqbva da e bukva!!" << std::endl;
- else break;
- }
- }
- // Ime
- while(true)
- {
- std::cout << "Vyvedete ime na studenta: ";
- //std::cin.ignore(1000, '\n');
- //std::cin.getline(studenti[nextStudent].ime);
- std::cin >> studenti[nextStudent].ime;
- if(studenti[nextStudent].ime.size() >= 2) break;
- std::cout << "Nevalidno ime! Imeto ne moje da e po-malyk ot dva simvola!" << std::endl;
- }
- // Godina Rajdane
- while(true)
- {
- std::cout << "Vyvedete godinata na rajdane na studenta: ";
- std::cin >> studenti[nextStudent].godinaRajdane;
- if(studenti[nextStudent].godinaRajdane >= 1900 && studenti[nextStudent].godinaRajdane <= 2006) break;
- std::cout << "Nevalidna godina na rajdane! Godinata na rajdane moje da e v diapazona ot 1900 do 2006!" << std::endl;
- }
- // Bal
- while(true)
- {
- std::cout << "Vyvedete priemniq bal na studenta: ";
- std::cin >> studenti[nextStudent].bal;
- if(studenti[nextStudent].bal >= 3 && studenti[nextStudent].bal <= 6) break;
- std::cout << "Nevaliden bal! Balyt ne moje da e po-malyk ot 3.00 ili po-golqm ot 6.00!" << std::endl;
- }
- // Grad
- while(true)
- {
- std::cout << "Vyvedete grada na studenta: ";
- std::cin >> studenti[nextStudent].grad;
- if(studenti[nextStudent].grad.size() >= 2) break;
- std::cout << "Nevaliden grad! Gradyt ne moje da e po-malyk ot dva simvola!" << std::endl;
- }
- // Informaciq ot programata
- std::cout << "-------" << std::endl;
- std::cout << "Studentyt e vyveden uspeshno!" << std::endl;
- std::cout << "-------" << std::endl << std::endl;
- }
- }
- void izvStudenti(Student studenti[], int size)
- {
- std::cout << "Spisyk s vsichki studenti" << std::endl;
- std::cout << "/////////////////////////" << std::endl;
- for(int i = 0; i < size; i++)
- {
- std::cout << "Student nomer " << i + 1 << std::endl;
- std::cout << "-----------" << std::endl;
- std::cout << "Specialnost: " << studenti[i].specialnost << std::endl;
- std::cout << "Fakulteten nomer: " << studenti[i].fakNomer << std::endl;
- std::cout << "Grupa: " << studenti[i].grupa << std::endl;
- std::cout << "Ime: " << studenti[i].ime << std::endl;
- std::cout << "Godina na rajdane: " << studenti[i].godinaRajdane << std::endl;
- std::cout << "Bal s kojto e vlqzal: " << studenti[i].bal << std::endl;
- std::cout << "Grad: " << studenti[i].grad << std::endl;
- std::cout << std::endl;
- }
- }
- // D.
- void izvejdanePoKriterij(Student studenti[], int size)
- {
- // Studenta s naj-visok bal
- int maxBalPos = 0;
- for(int i = 0; i < size; i++)
- {
- if(studenti[i].bal > studenti[maxBalPos].bal) maxBalPos = i;
- }
- std::cout << "Studentyt s naj-visok bal:" << std::endl;
- izvStudent(studenti, maxBalPos);
- // Studentite ot grad Varna
- std::cout << "Spisyk sys studentite ot grad Varna:" << std::endl;
- for(int i = 0; i < size; i++)
- {
- if(studenti[i].grad == "Varna") izvStudent(studenti, i);
- }
- }
- // E.
- void ascFakNomer(Student studenti[], int size)
- {
- for(int i = 0; i < size; i++)
- {
- for(int j = i + 1; j < size; j++)
- {
- if(studenti[i].fakNomer > studenti[j].fakNomer)
- {
- temp = studenti[i];
- studenti[i] = studenti[j];
- studenti[j] = temp;
- }
- }
- }
- std::cout << "-------" << std::endl;
- std::cout << "Masiva e podreden po vyzhodqsht red na fak nomer uspeshno!" << std::endl;
- std::cout << "-------" << std::endl << std::endl;
- }
- // F.
- void uprFile(Student studenti[], int size)
- {
- char read;
- int lineCount = 0;
- std::ofstream writeFile("students.txt"); // File za pisane
- std::ifstream readFile("readfile.txt"); // File za chetene
- std::string readFromFile;
- std::cout << "Za zapisvane na studentite vyv fajl napishete 'a'" << std::endl;
- std::cout << "Za vyvejdane na studentite ot fajl napishete 'b'" << std::endl;
- std::cin >> read;
- switch(read)
- {
- case 'a':
- for(int i = 0; i < size; i++)
- {
- writeFile << studenti[i].specialnost << std::endl;
- writeFile << studenti[i].fakNomer << std::endl;
- writeFile << studenti[i].grupa << std::endl;
- writeFile << studenti[i].ime << std::endl;
- writeFile << studenti[i].godinaRajdane << std::endl;
- writeFile << studenti[i].bal << std::endl;
- writeFile << studenti[i].grad << std::endl;
- }
- writeFile.close();
- std::cout << "--------" << std::endl;
- std::cout << "Studentite bqha uspeshno zapisani vyv fajl!" << std::endl;
- std::cout << "--------" << std::endl;
- break;
- case 'b':
- while(std::getline(readFile, readFromFile))
- {
- lineCount++;
- }
- for(int i = 0; i < lineCount / 7; i++)
- {
- //stringToInt = stoi(studenti[i / 7].godinaRajdane);
- for(int j = 0; j < 7; j++)
- {
- switch(j % 7)
- {
- case 0:
- std::getline(readFile, studenti[i + j].specialnost);
- break;
- case 1:
- std::getline(readFile, studenti[i + j].fakNomer);
- break;
- case 2:
- std::getline(readFile, studenti[i + j].grupa);
- break;
- case 3:
- std::getline(readFile, studenti[i + j].ime);
- break;
- case 4:
- //std::getline(readFile, stoi(studenti[i / 7].godinaRajdane));
- studenti[i + j].godinaRajdane = 2004;
- break;
- case 5:
- //getline(readFile, studenti[i / 7].bal);
- studenti[i + j].bal = 5.69;
- break;
- case 6:
- std::getline(readFile, studenti[i + j].grad);
- break;
- }
- }
- }
- readFile.close();
- std::cout << "--------" << std::endl;
- std::cout << "Studentite bqha procheteni uspeshno!" << std::endl;
- std::cout << "--------" << std::endl;
- break;
- default:
- std::cout << "Nevaliden input!!";
- break;
- }
- }
- // G.
- void podmenu(Student studenti[], int size)
- {
- char read;
- std::string input;
- std::string input2;
- bool imaStudenti = false; // Promenliva za zasichane dali ima studenti po zadaden kriterij
- std::cout << "Vyvedete 'a' za izvejdane na studenti ot dadena grupa podredeni nizhodqshto po bal ot priema" << std::endl;
- std::cout << "Vyvedete 'b' za izvejdane na studenti po specialnost i grupa" << std::endl;
- std::cin >> read;
- switch(read)
- {
- case 'a':
- // Vyvejdane na grupa
- std::cout << "Vyvedete grupa: ";
- std::cin >> input;
- // Podrejdane na studentite nizhodqshto po bal
- for(int i = 0; i < size; i++)
- {
- for(int j = i + 1; j < size; j++)
- {
- if(studenti[i].bal > studenti[j].bal)
- {
- temp = studenti[i];
- studenti[i] = studenti[j];
- studenti[j] = temp;
- }
- }
- }
- // Izvejdane na studentite ot vyvedenata grupa
- for(int i = 0; i < size; i++)
- {
- if(studenti[i].grupa == input)
- {
- izvStudent(studenti, i);
- imaStudenti = true;
- }
- }
- // Ako nqma studenti ot tazi grupa
- if(!imaStudenti) std::cout << "Nqma studenti ot tazi grupa!" << std::endl;
- break;
- case 'b':
- // Vyvejdane specialnost
- while(input != "KST" && input != "SIT")
- {
- std::cout << "Vyvedete specialnost[KST/SIT]: ";
- std::cin >> input;
- if(input != "KST" && input != "SIT")
- std::cout << "Specialnostta moje da e samo KST ili SIT!" << std::endl;
- else break;
- }
- // Vyvejdane grupa
- std::cout << "Vyvedete grupa: ";
- std::cin >> input2;
- // Izvejdane na studentite ot tazi specialnost i grupa
- for(int i = 0; i < size; i++)
- {
- if(studenti[i].specialnost == input && studenti[i].grupa == input2)
- {
- izvStudent(studenti, i);
- imaStudenti = true;
- }
- }
- // Ako nqma studenti ot tazi specialnost
- if(!imaStudenti) std::cout << "Nqma studenti ot tazi grupa!" << std::endl;
- break;
- default:
- // Pri input razlichen ot 'a' ili 'b'
- std::cout << "Nevaliden input!!" << std::endl;
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement