Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 2.zadatak prolaze svi testovi (2)
- #include <iostream>
- #include<cmath>
- #include<string>
- #include<fstream>
- #include<cstring>
- #include<algorithm>
- class Predmet {
- double gustina;
- public:
- Predmet(double g){
- gustina=g;
- }
- virtual ~Predmet(){}
- virtual double DajZapreminu()const=0;
- double DajTezinu() const{
- return gustina*DajZapreminu();
- }
- };
- class Lopta:public Predmet{
- double r;
- public:
- Lopta(double g, double p): Predmet(g){
- r=p;
- }
- double DajZapreminu()const{
- return (r*r*r*16*atan(1))/3;
- }
- };
- class Cigla:public Predmet{
- double a,b,c;
- public:
- Cigla(double g, double a1, double b1, double c1): Predmet(g){
- a=a1;
- b=b1;
- c=c1;
- }
- double DajZapreminu()const{
- return a*b*c;
- }
- };
- bool Kriterij(Predmet *pok1, Predmet *pok2){
- if(pok1->DajTezinu()>pok2->DajTezinu()) return true;
- return false;
- }
- int main ()
- {
- std::string ime_dat;
- std::cout<<"Unesite ime datoteke: ";
- std::getline(std::cin, ime_dat);
- std::ifstream ulazni_tok(ime_dat);
- if(!ulazni_tok) std::cout<<"Trazena datoteka ne postoji";
- int br;
- ulazni_tok>>br;
- std::cin.ignore(100,'\n');
- Predmet **pok;
- pok=new Predmet *[br];
- for(int i=0; i<br; i++) pok[i]=nullptr;
- int kolikoputa=0;
- for(int i=0; i<br; i++){
- char znak, nr, prazno;
- double gustina, poluprecnik, a1,b1,c1;
- ulazni_tok>>znak;
- if(znak=='L'){
- char niz[100]; char niz1[100];
- ulazni_tok.getline(niz, sizeof niz, ' ');
- if(!ulazni_tok) {std::cout << "Neispravan format datoteke"; break;}
- std::string s;
- for(int p=0; p<strlen(niz); p++) s.push_back(niz[p]);
- gustina=std::stod(s);
- ulazni_tok.getline(niz1, sizeof niz1, '\n');
- if(!ulazni_tok) {std::cout << "Neispravan format datoteke"; break;}
- std::string s1;
- for(int p=0; p<strlen(niz1); p++) s1.push_back(niz1[p]);
- poluprecnik=std::stod(s1);
- if(gustina<=0 || poluprecnik<=0) {std::cout << "Neispravan format datoteke"; break;}
- pok[i]=new Lopta(gustina, poluprecnik);
- }
- else if(znak=='C'){
- char niz[100]; char niz1[100]; char niz2[100]; char niz3[100]; char niz4[100];
- ulazni_tok.getline(niz, sizeof niz, ' ');
- if(!ulazni_tok) std::cout << "Neispravan format datoteke";
- std::string s;
- for(int p=0; p<strlen(niz); p++) s.push_back(niz[p]);
- gustina=std::stod(s);
- ulazni_tok.getline(niz2, sizeof niz2, ' ');
- if(!ulazni_tok) {std::cout << "Neispravan format datoteke"; break;}
- std::string s2;
- for(int p=0; p<strlen(niz2); p++) s2.push_back(niz2[p]);
- a1=std::stod(s2);
- ulazni_tok.getline(niz3, sizeof niz3, ' ');
- if(!ulazni_tok) {std::cout << "Neispravan format datoteke"; break;}
- std::string s3;
- for(int p=0; p<strlen(niz3); p++) s3.push_back(niz3[p]);
- b1=std::stod(s3);
- ulazni_tok.getline(niz4, sizeof niz4, '\n');
- if(!ulazni_tok) {std::cout << "Neispravan format datoteke"; break;}
- std::string s4;
- for(int p=0; p<strlen(niz4); p++) s4.push_back(niz4[p]);
- c1=std::stod(s4);
- if(gustina<=0 || a1<=0 || b1<=0 || c1<=0) {std::cout << "Neispravan format datoteke"; break;}
- pok[i]=new Cigla(gustina, a1,b1,c1);
- }
- else {
- if(ulazni_tok.eof()) std::cout << "Neispravan format datoteke";
- else if(ulazni_tok.bad()) std::cout << "Neispravan format datoteke";
- else std::cout << "Neispravan format datoteke";
- }
- kolikoputa++;
- }
- ulazni_tok.close();
- if(br==kolikoputa){
- std::sort(pok, pok+br, Kriterij);
- for(int i=0; i<br; i++){
- std::cout<<pok[i]->DajTezinu()<<std::endl;
- }}
- for(int i=0; i<br; i++){
- delete pok[i];
- pok[i]=nullptr;
- }
- delete [] pok;
- return 0;
- }
- 1.zadatak prolazi 1, 2. ne prolazi ruzan ispis tkd samo to popravi
- #include <iostream>
- #include<fstream>
- #include<vector>
- #include<iomanip>
- #include<string>
- #include<algorithm>
- struct Datum {
- int dan, mj, god;
- };
- void Ispisi(Datum dat){
- std::cout<<dat.dan<<"/"<<dat.mj<<"/"<<dat.god;
- }
- struct Student{
- char ime_prezime[30];
- int index;
- Datum dat;
- double prosjek;
- std::string datum;
- };
- std::string Ustring(Datum dat){
- std::string d, m, g;
- while(dat.dan!=0){
- d.push_back(dat.dan%10+'0');
- dat.dan/=10;
- }
- while(dat.mj!=0){
- m.push_back(dat.mj%10+'0');
- dat.mj/=10;
- }
- while(dat.god!=0){
- g.push_back(dat.god%10+'0');
- dat.god/=10;
- }
- std::string s; int nula=0;
- for(int i=d.size()-1; i>=0; i--){
- if(i==d.size()-1 && d[i]==0){
- nula=1;
- }
- if(nula!=1){
- s.push_back(d[i]);
- }
- }
- nula=0;
- s.push_back('/');
- for(int i=m.size()-1; i>=0; i--){
- if(i==m.size()-1 && m[i]==0){
- nula=1;
- }
- if(nula!=1){
- s.push_back(m[i]);
- }
- } s.push_back('/'); nula=0;
- for(int i=g.size()-1; i>=0; i--){
- if(i==g.size()-1 && g[i]==0){
- nula=1;
- }
- if(nula!=1){
- s.push_back(g[i]);
- }
- }
- return s;
- }
- bool Kriterij(Student a, Student b){
- if(a.prosjek>b.prosjek) return true;
- else return false;
- }
- bool PostaviDatum( int dan, int mjesec, int godina) {
- int broj_dana[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
- if((godina % 4 == 0 && godina % 100 != 0) || godina % 400 == 0)
- broj_dana[1]++;
- if(godina < 1 || mjesec < 1 || mjesec > 12 || dan < 1 || dan > broj_dana[mjesec - 1]) return false ;
- return true;
- }
- int main ()
- {
- std::ifstream ulazni_tok("STUDENTI.TXT");
- std::vector<Student> v;
- Student s;
- char znak;
- while(ulazni_tok.getline(s.ime_prezime, sizeof s.ime_prezime)){
- ulazni_tok>>s.index;
- ulazni_tok>>s.dat.dan>>znak>>s.dat.mj>>znak>>s.dat.god;
- int a=PostaviDatum(s.dat.dan, s.dat.mj, s.dat.god);
- if(a==0) {std::cout << "Neispravan format datoteke STUDENTI.TXT" << std::endl; break; }
- std::string datumm=Ustring(s.dat);
- s.datum=datumm;
- int broj;
- std::vector<int> ocj;
- int brojocj=0;
- for(;;){
- ulazni_tok>>broj;
- ocj.push_back(broj);
- if(ulazni_tok.peek()>='A' && ulazni_tok.peek()<='Z') break;
- ulazni_tok>>znak;
- if(znak!=',' || znak=='\n')break;
- if(ulazni_tok.eof()) break;
- }
- double suma=0;
- int prekini=0;
- for(int i=0; i<ocj.size(); i++) {
- if(ocj[i]>5) {suma=suma+ocj[i]; brojocj++;}
- if(ocj[i]<5){prekini=1; std::cout << "Neispravan format datoteke STUDENTI.TXT" << std::endl;}
- }
- if(prekini==1) break;
- s.prosjek=double(suma/brojocj);
- ulazni_tok.ignore(10000, '\n');
- v.push_back(s);
- }
- std::sort(v.begin(), v.end(), Kriterij);
- std::ofstream upisi_u_dat("IZVJESTAJ.TXT");
- if(!upisi_u_dat) std::cout<<"Kreiranje datoteke nije uspjelo!\n";
- upisi_u_dat<<std::setw(30)<<std::left<<"Student"<<std::setw(10)<<std::left<<"Indeks"<<std::setw(20)<<std::left<<"Datum rodjenja"<<std::setw(10)<<std::left<<"Prosjek";
- upisi_u_dat<<std::endl<<std::setw(30)<<std::left<<"-------"<<std::setw(10)<<std::left<<"------"<<std::setw(20)<<std::left<<"--------------"<<std::setw(10)<<std::left<<"-------"<<std::endl;
- for(int i=0; i<v.size(); i++){
- upisi_u_dat<<std::setw(30)<<std::left<<v[i].ime_prezime<<std::setw(10)<<std::left<<v[i].index<<std::setw(20)<<std::left<<v[i].datum<<std::setw(10)<<std::left<<std::setprecision(2)<<std::fixed<<v[i].prosjek<<std::endl;
- }
- upisi_u_dat.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement