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.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

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