Guest User

Untitled

a guest
Jun 22nd, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.27 KB | None | 0 0
  1. program Zirniai;
  2.  
  3. const CMax  = 100;
  4.       CDuom = 'Z2.txt';
  5.       CRez  = 'Z2rez.txt';
  6.  
  7. type Masyvas = array[1..CMax] of integer;
  8.  
  9. {--------------------------Paprogramės-----------------------------------------}
  10.  
  11. procedure Skaityti(var P:Masyvas; var N:integer; var N1,N2:integer);
  12. var i:integer;
  13.     F:text;
  14. Begin
  15.      Assign(F,CDuom);
  16.      Reset(F);
  17.      ReadLn(F,N1,N2);
  18.      ReadLn(F,N);
  19.      for i := 1 to N do
  20.        ReadLn(F,P[i]);
  21.      Close(F);
  22. end;
  23.  
  24. procedure Skaiciavimai(P:Masyvas; N,N1,N2:integer; var k1,k2,kv,kp:integer);
  25. var i:integer;
  26.     lieka1kg,                       // Kiek lieka1kg maisu
  27.     lieka2kg : integer;             // kiek lieka2kg maisu
  28.     v_kg,                           // Kiek 1kg maisu gauna kiekvienas pirkejas
  29.     du_kg : integer;                // Kiek 2kg maisu gauna kiekvienas pirkejas
  30.     isviso:integer;                 // Kiek isviso kg maisu zirniu yra
  31.     suma : integer;                 // pirkeju isigyti zirniai
  32. Begin
  33.      suma := 0;
  34.      k1 := 0; k2 := 0; kv := 0; kp := 0;
  35.      lieka1kg := N1;
  36.      lieka2kg := N2;
  37.      isviso := N1 + N2 * 2;
  38.      for i := 1 to N do
  39.        Begin
  40.           suma := suma + P[i];
  41.           du_kg := P[i] div 2;
  42.            v_kg := P[i] mod 2;
  43.            // Perskaiciuoti du_kg ir v_kg kai neuztenka 2kg maisu pirkejui
  44.            if du_kg >= lieka2kg then
  45.              Begin
  46.                 du_kg := lieka2kg;
  47.                 // Perskaiciuoti kiek 1kg maisu pirkejas dar gali paimti
  48.                 if lieka1kg = 0 then v_kg := 0
  49.                                 else v_kg := v_kg + (P[i]div 2 - lieka2kg);
  50.              end;
  51.             // Kiek pirkeju nusipirko zirniu
  52.             if ((lieka1kg > 0) or (lieka2kg > 0)) then kv := kv + 1;
  53.            
  54.             // Kiek kilogramu zirniu nusipirks paskutinis pirkejas
  55.             if ((lieka1kg > 0) and (lieka2kg > 0)) then kp := isviso - suma;
  56.              
  57.            lieka2kg := lieka2kg  - du_kg;
  58.            lieka1kg := lieka1kg - v_kg;
  59.            k1 := k1 + v_kg;
  60.            k2 := k2 + du_kg;
  61.        end;
  62.  
  63.       // Paskutinis pirkejas visalaik gaus tiek zirniu kiek pageidavo jei
  64.       // visi pirkejai neisnaudojo bendro zirniu kilogramu skaiciaus
  65.       if suma < isviso then kp := P[n];
  66.  
  67. end;
  68.  
  69. procedure Rasyti(k1,k2,kv,kp:integer);
  70. var R:text;
  71. Begin
  72.       Assign(R,CRez);
  73.       Rewrite(R);
  74.       Writeln(R,k1,'  ',k2);
  75.       Writeln(R,kv);
  76.       Writeln(R,kp);
  77.       Close(R);
  78. end;
  79.  
  80. {--------------------------Pagrindinė programa---------------------------------}
  81.  
  82. var
  83.     N1,                             // 1 kg maisu skaicius
  84.     N2,                             // 2 kg maisu skaicius
  85.     N : integer;                    // Pirkeju skaicius
  86.     Pirk_Pag : Masyvas;             // Pirkeju pageidavimai
  87.     // Rezultatu kintamieji
  88.     kiek_1,                         // Parduotu 1kg pakuociu skaicius
  89.     kiek_2,                         // Parduotu 2 kg pakuociu skaicius
  90.     keli_viena,                     // Kiek pirkeju nusipirko bent 1 pakuote
  91.     kiek_pask : integer;            // Kiek kg zirniu nusipirko paskutinis pirkejas
  92.      
  93. begin
  94.   Skaityti(Pirk_Pag,N,N1,N2);
  95.   Skaiciavimai(Pirk_Pag,N,N1,N2,kiek_1,kiek_2,keli_viena,kiek_pask);
  96.   Rasyti(kiek_1,kiek_2,keli_viena,kiek_pask);
  97.   Readln;
  98. end.
Add Comment
Please, Sign In to add comment