Guest User

Untitled

a guest
Feb 18th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.76 KB | None | 0 0
  1. //L4-8:
  2. //Duota informacija apie studentus: vardas, pavardė, akademinė grupė.
  3. //Studentų skaičius iš anksto nežinomas.
  4. // Duota informacija apie individualius studijų planus: plano kodas, studento vardas, pavardė, dalykas, įvertinimas.
  5. // Planų skaičius iš anksto nežinomas.
  6. // Plano kodas gali kartotis skirtingiems dalykams.
  7. //Atspausdinti nurodyto studento individualų planą ir visus jo dalykus.
  8. //Paskaičiuoti šiam studentui stipendiją, jei bazinė stipendija yra 300 Lt,  ją gali gauti tik pažangūs studentai.
  9. // Jei sesijos vidurkis >= 8, stipendija didinama 25 proc., jei >= 9, didinama 50 proc.
  10.  
  11. //S: Kokie dar studentai yra pasirinkę tokius pat dalykus? Atspausdinti visą informaciją apie šiuos studentus dalykais.
  12.  
  13.  
  14.  
  15. //***************************************************************************************************************************************************
  16. #include <iostream>
  17. #include <string>
  18. #include<fstream>
  19. #include<sstream>
  20. #include <iomanip>
  21. #include <stdio.h> // naudosiu ištrinti failui
  22.  
  23.  
  24.  
  25. using namespace std;
  26.  
  27. //***************************************************************************************************************************************************
  28.  
  29. int stipendija (string vards, string pavard, double vid);
  30. //***************************************************************************************************************************************************
  31.  
  32.  
  33.  
  34. class studentai{
  35.  
  36. public:
  37. // studento vardas, pavarde, grupe, vieta masyve
  38. void detiduom(string vard, string pavard, string grup,int i);
  39.  
  40. void detistuddalyk(string dal,int i);
  41. void detistipendija(int stip, int i);
  42. void detiSLuzd(string sl, int i);
  43.  
  44. //---------------------------------------------------------------------------------------------------------------------------------------------------
  45.  
  46. string imtiduom(int i);
  47. string imtistuddalyk(int i);
  48. int imtistipendija(int i);
  49. string imtiSLuzd(int i);
  50.  
  51.  
  52.  
  53. //---------------------------------------------------------------------------------------------------------------------------------------------------
  54. //---------------------------------------------------------------------------------------------------------------------------------------------------
  55. private:
  56.  
  57. string studdalykai[100];
  58. int stipendijos[100];
  59. string suzd[1000];
  60. string vardas[100],pavarde[100],grupe[100];
  61.  
  62. };
  63.  
  64.  
  65. //***************************************************************************************************************************************************
  66.  
  67. int main()
  68. {
  69.  
  70. // duomenu nuskaitymas is failo
  71. string vardas[100], pavarde[100], grupe[100];
  72.  
  73. // sukuriam objekta duomenims paimti
  74. ifstream duom1;
  75.  duom1.open("duomenys_apie_studentus.txt");
  76.  
  77.  
  78. int n,i;
  79. i=0;
  80. n=0;
  81. // nuskaitom varda pavarde ir grupe
  82.  
  83. cout << "informacija apie studentus"<<endl;
  84. while(duom1 >> vardas[i] >>pavarde[i]>> grupe[i]){
  85.      n++;
  86.      cout <<vardas[i] <<" "<<pavarde[i]<<" "<< grupe[i]<<endl;
  87.      i++;
  88.  
  89.  };
  90.  
  91. duom1.close();
  92.  
  93.  ifstream duom2;
  94.  duom2.open("duomenys_apie_planus.txt");
  95.  
  96. //---------------------------------------------------------------------------------------------------------------------------------------------------
  97.  
  98. cout<<endl<<endl<<"duomenys apie studiju planus"<<endl;
  99.  
  100.  
  101. // plano kovas, plane vadras, plapavarde, dalykas
  102. string kodas[1000], pvardas[1000],ppavarde[1000],dalykas[1000];
  103. // dalyko pazimys
  104. int paz[1000];
  105. int j,p;
  106. j=0;
  107. p = 0; // planus skaiciavimui
  108. while(duom2 >> kodas[j] >> pvardas[j] >> ppavarde[j] >> dalykas[j]>>paz[j]){
  109.      p++;
  110.      cout << kodas[j] << " " << pvardas[j] << " " << ppavarde[j] << " " << dalykas[j]<< " " <<paz[j]<<endl;
  111.      j++;
  112.  };
  113.  
  114. duom2.close();
  115.  
  116. // duomenu nuskaitymo pabaiga
  117. //---------------------------------------------------------------------------------------------------------------------------------------------------
  118. //---------------------------------------------------------------------------------------------------------------------------------------------------
  119.  
  120.  
  121.  
  122.  
  123. ofstream fail("failas.txt");
  124.  
  125. // paieska duomenyse -- atrenkam dalykus kuriuos mokosi studentas
  126. for (i=0;i<n;i++){
  127.  // išvedam i faila lengvesniam naudojimui
  128.  fail << left<< setw(15)<< vardas[i] << left<< setw(15)<<pavarde[i]<<left<<setw(10)<< grupe[i]<< left<< setw(25)<< " modulio dalykai yra ";
  129.  
  130.  for (j=0;j<p;j++){
  131.  if ((pvardas[j]==vardas[i])&&(ppavarde[j]==pavarde[i])){
  132.  fail << left<< setw(15)<< dalykas[j]<<" ";
  133.  }
  134.  };
  135. fail<< endl;
  136. };
  137.  
  138. fail.close();
  139.  
  140.  
  141. string studdalyk[1000];
  142.  
  143. ifstream laik;
  144.  laik.open("failas.txt");
  145.  
  146.  
  147.  
  148. // getline eilute su studento vardu pavarde ir pasirinktais dalykais
  149. // juos desiu i klases
  150.  for (i=0;i<n;i++){
  151.  
  152.  getline(laik,studdalyk[i]);
  153. cout << studdalyk[i] <<endl;
  154.  };
  155.  
  156. laik.close();
  157. // istrinam tekstini faila
  158. remove( "failas.txt" );
  159.  
  160. //---------------------------------------------------------------------------------------------------------------------------------------------------
  161. //---------------------------------------------------------------------------------------------------------------------------------------------------
  162.  
  163. // skaiciuosim vidurkius
  164.  
  165. double sum; // pazymiu suma (naudojama tik vidurkio skaiciavumui)
  166. int k; // dalyku skaicius
  167. double vidur[100];
  168.  
  169. for (i=0;i<n;i++){
  170. sum=0;
  171.  k=0;
  172.  for (j=0;j<p;j++){
  173.  if ((pvardas[j]==vardas[i])&&(ppavarde[j]==pavarde[i])){
  174.  sum=sum+paz[j];
  175.  k++;
  176.  
  177.  };
  178.  
  179.  };
  180. vidur[i]= sum/k;
  181. cout<< vidur[i]<<endl;
  182. };
  183.  
  184.  
  185.  
  186. //---------------------------------------------------------------------------------------------------------------------------------------------------
  187. //---------------------------------------------------------------------------------------------------------------------------------------------------
  188.  
  189. // iskaiciuojam kokios bus stipendijos
  190. int stipend[100];
  191. for (i=0;i<n;i++){
  192.  
  193. stipend[i] = stipendija (vardas[i],pavarde[i],vidur[i]);
  194. };
  195.  
  196. //---------------------------------------------------------------------------------------------------------------------------------------------------
  197. //---------------------------------------------------------------------------------------------------------------------------------------------------
  198.  
  199. // S lygio uzduotis :
  200. //S: Kokie dar studentai yra pasirinkę tokius pat dalykus? Atspausdinti visą informaciją apie šiuos studentus dalykais.
  201.  
  202.  
  203. cout<< endl<<" S lygio uzduotis :"<<endl<<endl<<endl ;
  204.  
  205.  
  206.  
  207. int l;
  208. string A[1000],B[1000],// dalyku masuvo kopijos
  209. C[1000];// tik skirtingi dalykai
  210.  
  211. for (i=0;i<p;i++){
  212. A[i] = dalykas[i];
  213. B[i] = dalykas[i];
  214.  
  215. }
  216.  
  217.  
  218. l=0;
  219. for(i = 0;i<p;i++){
  220.  if (A[i]!="n"){
  221.     C[l]=B[i];
  222. l++;
  223.   for ( j = 0;j<p;j++){
  224.   if(B[i]==B[j]){
  225.   A[j]="n";
  226.  
  227.   }
  228.  
  229.   }
  230.   // if 1
  231.   B[i]="n";}
  232. //for i
  233. }
  234.  
  235.  
  236. //skirtingu dalyku skaicius
  237.  
  238.  
  239. for(i = 0;i<l;i++){
  240. cout << C[i]<<endl;
  241. }
  242.  
  243. //---------------------------------------------------------------------------------------------------------------------------------------------------
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250. ofstream fai("failas.txt");
  251.  
  252. // paieska duomenyse -- atrenkam dalykus kuriuos mokosi studentas
  253. for (i=0;i<l;i++){
  254.  // išvedam i faila lengvesniam naudojimui
  255.  fai<<left<<setw(15)<< C[i] <<left<<setw(25)<<"mokosi sie studentai:";
  256.  
  257.  for (j=0;j<p;j++){
  258.  if (C[i]==dalykas[j]){
  259.  fai << left<< setw(15)<< pvardas[j]<<left<<setw(15)<<ppavarde[j]<<"|";
  260.  }
  261.  };
  262. fai<< endl;
  263. };
  264.  
  265. fai.close();
  266.  
  267.  
  268. string S[1000];
  269.  
  270. ifstream laikin;
  271.  laikin.open("failas.txt");
  272.  
  273.  
  274.  
  275. // getline eilute su studento vardu pavarde ir pasirinktais dalykais
  276. // juos desiu i klases
  277.  for (i=0;i<l;i++){
  278.  
  279.  getline(laikin,S[i]);
  280. cout << S[i] <<endl;
  281.  };
  282.  
  283. laikin.close();
  284. // istrinam tekstini faila
  285. remove( "failas.txt" );
  286.  
  287.  
  288. //  system("pause");
  289. return 0;
  290. }
  291.  
  292.  
  293. //***************************************************************************************************************************************************
  294.  
  295.  
  296.  
  297.  
  298.  int stipendija (string vards, string pavard, double vid) {
  299.  
  300.  int stipendija = 0;
  301. // stip - bazine stiprdija
  302. int stip = 300;
  303.  
  304.  
  305.    if  ((vid > 5 )&&(vid < 8))
  306.     { stipendija = stip;
  307.  
  308.         cout << vards <<" "<< pavard << " stipendijos gaus " << stipendija << endl;}
  309.    else {
  310.        if  ((vid >= 8)&&(vid < 9 ))
  311.     { stipendija  = stip+stip*25/100;
  312.         cout << vards <<" "<< pavard << " stipendijos gaus " << stipendija  << endl;}
  313.       else {
  314.           if  (vid >= 9)
  315.     { stipendija  = stip+stip*50/100;
  316.         cout << vards <<" "<< pavard << " stipendijos gaus " <<  stipendija  << endl;}
  317.     else{ stipendija  = 0;
  318.      cout << vards <<" "<< pavard << " stipendijos negauna" << endl;}
  319.       }
  320.     }
  321.  return stipendija ;
  322.  }
  323.  
  324.  
  325. //---------------------------------------------------------------------------------------------------------------------------------------------------
  326.  
  327.  
  328.  
  329.  
  330. void studentai::detiduom(string vard, string pavard, string grup,int i){
  331.  
  332. vardas[i] = vard;
  333. pavarde[i] = pavard;
  334. grupe[i] = grup;
  335.  
  336. };
  337.  
  338.  
  339. void studentai::detistuddalyk(string dal,int i){
  340.  
  341. studdalykai[i]=dal;
  342.  
  343. }
  344. void studentai::detistipendija(int stip, int i){
  345. stipendijos[i]=stip;
  346.  
  347. };
  348.  
  349. void  studentai::detiSLuzd(string sl, int i){
  350.  
  351. suzd[i]=sl;
  352.  
  353. };
  354.  
  355.  
  356. //---------------------------------------------------------------------------------------------------------------------------------------------------
  357. //---------------------------------------------------------------------------------------------------------------------------------------------------
  358.  
  359.  
  360. string studentai::imtiduom(int i){
  361.  
  362.  
  363. return vardas[i],pavarde[i],grupe[i];
  364. };
  365. string studentai::imtistuddalyk(int i){
  366.  
  367.  
  368. return studdalykai[i];
  369. };
  370. int studentai::imtistipendija(int i){
  371.  
  372.  
  373. return stipendijos[i];
  374. };
  375. string studentai::imtiSLuzd(int i){
  376.  
  377.  
  378. return suzd[i];
  379. };
Add Comment
Please, Sign In to add comment