PASCAL - Zadaci, resenja, problemi, izazovi...

Ja mislim da je drugacije. Da se umesto for petlje od 1 do n treba ici od 1 dok taj clan x^n/n! ne postane manji od zadatog broja. Takodje, prilicno je neefikasno tako racunati stepen i faktorijel u ovakvom zadatku.

Kod:
program suma;

var
   x,min,step,suma:real;
   n,fakt:integer;

begin
   write('Unesite x: ');
   readln(x);
   write('Unesite minimalnu vrednost clana: ');
   readln(min);
   n:=0;
   step:=1;
   fakt:=1;
   suma:=0;
   while step/fakt>=min do
      suma:=suma+step/fakt;
      inc(n);
      step:=step*x;
      fakt:=fakt*n;
   end;
   writeln('Trazena suma je: ',suma:0:5);
end.

Evo efikasniji nacin, mada nema potrebe, vidis da je srednjoskolac.

Stepen:

Kod:
function stepen(broj:integer; st:byte):integer;
   begin

    if ((broj=0) or (broj=1)) then stepen:=broj
     else
      begin
       if (st=0) then stepen:=1
        else if (st=1) then stepen:=broj
         else
          begin
           stepen:=broj*stepen(broj,st-1);
          end;

      end;

   end;

Faktorijel:

Kod:
function fact(broj:byte):integer;
   var f:integer;

    begin

     if (broj=0) or (broj=1) then fact:=1
      else
       fact:=broj*fact(broj-1);

    end;
 
Poslednja izmena:
Ma ok je sto se tice racunanja stepena i faktorijela, mada stepen moze mnogo brze ali to je sad nebitno. Poenta je sto ti to radis n puta i svaku put ispocetka. 1 korak za 1!, 2 koraka za 2!, 3 koraka za 3! itd, i to kad saberes to je 1+2+3+...+n koraka tj n*(n+1)/2 sto je mnogo vise od n koraka koje imas ako samo pomnozis trenutni broj sa prethodnom vrednoscu. Npr za n=1000 tvoj program ima 1000000 koraka za racunanje stepena i faktorijela a moj ima 2000. Ali ok je i tako jer im profesor verovatno nece dovoditi efikasnost u pitanje, a cak ce mu se mozda vise i svideti koriscenje funkcija.
 
Imam problem,dakle imam zadatak i to sam uradio,ali hoću da ga malo doteram.

Evo koda:
Kod:
program suma;
uses crt;
const k=10;
type
niz=array[1..k] of real;
matrica=array[1..k] of niz;
var
 A : matrica;
  rezultat : real;
   i, j, n : integer;
    procedure ucitajMatricu(n:integer;var A:matrica);
     var
      i, j : integer;
      begin
       for i:=1 to n do
        for j:=1 to n do
         read(A[i][j]) ;
          end;
          function SumaElemenata(n:integer; A:matrica) : real;
            var
           s : real;
         i, j : integer;
          begin
          s:=0;
        for i:=1 to n do
         for j:=1 to n do
           s:=s+A[i,j];
           SumaElemenata:=s
            end;
             begin
              write('Upisati dimenzije matrice (n):');
                readln(n);
                write('Unesite elemente matrice (NxN): ');
               ucitajMatricu(n, A);
               writeln('Elementi matrice su: ');
                  begin
                  for i:=1 to n do
                    for j:=1 to n do
                     writeln(A[i][j]:8:2);
                  rezultat:=SumaElemenata(n, A);
                    write('Suma elemenata matrice je: ', rezultat:8:2);
                  end;
                  repeat until keypressed;
                     end.

E sad,kako da napravim da mi ispiše matricu da bude oblika,npr ako je broj vrsta i kolona 3:
Kod:
1 2 3 
4 5 6
7 8 9
Hvala.

Izvinjavam se,uspio sam sam.


Evo ako nekoga interesuje:
Kod:
program SumaClanovaMatrice;
uses crt;
const k=10;
type
niz=array[1..k] of real;
matrica=array[1..k] of niz;
var
A : matrica;
rezultat : real;
i, j, n : integer;
procedure ucitajMatricu(n:integer;var A:matrica);
var
i, j : integer;
begin
for i:=1 to n do
for j:=1 to n do
read(A[i][j])
end;
function SumaElemenata(n:integer; A:matrica) : real;
var
s : real;
i, j : integer;
begin
s:=0;
for i:=1 to n do
for j:=1 to n do
s:=s+A[i,j];
SumaElemenata:=s
end;
begin
write('Upisati dimenzije matrice (n):');
readln(n);
write('Unesite elemente matrice (3x3): ');
ucitajMatricu(n, A);
writeln('Elementi matrice su: ');
[COLOR="Red"][B]begin
for i:=1 to n do
begin
for j:=1 to n do
write(A[i][j]:8:2);
writeln;
end;
end;[/B][/COLOR]
rezultat:=SumaElemenata(n, A);
writeln('Suma elemenata matrice je: ', rezultat:8:2);
repeat until keypressed;
end.
 
Poslednja izmena:
@MML

Read(string) cita do kraja linije tako da eoln gubi smisao u tom slucaju. Takodje, ono ucitavanje brojeva posle toga onda vise nema smisla, a cak i da ima, opet je eoln nepotreban jer znas da ce do kraja biti tacno 3 podatka.. Osim toga, ne mozes imati nikako samo jednu promenljivu za ovakav zadatak vec niz ili listu jer se kod tebe sve promenljive ucitavaju jedne preko drugih. I trebao bi da inicijalizujes pocetnu vrednost sume na 0. Osim toga, eof i eoln bez parametara se odnose na ucitavanje sa tastature a sa parametrom na ucitavanje iz fajla.

Kod:
program sortiranje;

type
   ljudi=record
            ime:string;
            broj:integer;
         end;

var
   ul,iz:text;
   n,i,j,b1,b2,b3:integer;
   t:ljudi;
   osoba:array[1..100] of ljudi;

begin
   assign(ul,'ulaz.txt');
   reset(ul);
   n:=0;
   while not eof(ul) do
      inc(n);
      osoba[n].ime:='';
      read(ul,slovo);
      while slovo<>' ' do
         osoba[n].ime:=osoba[n].ime+slovo;
         read(ul,slovo);
      end;
      readln(f,b1,b2,b3);
      osoba[n].broj:=b1+b2+b3;
   end;
   close(ul);
   for i:=1 to n-1 do
      for j:=i+1 to n do
         if osoba[i].broj>osoba[j].broj then
            begin
               t:=osoba[i];
               osoba[i]:=osoba[j];
               osoba[j]:=t;
            end;
   assign(iz,'izlaz.txt');
   rewrite(izlaz);
   for i:=1 to n do
      writeln(osoba[i].ime,' ',osoba[i].broj);
   close(iz);
end.

Sto se sortiranja tice, moze brze da se odradi, ai mislim da je ovo sasvim ok da bi lakse razumeo. Takodje, nije problem sortirati ni po imenu a ne po broju ili po opadajucem a ne po rastucem redosledu, zavisi sta ti treba. Oko ucitavanja imena, mora tako jer bi sa read(string) ucitao do kraja reda ukljucujuci tu i ona 3 broja pa bi onda morao da izdvajas te brojeve iz tog stringa sto je komplikovanije. Lakse bi bilo kad bi ulaz bio obrnut, tj prvo brojevi pa onda ime.
Ae da obrnem... da prvo idu brojevi pa posle ime...
Ja ovo prebacim u kompajler i dodam par begin-eva koji fale...ali opet ne radi... ne dobijem nista na izlazu
 
U pravu si, bilo je dosta gresaka.

Fale 2 begina jer sad radim u slicnom jeziku u kome se samo end navodi, slovo treba deklarisati kao char, nisam citao iz dobrog fajla i nisam pisao u fajl nego na ekran. Ne znam sta mi bi da izgresim toliko, sad treba da je ok:

Kod:
program sortiranje;

type
   ljudi=record
            ime:string;
            broj:integer;
         end;

var
   ul,iz:text;
   n,i,j,b1,b2,b3:integer;
   t:ljudi;
   osoba:array[1..100] of ljudi;
   slovo:char;

begin
   assign(ul,'ulaz.txt');
   reset(ul);
   n:=0;
   while not eof(ul) do
   begin
      inc(n);
      osoba[n].ime:='';
      read(ul,slovo);
      while slovo<>' ' do
      begin
         osoba[n].ime:=osoba[n].ime+slovo;
         read(ul,slovo);
      end;
      readln(ul,b1,b2,b3);
      osoba[n].broj:=b1+b2+b3;
   end;
   close(ul);
   for i:=1 to n-1 do
      for j:=i+1 to n do
         if osoba[i].broj>osoba[j].broj then
            begin
               t:=osoba[i];
               osoba[i]:=osoba[j];
               osoba[j]:=t;
            end;
   assign(iz,'izlaz.txt');
   rewrite(iz);
   for i:=1 to n do
      writeln(iz,osoba[i].ime,' ',osoba[i].broj);
   close(iz);
end.

Nisam menjao redosled podataka u ulazu. Ako to hoces da promenis, onda ucitavaj prvo 3 broja a ostatak mozes kao string. Tj. umesto:

Kod:
      read(ul,slovo);
      while slovo<>' ' do
      begin
         osoba[n].ime:=osoba[n].ime+slovo;
         read(ul,slovo);
      end;
      readln(ul,b1,b2,b3);

treba da bude:

Kod:
readln(ul,b1,b2,b3,osoba[n].ime);

Mozda eventualno treba izmedju b3 i imena ucitati onaj space u neku promenljivu, npr ono slovo koje je char posto ne znam da li ce taj razmak izmedju broja biti protumacen kao deo stringa, testiraj pa proveri, mada nema potrebe posto bi sad trebalo da radi.
 
Ako ces da ispisujes na ovaj nacin tj prvo string pa onda broj, mozes da pre nego sto ispises uradis ovako nesto:

Kod:
max:=0;
for i:=1 to n do
   if length(osoba[i].ime)>max then
      max:=length(osoba[i]).ime;
for i:=1 to n do
   for j:=1 to max-length(osoba[i].ime) do
      osoba[i].ime:=osoba[i].ime+' ';

Time bi svakom imenu dodao onoliko space-ova koliko je potrebno da svi budu duzine najduzeg o njih. Tako da ce biti poravnati kad ih ispises sa:

Kod:
   assign(iz,'izlaz.txt');
   rewrite(iz);
   for i:=1 to n do
      writeln(iz,osoba[i].ime,' ',osoba[i].broj);
   close(iz);
 
Pomažite ljudi,slupaću računar.:mrgreen:

Zadatak kaže:
Napisati program koji generise niz na osnovu prve 3 cifre koje se upisuju.Svaki sledeći broj je zbir poslednja tri broja.Unosi se granica,a program treba da štampa brojeve i da računa koliko niz ima članova,sve dok je generisani broj manji od te granice.

Evo koda:
Kod:
program gniz;
 var
  niz:array[1..100] of longint;
   a,b,c,k,x,zb,i:longint;
    begin
      readln (a,b,c,k);
     x:=0;
          begin
           for i:=1 to k div 3 do
            if i=1 then niz[i]:=a
            else
            if i=2 then niz[i]:=b
            else
            if i=3 then niz[i]:=c
            else
            niz[i]:=niz[i-1]+niz[i-2]+niz[i-3];
           if niz[i]<k then
            begin
             write (niz[i]:5);
              x:=x+1;
              end;
             end;
             writeln (x);
               end.
npr:
Kod:
A=1 (prvi broj)
B=3 (drugi broj)
C=5 (treci broj)
K=880 (granica)
I sad kao treba da se dobije:
Kod:
1  3  5  9  17  31  57  105  193  355  653

I naravno kad se to prebroji dobije se da ima 11 članova.Pomažite što pre,lagan je zadatak,ne znam gdje sam pogrešio.

A ovo k div 3 sam stavio onako odokativno(100% mogu i više da podijelim),ako bi se npr stavilo da su prve cifre 1,1,1.
Ukratko,smanjio sam algoritam(ako sam ga uopšte smanjio).
(svaka vam čast,ako me išta razumijete) :D
 
Poslednja izmena:
Uopste ne znam cemu ucitavas to a,b i c kad ces svakako da ih prebacis u taj niz. Ucitaj odmah u niz. A for petlja nema nimalo smisla jer se ide do granice, znaci treba while.

Dakle, ovo bi odradilo posao:
Kod:
program niz;
   i,n,k:integer;
   a:array[1..100] of integer;
begin
   write('Unesite prva 3 clana niza:');
   readln(a[1],a[2],[3]); 
   write('Unesite granicu za element niza:');
   readln(k);
   n:=3;
   while a[n-2]+a[n-1]+a[n]<k do
   begin
      inc(n);
      a[n]:=a[n-3]+a[n-2]+a[n-1];
   end;
   writeln('Niz ima ',n,' clanova: ');
   for i:=1 to n do
      write(a[i],' ');
   writeln;
end.
 
Na ulazu imam tri datoteke pod imenom #24.csv, #25.csv, #26.csv koje izgledaju ovako. Meni treba da program izvuce i zapamti poziciju i ime.(ovo BOLDOVANO) A kasnije ce svakoj poziciji da dodeli odredjenu vrednost. A te vrednosti ce se uzimati iz datoteke pod imenom bod.txt

Ovoj e prva datoteka
Kod:
[B]1,SERT•M I K I[/B],dime_miki,XFG,47:17.61,1:33.22,30,1,,1
[B]2,SERT•IVAN[/B],IVANco MKD,XFG,+0:07.03,1:33.66,30,1,,2
[B]3,SERT•Ezzy[/B],Ezzy,XFG,+0:19.40,1:33.97,30,1,,4
[B]4,SERT•BOKI[/B],pelish8,XFG,+0:22.44,1:33.83,30,1,,3
[B]5,SERT•^CТасман[/B],SERT license test,XFG,+0:29.33,1:34.11,30,1,,7
[B]6,mega™MOKA[/B],whiteangel,XFG,+0:41.82,1:34.15,30,1,,5
[B]7,Pera[/B],whiteangel,XFG,+0:41.82,1:34.15,30,1,,5
[B]8,Mika[/B],SERT license test,XFG,+0:29.33,1:34.11,30,1,,7
[B]9,Zdera[/B],pelish8,XFG,+0:22.44,1:33.83,30,1,,3
a u drugoj datoteci
Kod:
1,SERT•M I K I,dime_miki,XFG,47:17.61,1:33.22,30,1,,1
2,SERT•IVAN,IVANco MKD,XFG,+0:07.03,1:33.66,30,1,,2
3,SERT•Ezzy,Ezzy,XFG,+0:19.40,1:33.97,30,1,,4
4,SERT•BOKI,pelish8,XFG,+0:22.44,1:33.83,30,1,,3
5,SERT•^CТасман,SERT license test,XFG,+0:29.33,1:34.11,30,1,,7
6,mega™MOKA,whiteangel,XFG,+0:41.82,1:34.15,30,1,,5
7,mega™^CЛука,luciano88,XFG,DNF,1:34.76,4,0,,6

bod.txt
Prvo ide pozicija pa koliko ta pozicija vredi bodova.
Kod:
1 55 
2 52 
3 50 
4 47 
5 45 
6 42 
7 40 
8 37 
9 35 
10 32 
11 30 
12 27 
13 25 
14 22 
15 20 
16 17 
17 15 
18 12 
19 10 
20 7 
21 5 
22 4 
23 3 
24 2 
25 1

Mogu se ponoviti ista imena, i ako je isto ime onda se bodovi sabiraju i tako tri trke.
I sve to da sabere, ne mora da sortira... Malo je komplikovano, zar ne?
 
Poslednja izmena:
Tri datoteke u kojima se nalaze rezultati trka. To su ove gore datoteke.(#24.csv, #25.csv, #26.csv). Potrebno mi je da program radi i ako ima samo 1 datoteka ili 2. Iz tih datoteka uzima poziciju i ime vozaca. Svaka pozicija vredi odredjen broj poena, a to se nalazi u datoteci bod.txt. Dakle onaj koji je prvi zavrsio njemu se za bodove dodeljuje 55 bodova, drugom 52 itd. Sad, na prvoj trci mogu se pojaviti samo 2-3 takmicara dok na drugoj se mogu pojaviti i oni plus jos njih deset. Pa ako se imena ponavljaju da se bodovi sabiraju. Sve to moze na kraju u neku drugu datoteku ali i ne moras ti da se mucis, to cu ja. Ja samo ne znam kako da procitam te datoteke.

#24.csv
Kod:
[B]1,SERT•M I K I[/B],dime_miki,XFG,47:17.61,1:33.22,30,1,,1
[B]2,SERT•IVAN[/B],IVANco MKD,XFG,+0:07.03,1:33.66,30,1,,2
[B]3,SERT•Ezzy[/B],Ezzy,XFG,+0:19.40,1:33.97,30,1,,4
[B]4,SERT•BOKI[/B],pelish8,XFG,+0:22.44,1:33.83,30,1,,3
[B]5,SERT•^CТасман[/B],SERT license test,XFG,+0:29.33,1:34.11,30,1,,7
[B]6,mega™MOKA[/B],whiteangel,XFG,+0:41.82,1:34.15,30,1,,5
[B]7,Pera[/B],whiteangel,XFG,+0:41.82,1:34.15,30,1,,5
[B]8,Mika[/B],SERT license test,XFG,+0:29.33,1:34.11,30,1,,7
[B]9,Zdera[/B],pelish8,XFG,+0:22.44,1:33.83,30,1,,3

od nje treba da ostane

Kod:
[B]1,SERT•M I K I[/B]
[B]2,SERT•IVAN[/B]
[B]3,SERT•Ezzy[/B]
[B]4,SERT•BOKI[/B]
[B]5,SERT•^CТасман[/B]
[B]6,mega™MOKA[/B]
[B]7,Pera[/B]
[B]8,Mika[/B]
[B]9,Zdera[/B]

Onda da Mikiju se dodeli 55, Ivanu 52, Ezzy-u 50 sto se vidi iz daototeke bod.txt
Kod:
1 55 
2 52 
3 50 
4 47 
5 45 
6 42 
7 40 
8 37 
9 35 
10 32 
11 30 
12 27 
13 25 
14 22 
15 20 
16 17 
17 15 
18 12 
19 10 
20 7 
21 5 
22 4 
23 3 
24 2 
25 1

Onda druga trka
Kod:
1,SERT•Fangio
2,SERT•BOKI
3,SERT•Dzordz

Boki je vozio i prvu a i drugu trku, onda se njegovi prethodni bodovi sabiraju sa ovim novim bodovima, dok Fangio i Dzordz nisu vozili prvu trku i njima se normalno dodeljuju bodovi.
I tako jos jedna trka... Na kraju da moze da se u jednoj datoteci napravi tabela gde ce se videti ime i u kojoj trci je ko koliko bodova osvojio.
 
Poslednja izmena:
Sto se tice toga da li postoji fajl, to nisam ni sam znao kkao se proverava pa sam potrazio na internetu. Ako koristis sysutils, onda mozes i funkciju fileexists koja postoji tamo, parametar je ime fajla ili putanja a funkcija vraca true ili false.

Prvo ucitam bodove za takmicare. I onda za svaki od 3 fajla ako postoji radim sledece:
Ucitavam red po red u promenljivu red tipa string. Koristeci funkcije pos i copy cije objasnjenje mozes pronaci na netu, izvlacim redni broj takmicara i funkcijom broj koja od stringa pravi broj ga pretvaram u integer i cuvam u rb. Funkcijom delete brisem taj deo stringa red kako bi mi ostao deo koji pocinje imenom. Na isti nacin izvlacim ime u promenljivu ime tipa string. n mi je trenutni broj razlicitih takmicara. u ok cuvam da li sam vec nasao istog takmicara i dodao njemu bodove i ako nisam, onda dodam novog i dodelim mu bodove.

Na kraju sve rezultate sortiram i ispisem u fajl rezultati.txt.

Nadam se da je sve dobro posto nisam testirao.
Kod:
uses
   SysUtils;

var
   f:text;
   fajl,red,ime:string;
   n,i,rb,j,b:integer;
   bod:array[1..100] of integer;
   ok:boolean;
   takmicar:array[1..100] of record
                                ime:string;
                                bodovi:integer;
                             end;

function broj(a:string):integer;
var
   r,i:integer;
begin
   r:=0;
   for i:=1 to length(a) do
      r:=r*10+ord(a[i])-ord('0');
   broj:=r;
end;

begin
   {assign(f,'bod.txt');
   reset(f);
   while not eof(f) do
      readln(i,bod[i]);
   close(f);}
   n:=0;
   for i:=1 to 3 do
      begin
         case i of
            1: fajl:='#24.csv';
            2: fajl:='#25.csv';
            3: fajl:='#26.csv';
         end;
         if FileExists(fajl) then
            begin
               assign(f,fajl);
               reset(f);
               while not eof(f) do
                  begin
                     readln(f,red);
                     rb:=broj(copy(red,1,pos(',',red)-1));
                     delete(red,1,pos(',',red));
                     ime:=copy(red,1,pos(',',red)-1);
                     ok:=true;
                     for j:=1 to n do
                        if takmicar[j].ime=ime then
                           begin
                              inc(takmicar[j].bodovi,bod[rb]);
                              ok:=false;
                           end;
                     if ok then
                        begin
                           inc(n);
                           takmicar[n].ime:=ime;
                           takmicar[n].bodovi:=bod[rb];
                        end;
                  end;
               close(f);
            end;
      end;
   for i:=1 to n-1 do
      for j:=i+1 to n do
         if takmicar[j].bodovi>takmicar[i].bodovi then
            begin
               b:=takmicar[i].bodovi;
               takmicar[i].bodovi:=takmicar[j].bodovi;
               takmicar[j].bodovi:=b;
               ime:=takmicar[i].ime;
               takmicar[i].ime:=takmicar[j].ime;
               takmicar[j].ime:=ime;
            end;
   assign(f,'rezultat.txt');
   rewrite(f);
   for i:=1 to n do
      writeln(f,i,' ',takmicar[i].ime,' ',takmicar[i].bodovi);
   close(f);
end.
 
To moze biti neki bug freepascala. Kad otvoris freepascal, prvo zatvori sve one vec otvorene prozore u njemu, pa tek onda otvori ovaj. Tako bi trebalo to da izbegnes, a ako ne bude htelo ni tad, probaj da kad otvoris taj, snimis sve pa izadjes iz freepascala. Sledeci put kad udjes, to bi trebao da ti je jedini otvoren prozor odmah na pocetku, tad bi trebalo da bude ok.

Ako ti je bas bitno da radi i za jednu i za 2 trke a neces da opterecujes korisnika pitanjem koliko je trka bilo ili nesto slicno, onda mislim da moras preko ove datoteke a ako nije, mozes slobodno u turbo paskalu.

Inace, ja sam turbo paskal ranije koristio ali sam onda video da ima neka memorijska ogranicenja pa sam presao na free. Npr u turbo paskalu ne mozes da kreiraz nz od 50000 elemenata ili tako nesto i nemas 64-bitni integer kao sto ima u free paskalu a takce stvari su mi trebale za takmicarske zadatke.
 
Greska je bila u kodu, sada radi, ali nesto nije tacno.
Kod:
assign(f,'bod.txt');
   reset(f);
   while not eof(f) do
      readln(i,bod[i]);
   close(f);}
treba readln(f,i,bod(i));

asko su sve tri datoteke ovakve
Kod:
1,SERT•dachha,dachha,XFG,47:24.90,1:33.73,30,1,,2
2,SERT•IVAN,IVANco MKD,XFG,+0:02.71,1:33.74,30,1,,5
3,SERT•duka,duka511,XFG,+0:08.62,1:34.00,30,1,,1
4,SERT•BOKI,pelish8,XFG,+0:16.89,1:33.93,30,1,,3
5,SERT•zbelca,zbelca,XFG,+0:18.53,1:33.74,30,1,,4
6,SERT•Ezzy,Ezzy,XFG,+0:42.07,1:33.91,30,1,,6
7,STORM•BGD,damjanb,XFG,+0:53.50,1:34.55,30,1,,9

rezultat.txt je
Kod:
1 SERT•IVAN 156
2 SERT•duka 150
3 SERT•BOKI 141
4 SERT•zbelca 135
5 SERT•Ezzy 126
6 STORM•BGD 120
7 SERT•dachha 0
8  0

Kod:
program zhnj;
{uses
   SysUtils;}

var
   f:text;
   fajl,red,ime:string;
   n,i,rb,j,b:integer;
   bod:array[1..100] of integer;
   ok:boolean;
   takmicar:array[1..100] of record
                                ime:string;
                                bodovi:integer;
                             end;

function broj(a:string):integer;
var
   r,i:integer;
begin
   r:=0;
   for i:=1 to length(a) do
      r:=r*10+ord(a[i])-ord('0');
   broj:=r;
end;

begin
   assign(f,'bod.txt');
   reset(f);
   while not eof(f) do
      readln(f,i,bod[i]);
   close(f);
   n:=0;
   for i:=1 to 3 do
      begin
         case i of
            1: fajl:='#24.txt';
            2: fajl:='#25.txt';
            3: fajl:='#26.txt';
         end;
        { if FileExists(fajl) then
            begin}
               assign(f,fajl);
               reset(f);
               while not eof(f) do
                  begin
                     readln(f,red);
                     rb:=broj(copy(red,1,pos(',',red)-1));
                     delete(red,1,pos(',',red));
                     ime:=copy(red,1,pos(',',red)-1);
                     ok:=true;
                     for j:=1 to n do
                        if takmicar[j].ime=ime then
                           begin
                              inc(takmicar[j].bodovi,bod[rb]);
                              ok:=false;
                           end;
                     if ok then
                        begin
                           inc(n);
                           takmicar[n].ime:=ime;
                           takmicar[n].bodovi:=bod[rb];
                        end;
                  end;
               close(f);
           { end;}
      end;
   for i:=1 to n-1 do
      for j:=i+1 to n do
         if takmicar[j].bodovi>takmicar[i].bodovi then
            begin
               b:=takmicar[i].bodovi;
               takmicar[i].bodovi:=takmicar[j].bodovi;
               takmicar[j].bodovi:=b;
               ime:=takmicar[i].ime;
               takmicar[i].ime:=takmicar[j].ime;
               takmicar[j].ime:=ime;
            end;
   assign(f,'rezultat.txt');
   rewrite(f);
   for i:=1 to n do
      writeln(f,i,' ',takmicar[i].ime,' ',takmicar[i].bodovi);
   close(f);
   writeln('Sta ima, ja radim');
   readln;
end.
Stavio sam zagradama da kompajler ne gleda uses i if naredbu. U Turbo radi, ali je razultat ovakav, dok u free ne radi.. Idem da jedem pa cu onda da gledam gde je problem
 
Poslednja izmena:

Back
Top