Pereiti prie turinio

Pascal VBE istaisykit prasaqu :D


Rekomenduojami pranešimai

Uzduotis:

Krepšinio rungtynių metu sekretoriatas registruoja abiejų komandų kiekvieno krepšininko buvimo aikštelėje ir sėdėjimo ant atsarginių suolelio laikus minutėmis. Vienu metu aikštelėje žaidžia po 5 krepšininkus.

Parašykite programą, kuri nustatytų vienos komandos:

• startinį krepšininkų penketuką numerių didėjimo tvarka;

• krepšininko, kuris daugiausia laiko buvo aikštelėje, numerį ir laiką, o jeigu tokie buvo keli, tai nurodytų vieną, kurio numeris mažiausias;

• krepšininko, kuris daugiausia laiko sėdėjo ant atsarginių suolelio, numerį ir laiką, o jeigu tokie buvo keli, tai nurodytų vieną, kurio numeris mažiausias;

Duomenys

Vienos komandos duomenys yra tekstiniame faile U1.txt:

• Pirmoje eilutėje yra užrašytas krepšininkų skaičius n (6 ≤ n ≤ 12).

• Toliau atskirose eilutėse yra surašyti duomenys apie kiekvieną krepšininką (sveikieji skaičiai):

o pirmas skaičius eilutėje – krepšininko numeris k (4 ≤ k ≤ 99);

o antras skaičius eilutėje – laikų (žaista ir/arba ilsėtasi) skaičius t (1 ≤ t ≤ 40);

o toliau eilutėje surašyti laikai: teigiamas skaičius – kiek minučių būta aikštelėje, neigiamas skaičius – kiek minučių sėdėta ant atsarginių suolelio. Pavyzdžiui: 18 –11 9 –2 reiškia, kad krepšininkas pirmas 18 min. žaidė, po to 11 min. sėdėjo ant atsarginių suolelio, vėl 9 min. žaidė ir likusias iki rungtynių pabaigos 2 min. sėdėjo.

Pastaba. Rungtynių trukmė 40 min.

Rezultatai

Tekstiniame faile U1Rez.txt rezultatus pateikite tokia tvarka:

• pirmoje eilutėje – startinio penketuko krepšininkų numerius didėjančia seka;

• antroje eilutėje – krepšininko, kuris daugiausiai laiko buvo aikštelėje, numerį ir laiką. Jeigu tokie buvo keli, tai nurodykite vieną, kurio numeris mažiausias;

• trečioje eilutėje – krepšininko, kuris daugiausia laiko sėdėjo ant atsarginių suolelio, numerį ir laiką. Jeigu tokie buvo keli, tai nurodykite vieną, kurio numeris mažiausias.

Skaičius eilutėje skirkite vienu tarpo simboliu.

Nurodymai

• Programoje naudokite vienmačius masyvus.

• Parašykite procedūrą1

• Parašykite funkciją, kuri surastų masyve didžiausio elemento indeksą arba reikšmę. duomenims į masyvus skaityti.

• Programoje nevartokite sakinių, skirtų darbui su ekranu.

 

Kodas:

program Noname53;
var n:integer;                         {krepsininku skaicius}
   k:array[1..12] of integer;         {krepsininku numeriai}
   t:integer;                         {laiku skaicius}
   zaide:array[1..12] of integer;     {krepsininko suzaistu minuciu skaicius}
   sedejo:array[1..12] of integer;    {sedetu minuciu skaiciu}
   f1:text;                           {failo U1.txt kintamasis}
   f2:text;                           {failo U1rez.txt kintamasis}
   z,i,j:integer;                     {ciklu kintamieji}
   penk:array[1..5] of integer;       {strartinio penketo numeriai}
   max,x:integer;                     {laikini kintamieji}

//----------------------------------------------------------------------------------------------------------------------------------------------------
procedure skaitymas;
begin
 assign(f1,'c:/Egzaminas/U1.txt');
 reset(f1);
 readln(f1,n);
 z:=0;
 for i:= 1 to n do begin
                     read(f1,k[i],t,x);    {nuskaitom krepsininko numeri, laiku skaiciu ir pirmaiji laika}
                     if x > 0 then begin penk[z+1]:=k[i]; zaide[i]:=zaide[i]+x; end;   {is pirmaojo skaiciaus nusprendziam ar tai startinis zaidejas}
                     for j:= 1 to t-1 do begin
                                         read(f1,x);
                                         if x > 0 then zaide[i]:=zaide[i]+x;   {skaiciuojam kiek laiko zaide}
                                       end;
                     sedejo[i]:=40 - zaide[i];      {skaiciuojam kiek sedejo}
                   end;
end;

//-------------------------------------------------------------------------------------------------------------------------------------------------
function IlgZaide:integer;        {funkcija skirta didizausiam elementuj masyve rasti}
begin
 max:=0;
 for i:= 1 to 12 do
   if max<zaide[i] then max:=i;   {isiminam tik indeksa, nes reikes uzrasyti krepsininko nr ir laika}
 IlgZaide:=max;
end;

//-------------------------------------------------------------------------------------------------------------------------------------------------
function IlgSedejo:integer;      {funkcija skirta didizausiam elementuj masyve rasti}
begin
 max:=0;
 for i:= 1 to 12 do
   if max<sedejo[i] then max:=i;    {isiminam tik indeksa, nes reikes uzrasyti krepsininko nr ir laika}
 IlgSedejo:=max;
end;

//-------------------------------------------------------------------------------------------------------------------------------------------------

begin
 skaitymas;
 for i:= 1 to 5 do
   for j:= i+1 to 5 do
     if penk[i] < penk[j] then begin
                                 x:=penk[i];
                                 penk[i]:=penk[j];        {sudeliojame penketuko masyva didejancia seka}
                                 penk[j]:=x;
                               end;
 assign(f2,'c:/Egzaminas/U1rez.txt');
 rewrite(f2);
 for i:= 1 to 5 do
   write(penk[i],' ');
 writeln(f2,' ');        {nusokam i sekancia eilute faile}
 writeln(f2,k[ilgZaide],' ',zaide[ilgZaide]);    {irasom i faila ilgiausiai zaidusio krepsininko nr ir minuciu skaiciu}
 writeln(f2,k[ilgSedejo],' ',zaide[ilgSedejo]);   {irasom i faila ilgiausiai sedejusio krepsininko nr ir minuciu skaiciu}
 close(f2);
end.

 

U1.txt:

6

13 2 10 -30

1 3 20 -10 10

6 3 5 -35

7 4 10 -10 10 -10

15 2 40 0

20 4 -5 12 -3 20

 

Man kazkodel meta Bad numeric format ties '' read(f1,x); '' eilute :(

Ir dar pasakykit kas negrazu, nesuprantama ar nelogiska is kaip tai pakeist (kode) :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nuskaityme yra 3 klaidos.

1) Pati svarbiausia. Meta klaidą, nes duomenų byloje įrašyta:

6 3 5 -35

parodyta, kad bus 3 buvimai aikštelėje/sėdėjimai, o parašyti tik 2

2) penk[z+1]:=k; yra nelogiška. Gaunasi, kad tu visada priskiri tai pačiai reikšmei - penki[1], nes z nedidėja.

Tai galima nesunkiai sutvarkyti: z+=1; penk[z]:=k.

3) Reiktų uždaryti nuskaitymo bylą close(f1);

Sėkmės :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...