fdgdfgdfg
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

fdgdfgdfg

on

  • 322 views

dfgdfg

dfgdfg

Statistics

Views

Total Views
322
Views on SlideShare
322
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

fdgdfgdfg Document Transcript

  • 1. D:Asenmainmain.cpp 25 Ìàé 2008 ã. 13:00 #include <iostream> #include <string> using namespace std; /********************************* * class Student *********************************/ class Student{ private: int number; string name; string pName; double uspeh; double dohod; public: Student(){ number=0; name=""; pName=""; uspeh=0; dohod=0; } Student( Student & s); // задава стойности на променливите void init(int number,string name,double uspeh,double dohod){ this->number=number; this->name=name; this->uspeh=uspeh; this->dohod=dohod; this->pName=properName(); // Тъй като списъка на ученици може да бъде // извеждан повече от веднъж, съхраняваме // крадкия запис на името, като за сметка // на малко повече памет, спестяваме // повторна обработка на имената } string properName(); string getProperName(){ return this->pName; }; string getName(){ return this->name; }; int getNumber(){ return this->number; } double getUspeh(){ return this->uspeh; } double getDohod(){ return this->dohod; } }; -1-
  • 2. D:Asenmainmain.cpp 25 Ìàé 2008 ã. 13:00 Student::Student( Student & s){ number=s.getNumber(); name=s.getName(); uspeh=s.getUspeh(); dohod=s.getDohod(); pName=s.getProperName(); } // Тази функция взима променливата съдържаща пълните имена // и отдеря от тях фамилията и инициалите string Student::properName(){ char fname=name[0]; //Първата буква от първото име char pname=name[(name.find(" ")+1)]; //Първата буква от презимето int l=name.length(); //Взимаме дължината на името // Намираме частта на името, след първият интервал, // където ще тръсим фамилията string temp=name.substr((name.find(" ")+2),(l-1)); temp=temp.substr((temp.find(" ")),(l-1)); return temp+" "+fname+"."+pname+"."; } /********************************* * class Students *********************************/ class Students{ private: int numStudents; // Брой на студентите Student * studentsArray; // Масив с всички ученици public: Students(int n=0){ numStudents=n; studentsArray=0; if(n > 0) this->init(); } ~Students(){ delete [] studentsArray; } void init(); void inputStudent(int i); const void printStudents(); void sort(); void printStipendii(double,double); }; -2-
  • 3. D:Asenmainmain.cpp 25 Ìàé 2008 ã. 13:00 // Създава масива с учениците, и извиква // функция за въвеждане на информацията за всеки един void Students::init(){ if(numStudents > 0){ studentsArray=new Student[numStudents]; for(int i=0;i<numStudents;i++) this->inputStudent(i); } } // Въвежда информация от клавиатурата за всеки ученик void Students::inputStudent(int i){ int number; char name[51]; double uspeh; double dohod; cout << "n----------------nnStudent: " << (i+1) << "nn"; cout << "Nomer: "; cin >> number; bool validname=true; do{ if(!validname) cout<<"*** Vuvedete imeto vuv format Ime Brezime Familiq ***n"; cout << "Imena: "; cin.ignore(); cin.getline(name,50); // Проверяваме дали в името има поне два интервала string testname=name; int tfind=testname.find(" "); if(tfind > 0 && tfind < 51){ int l=testname.length(); string temp=testname.substr((testname.find(" ")+2),(l-1)); tfind=temp.find(" "); if(tfind > 0 && tfind < 51) validname=true; else validname=false; } else validname=false; // край на проверката }while(!validname); do{ cout<<"Sreden uspeh [3.00 - 6.00]: "; cin >> uspeh; }while(uspeh<3 || uspeh>6); do{ cout<<"Sreden dohod na 4len ot semeistvoto [1.00 - 999.99]: "; cin >> dohod; -3-
  • 4. D:Asenmainmain.cpp 25 Ìàé 2008 ã. 13:00 }while(dohod<1 || dohod>999.99); cout << "n----------------nn"; studentsArray[i].init(number,name,uspeh,dohod); } // Изкарва списък на всички ученици const void Students::printStudents(){ cout<<"nSpisuk:nn"; for(int i=0;i<numStudents;i++){ cout<<studentsArray[i].getNumber()<<"t" <<studentsArray[i].getProperName()<<"t" <<studentsArray[i].getUspeh()<<"t" <<studentsArray[i].getDohod()<<"n"; } } // Сортира учениците по критериите в условието void Students::sort(){ Student temp; for(int i=0;i<numStudents;i++) for(int j=(i+1);j<numStudents;j++){ if( (studentsArray[i].getUspeh() < studentsArray[j].getUspeh()) || (studentsArray[i].getUspeh() == studentsArray[j].getUspeh() && (studentsArray[i].getDohod() > studentsArray[j].getDohod() || (studentsArray[i].getDohod() == studentsArray[j].getDohod() && studentsArray[i].getNumber() > studentsArray[j].getNumber() ) ) ) ){ temp=studentsArray[i]; studentsArray[i]=studentsArray[j]; studentsArray[j]=temp; } } } void Students::printStipendii(double M, double K){ for(int i=0;i<numStudents;i++){ -4-
  • 5. D:Asenmainmain.cpp 25 Ìàé 2008 ã. 13:00 // Първото поле е стипендията cout << (studentsArray[i].getUspeh() >= 5.50 ? 100 : (((studentsArray[i].getUspeh() >= M && studentsArray[i].getDohod() < K)?60:0 )))<<"t" <<studentsArray[i].getNumber()<<"t" <<studentsArray[i].getProperName()<<"t" <<studentsArray[i].getUspeh()<<"t" <<studentsArray[i].getDohod()<<"n"; } } /********************************* * функция main() *********************************/ int main(){ int numStudents=0; do{ cout<<"Broi na u4enicite [10 - 500]: "; cin >> numStudents; }while(numStudents<10 || numStudents>500); Students s(numStudents); cout<<endl; s.printStudents(); cout<<"nSortirane...n"; s.sort(); cout<<"nKlasirane:"; s.printStudents(); double M,K; cout<<endl; do{ cout<<"Vuvedete M [3.00 - 5.49]: "; cin >> M; }while(M<3 || M>5.49); do{ cout<<"Vuvedete K [1.00 - 999.99]: "; cin >> K; }while(K<1 || K>999.99); cout<<endl; s.printStipendii(M,K); cout<<endl<<endl; -5-
  • 6. D:Asenmainmain.cpp 25 Ìàé 2008 ã. 13:00 cout<<"Bye!nnPress any key to exit."; system("pause >nul"); return 0; } -6-