Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.13 KB | None | 0 0
  1. 2.zadatak prolaze svi testovi (2)
  2. #include <iostream>
  3. #include<cmath>
  4. #include<string>
  5. #include<fstream>
  6. #include<cstring>
  7. #include<algorithm>
  8. class Predmet {
  9. double gustina;
  10. public:
  11. Predmet(double g){
  12. gustina=g;
  13. }
  14. virtual ~Predmet(){}
  15. virtual double DajZapreminu()const=0;
  16. double DajTezinu() const{
  17. return gustina*DajZapreminu();
  18. }
  19. };
  20. class Lopta:public Predmet{
  21. double r;
  22. public:
  23. Lopta(double g, double p): Predmet(g){
  24. r=p;
  25. }
  26. double DajZapreminu()const{
  27. return (r*r*r*16*atan(1))/3;
  28. }
  29. };
  30. class Cigla:public Predmet{
  31. double a,b,c;
  32. public:
  33. Cigla(double g, double a1, double b1, double c1): Predmet(g){
  34. a=a1;
  35. b=b1;
  36. c=c1;
  37. }
  38. double DajZapreminu()const{
  39. return a*b*c;
  40. }
  41. };
  42. bool Kriterij(Predmet *pok1, Predmet *pok2){
  43. if(pok1->DajTezinu()>pok2->DajTezinu()) return true;
  44. return false;
  45. }
  46.  
  47. int main ()
  48. {
  49. std::string ime_dat;
  50. std::cout<<"Unesite ime datoteke: ";
  51. std::getline(std::cin, ime_dat);
  52. std::ifstream ulazni_tok(ime_dat);
  53. if(!ulazni_tok) std::cout<<"Trazena datoteka ne postoji";
  54. int br;
  55. ulazni_tok>>br;
  56. std::cin.ignore(100,'\n');
  57. Predmet **pok;
  58. pok=new Predmet *[br];
  59. for(int i=0; i<br; i++) pok[i]=nullptr;
  60. int kolikoputa=0;
  61. for(int i=0; i<br; i++){
  62.  
  63. char znak, nr, prazno;
  64. double gustina, poluprecnik, a1,b1,c1;
  65. ulazni_tok>>znak;
  66. if(znak=='L'){
  67. char niz[100]; char niz1[100];
  68. ulazni_tok.getline(niz, sizeof niz, ' ');
  69. if(!ulazni_tok) {std::cout << "Neispravan format datoteke"; break;}
  70. std::string s;
  71. for(int p=0; p<strlen(niz); p++) s.push_back(niz[p]);
  72. gustina=std::stod(s);
  73. ulazni_tok.getline(niz1, sizeof niz1, '\n');
  74. if(!ulazni_tok) {std::cout << "Neispravan format datoteke"; break;}
  75. std::string s1;
  76. for(int p=0; p<strlen(niz1); p++) s1.push_back(niz1[p]);
  77. poluprecnik=std::stod(s1);
  78. if(gustina<=0 || poluprecnik<=0) {std::cout << "Neispravan format datoteke"; break;}
  79. pok[i]=new Lopta(gustina, poluprecnik);
  80. }
  81. else if(znak=='C'){
  82. char niz[100]; char niz1[100]; char niz2[100]; char niz3[100]; char niz4[100];
  83. ulazni_tok.getline(niz, sizeof niz, ' ');
  84. if(!ulazni_tok) std::cout << "Neispravan format datoteke";
  85. std::string s;
  86. for(int p=0; p<strlen(niz); p++) s.push_back(niz[p]);
  87. gustina=std::stod(s);
  88. ulazni_tok.getline(niz2, sizeof niz2, ' ');
  89. if(!ulazni_tok) {std::cout << "Neispravan format datoteke"; break;}
  90. std::string s2;
  91. for(int p=0; p<strlen(niz2); p++) s2.push_back(niz2[p]);
  92. a1=std::stod(s2);
  93. ulazni_tok.getline(niz3, sizeof niz3, ' ');
  94. if(!ulazni_tok) {std::cout << "Neispravan format datoteke"; break;}
  95. std::string s3;
  96. for(int p=0; p<strlen(niz3); p++) s3.push_back(niz3[p]);
  97. b1=std::stod(s3);
  98. ulazni_tok.getline(niz4, sizeof niz4, '\n');
  99. if(!ulazni_tok) {std::cout << "Neispravan format datoteke"; break;}
  100. std::string s4;
  101. for(int p=0; p<strlen(niz4); p++) s4.push_back(niz4[p]);
  102. c1=std::stod(s4);
  103. if(gustina<=0 || a1<=0 || b1<=0 || c1<=0) {std::cout << "Neispravan format datoteke"; break;}
  104. pok[i]=new Cigla(gustina, a1,b1,c1);
  105. }
  106. else {
  107. if(ulazni_tok.eof()) std::cout << "Neispravan format datoteke";
  108. else if(ulazni_tok.bad()) std::cout << "Neispravan format datoteke";
  109. else std::cout << "Neispravan format datoteke";
  110. }
  111. kolikoputa++;
  112. }
  113. ulazni_tok.close();
  114. if(br==kolikoputa){
  115. std::sort(pok, pok+br, Kriterij);
  116. for(int i=0; i<br; i++){
  117. std::cout<<pok[i]->DajTezinu()<<std::endl;
  118. }}
  119. for(int i=0; i<br; i++){
  120. delete pok[i];
  121. pok[i]=nullptr;
  122. }
  123. delete [] pok;
  124. return 0;
  125. }
  126. 1.zadatak prolazi 1, 2. ne prolazi ruzan ispis tkd samo to popravi
  127. #include <iostream>
  128. #include<fstream>
  129. #include<vector>
  130. #include<iomanip>
  131. #include<string>
  132. #include<algorithm>
  133. struct Datum {
  134. int dan, mj, god;
  135. };
  136. void Ispisi(Datum dat){
  137. std::cout<<dat.dan<<"/"<<dat.mj<<"/"<<dat.god;
  138. }
  139. struct Student{
  140. char ime_prezime[30];
  141. int index;
  142. Datum dat;
  143. double prosjek;
  144. std::string datum;
  145.  
  146. };
  147. std::string Ustring(Datum dat){
  148. std::string d, m, g;
  149. while(dat.dan!=0){
  150. d.push_back(dat.dan%10+'0');
  151. dat.dan/=10;
  152. }
  153.  
  154. while(dat.mj!=0){
  155. m.push_back(dat.mj%10+'0');
  156. dat.mj/=10;
  157. }
  158.  
  159. while(dat.god!=0){
  160. g.push_back(dat.god%10+'0');
  161. dat.god/=10;
  162. }
  163.  
  164. std::string s; int nula=0;
  165. for(int i=d.size()-1; i>=0; i--){
  166. if(i==d.size()-1 && d[i]==0){
  167. nula=1;
  168. }
  169. if(nula!=1){
  170. s.push_back(d[i]);
  171. }
  172. }
  173. nula=0;
  174. s.push_back('/');
  175. for(int i=m.size()-1; i>=0; i--){
  176. if(i==m.size()-1 && m[i]==0){
  177. nula=1;
  178. }
  179. if(nula!=1){
  180. s.push_back(m[i]);
  181. }
  182. } s.push_back('/'); nula=0;
  183. for(int i=g.size()-1; i>=0; i--){
  184. if(i==g.size()-1 && g[i]==0){
  185. nula=1;
  186. }
  187. if(nula!=1){
  188. s.push_back(g[i]);
  189. }
  190. }
  191. return s;
  192. }
  193. bool Kriterij(Student a, Student b){
  194. if(a.prosjek>b.prosjek) return true;
  195. else return false;
  196. }
  197.  
  198.  
  199. bool PostaviDatum( int dan, int mjesec, int godina) {
  200. int broj_dana[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  201. if((godina % 4 == 0 && godina % 100 != 0) || godina % 400 == 0)
  202. broj_dana[1]++;
  203. if(godina < 1 || mjesec < 1 || mjesec > 12 || dan < 1 || dan > broj_dana[mjesec - 1]) return false ;
  204. return true;
  205. }
  206.  
  207. int main ()
  208. {
  209. std::ifstream ulazni_tok("STUDENTI.TXT");
  210. std::vector<Student> v;
  211. Student s;
  212. char znak;
  213. while(ulazni_tok.getline(s.ime_prezime, sizeof s.ime_prezime)){
  214. ulazni_tok>>s.index;
  215. ulazni_tok>>s.dat.dan>>znak>>s.dat.mj>>znak>>s.dat.god;
  216. int a=PostaviDatum(s.dat.dan, s.dat.mj, s.dat.god);
  217. if(a==0) {std::cout << "Neispravan format datoteke STUDENTI.TXT" << std::endl; break; }
  218. std::string datumm=Ustring(s.dat);
  219. s.datum=datumm;
  220. int broj;
  221. std::vector<int> ocj;
  222.  
  223. int brojocj=0;
  224. for(;;){
  225. ulazni_tok>>broj;
  226.  
  227. ocj.push_back(broj);
  228. if(ulazni_tok.peek()>='A' && ulazni_tok.peek()<='Z') break;
  229. ulazni_tok>>znak;
  230. if(znak!=',' || znak=='\n')break;
  231. if(ulazni_tok.eof()) break;
  232. }
  233. double suma=0;
  234. int prekini=0;
  235. for(int i=0; i<ocj.size(); i++) {
  236. if(ocj[i]>5) {suma=suma+ocj[i]; brojocj++;}
  237. if(ocj[i]<5){prekini=1; std::cout << "Neispravan format datoteke STUDENTI.TXT" << std::endl;}
  238. }
  239. if(prekini==1) break;
  240. s.prosjek=double(suma/brojocj);
  241. ulazni_tok.ignore(10000, '\n');
  242. v.push_back(s);
  243.  
  244. }
  245. std::sort(v.begin(), v.end(), Kriterij);
  246. std::ofstream upisi_u_dat("IZVJESTAJ.TXT");
  247. if(!upisi_u_dat) std::cout<<"Kreiranje datoteke nije uspjelo!\n";
  248. 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";
  249. 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;
  250. for(int i=0; i<v.size(); i++){
  251. 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;
  252. }
  253. upisi_u_dat.close();
  254. return 0;
  255. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement