Pereiti prie turinio

2010 metu IT egzamino uzduoties sprendimas


Rekomenduojami pranešimai

Taigi daug valandu sugaisau prie IT egzamino vienos uzduoties, tai yra paskutines ir net atejo i galva mintis-"Po velniu, ar kasnors apskritai issprende sia uzduoti is moksleiviu laikiusiu egzamina 2010 metais per tas 45 min. skirtas vienai uzduociai?!" :D Nes is tikruju parasiau koda, bet jis nepavyko ir pats matau, nes daug kur logines klaidos ir niekaip negaliu ismastyti, kaip reiketu ja sukoduoti.Savo koda idesiu, zinau, kad jame puse kas parasyta yra neteisinga, na bubble sort metoda pritaikiau skaiciu didejimo tvarkos nustatymui, bet nemoku visu pirmiausia atrinkti tu didziausiu skaiciu is grupiu.Uzduotis skamba taip:

 

2. Varžybos

Maksimalus vertinimas – 25 taškai

800 metrų bėgimo varžyboms registravosi n (2 ≤ n ≤ 50) bėgikų. Stadione yra 8 bėgimo

takeliai. Sportininkai atsitiktinai suskirstyti į k grupių taip, kad grupėje būtų ne mažiau kaip du

bėgikai. Parašykite programą, kuri iš kiekvienos grupės atrinktų pusę bėgikų, pasiekusių

geriausius rezultatus. Jeigu grupėje yra nelyginis skaičius bėgikų, tada atrenkama vienu

sportininku mažiau (pvz., iš penkių bėgikų atrenkami du pasiekusieji geriausius rezultatus).

Žinoma, kad visi sportininkų pasiekti rezultatai yra skirtingi.

Duomenys pateikiami tekstiniame faile U2.txt. Pirmoje failo eilutėje nurodomas bėgikų

grupių skaičius k. Toliau iš eilės pateikiami visų bėgikų grupių sąrašai tokia tvarka:

• pirmoje sąrašo eilutėje pateikiamas bėgikų skaičius grupėje;

• toliau – kiekvieno bėgiko vardas bei pavardė (skiriamos pirmosios 20 pozicijų) ir

rezultatas (minutės, sekundės). Vieno sportininko duomenims skiriama viena eilutė.

Rezultatai pateikiami tekstiniame faile U2rez.txt. Spausdinamas visų atrinktų bėgikų

sąrašas pasiekto rezultato laiko didėjimo tvarka. Vieno bėgiko duomenims skiriama viena eilutė:

vardas bei pavardė (skiriamos pirmosios 20 pozicijų) ir rezultatas (minutės ir sekundės, atskirtos

vienu tarpu).

 

O mano katastrofiskas kodas:

program varzybos;

type rek=record
   vard:string[18];
   laik:integer;
end;

type masyvas=array[1..100] of rek;

type mas=array[1..100] of integer;

var k,j,r,c,o:integer;
Df,Rf:text;
A:masyvas;
n,g,l,B:mas;

procedure Duomenys;
var w,p:mas;i:integer;
begin
   p[i]:=1;
   w[i]:=0;
   Assign(Df,'U2.txt');
   Reset(Df);
   Readln(Df,k);
   for i:=1 to k do
   begin
       Readln(Df,n[i]);
       w[i]:=p[i]+n[i];
       for i:=p[i] to w[i] do
       Readln(Df,A[i].vard,A[i].laik);
       p[i]:=p[i]+n[i];
   end;
   Close(Df);
end;

procedure Atrinkimas;
var i:integer;p,w:mas;
begin
   j:=1;
   B[j]:=100;
   c:=1;
   r:=0;
   for i:=1 to k do
   begin
      if n[i] mod 2 = 0 then l[i]:=n[i] div 2
      else l[i]:=(n[i] - 1) div 2;
      while l[i] > 0 do
      begin
          for i:=p[i] to w[i] do
          begin
              if (B[j] > A[i].laik) and (g[i] <> i) then
              begin
                  j:=i;
                  B[j]:= A[i].laik;
              end;
          end;
          c:=c+1;
          g[r+1]:=j;
          l[i]:=l[i]-1;
      end;
      for i:=1 to n[i] do
      g[i]:=0;
   end;
end;

procedure Irasymas;
var tmp,i:integer;temp:string[18];
begin
   tmp:=0;
   for i:=1 to c do
   begin
       for j:=1 to c do
       begin
           if B[j] > B[j+1] then
           begin
               tmp:=B[j];
               B[j]:=B[j+1];
               B[j+1]:=tmp;
               temp:=A[i].vard;
               A[i].vard:=A[i+1].vard;
               A[i+1].vard:=temp;
           end;
       end;
   end;
   for i:=1 to c do
   Writeln(Rf,A[i].vard,' ',B[j]);
end;

begin
 Duomenys;
 Atrinkimas;
 Assign(Rf,'U2rez.txt');
 Rewrite(Rf);
 Irasymas;
 Close(Rf);
end.

 

Garbe tam kas atves mane i tiesa! :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

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ą...