Advertisement
Guest User

Untitled

a guest
Jan 20th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.30 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <iomanip>
  5. #include <stdio.h>
  6. #include <cstdlib>
  7. #define MAX 100
  8. using namespace std;
  9. struct zapis
  10. {
  11. int sifra;
  12. string opis;
  13. float edinecnacena;
  14. int vleznakolicina;
  15. int izleznakolicina;
  16. float danocnastapka;
  17. float iznos;
  18. int datum;
  19. };
  20. bool proveridata(int data)
  21. {
  22. int year=data/10000;
  23. int month=(data/100)%100;
  24. int day=data%100;
  25.  
  26. if(day < 1 || day > 31)
  27. return false;
  28. else
  29. if(month < 1 || month > 12)
  30. return false;
  31.  
  32.  
  33. if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31)
  34. return false;
  35. else if ((month == 2) && (year % 4 == 0) && day > 29)
  36. return false;
  37.  
  38. else if ((month == 2) && (year % 4 != 0) && day > 28)
  39. return false;
  40. return true;
  41. }
  42. void vlez(struct zapis artikal[], int i)
  43. {
  44. do
  45. {
  46. cout<<"Vnesi sifra na artikal :";
  47. cin>>artikal[i].sifra;
  48. if(artikal[i].sifra<1 || artikal[i].sifra>99999)
  49. cout<<"Vnesovte nevalidna sifra"<<endl;
  50. }while(artikal[i].sifra<1 || artikal[i].sifra>99999);
  51.  
  52. do
  53. {
  54. cout<<"Vnesete opis na artikal (Vnesete . za kraj) ";
  55. getline(cin,artikal[i].opis,'.');
  56. if(artikal[i].opis.size()>30)
  57. cout<<"Vnesovte opis podolg od 30 karakteri"<<endl;;
  58. }while(artikal[i].opis.size()>30);
  59.  
  60. cout<<"Vnesi edinecna cena ";
  61. cin>>artikal[i].edinecnacena;
  62.  
  63. do
  64. {
  65. cout<<"Vnesi vlezna kolicina na artikal :";
  66. cin>>artikal[i].vleznakolicina;
  67. if(artikal[i].vleznakolicina<0 || artikal[i].vleznakolicina>99999)
  68. cout<<"Vnesovte nevalidna kolicina"<<endl;
  69. }while(artikal[i].vleznakolicina<0 || artikal[i].vleznakolicina>99999);
  70.  
  71. artikal[i].izleznakolicina=0;
  72. artikal[i].danocnastapka=0;
  73. do
  74. {
  75. cout<<"Vnesi datum vo format GGMMDD :";
  76. cin>>artikal[i].datum;
  77. if(!proveridata(artikal[i].datum))
  78. cout<<"Nevaliden datum ";
  79. }while(!proveridata(artikal[i].datum));
  80.  
  81. }
  82. void izlez(struct zapis artikal[], int i)
  83. {
  84. do
  85. {
  86. cout<<"Vnesi sifra na artikal :";
  87. cin>>artikal[i].sifra;
  88. if(artikal[i].sifra<1 || artikal[i].sifra>99999)
  89. cout<<"Vnesovte nevalidna sifra"<<endl;
  90. }while(artikal[i].sifra<1 || artikal[i].sifra>99999);
  91.  
  92. do
  93. {
  94. cout<<"Vnesete opis na artikal (Vnesete . za kraj) ";
  95. getline(cin,artikal[i].opis,'.');
  96. if(artikal[i].opis.size()>30)
  97. cout<<"Vnesovte opis podolg od 30 karakteri"<<endl;;
  98. }while(artikal[i].opis.size()>30);
  99.  
  100. cout<<"Vnesi edinecna cena ";
  101. cin>>artikal[i].edinecnacena;
  102.  
  103. artikal[i].vleznakolicina=0;
  104.  
  105. do
  106. {
  107. cout<<"Vnesi izlezna kolicina na artikal :";
  108. cin>>artikal[i].izleznakolicina;
  109. if(artikal[i].izleznakolicina<1 || artikal[i].izleznakolicina>99999)
  110. cout<<"Vnesovte nevalidna kolicina"<<endl;
  111. }while(artikal[i].izleznakolicina<1 || artikal[i].izleznakolicina>99999);
  112.  
  113. cout<<"Vnesi danocna stapka :";
  114. cin>>artikal[i].danocnastapka;
  115. do
  116. {
  117. cout<<"Vnesi datum vo format GGMMDD :";
  118. cin>>artikal[i].datum;
  119. if(!proveridata(artikal[i].datum))
  120. cout<<"Nevaliden datum ";
  121. }while(!proveridata(artikal[i].datum));
  122. }
  123.  
  124. int main ()
  125. {
  126. struct zapis artikal[MAX];
  127. int n,stavka;
  128. cout<<"Vnesete broj na artikli "<<endl;
  129. cin>>n;
  130. for (int i=0;i<n;i++)
  131. {
  132. cout<<"Vnesete 1 za vlez ili 2 za izlez :";
  133. cin>>stavka;
  134. if(stavka==1)
  135. {
  136. vlez(artikal,i);
  137. artikal[i].iznos=artikal[i].vleznakolicina*artikal[i].edinecnacena;}
  138. else
  139. if(stavka==2)
  140. {
  141. izlez(artikal,i);
  142. artikal[i].iznos=(artikal[i].edinecnacena-(artikal[i].edinecnacena*artikal[i].danocnastapka)/100)*artikal[i].izleznakolicina;}
  143. }
  144. ofstream out;
  145. out.open("vnos.dat");
  146. for(int i=0;i<n;i++)
  147. {
  148. out<<setw(5)<<artikal[i].sifra<<" ";
  149. out<<setw(30)<<artikal[i].opis<<" ";
  150. out<<fixed<<setw(12)<<setprecision(2)<<artikal[i].edinecnacena<<" ";
  151. out<<setw(6)<<artikal[i].vleznakolicina<<" ";
  152. out<<setw(6)<<artikal[i].izleznakolicina<<" ";
  153. out<<fixed<<setw(10)<<setprecision(2)<<artikal[i].danocnastapka<<" ";
  154. out<<fixed<<setw(15)<<setprecision(2)<<artikal[i].iznos<<" ";
  155. if(artikal[i].datum<1000)
  156. out<<setw(6)<<"000"<<artikal[i].datum<<" ";
  157. else
  158. if(artikal[i].datum<10000)
  159. out<<setw(6)<<"00"<<artikal[i].datum<<" ";
  160. else if(artikal[i].datum<100000)
  161. out<<setw(6)<<"0"<<artikal[i].datum<<" ";
  162. else out<<setw(6)<<artikal[i].datum<<" ";
  163. out<<endl;
  164. }
  165. out.close();
  166. return 0;
  167. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement