Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ulaz>sortiranje>izlaz

[es] :: Pascal / Delphi / Kylix :: ulaz>sortiranje>izlaz

[ Pregleda: 2792 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Passwd

Član broj: 54624
Poruke: 640
*.adsl.net.t-com.hr.



Profil

icon ulaz>sortiranje>izlaz20.06.2005. u 11:53 - pre 229 meseci
Ovo bi predstavljalo kod za citanje postojece datoteke:

Code:

program ulaz;
uses crt;
var a:file;
     b:string;
begin
clrscr;
assign(a,'c:\podaci.txt');
reset(a);
read(a,b);
write(b);
close(a);
readln;
end.


Ovo sortiranje podataka:
Code:

program sortiranje;
uses crt;
var i,j,n:integer;
    t,y:string;
begin
clrscr;
writeln('koliko imena:');
readln(n);
for j:=1 to n do
begin
readln(y[j]);
end;

for i:=n-1 downto 1 do
       for j:=1 to i do begin
                       if y[j]>y[j+1] then
                         begin
                                      t[j]:=y[j];
                             y[j]:=y[j+1];
                             y[j+1]:=t[j];
                          end;
                         end;

for j:=1 to n do
begin
writeln(y[j]);
end;
readln;
end.



Code:


A ovo bi bio ispis:

program izlaz;
uses crt;
var a:file;
     b:string;
begin
clrscr;
assign(a,'c:\podaci.txt');
reset(a);
seek(a, filesize(a));
write(a, sortirane podatke);
readln;
end.




Sad me zanima onaj prvi kod...kako ucitati podatke iz datoteke od prvog reda pa do zadnjega (while not (eof) blabla) te ih pritom odmah sortirati, te staviti u izlaz.txt-to ce onda vjerovatno biti rewrite(izlaz) jer ne postoji...Znaci ova tri programa stavit cu u jedan pa ce biti 3 procedure, i onda ih u glavnom dijelu pozvati po redu???
Znaci pitanje je kako ucitati podatke iz prvog do zadnjeg reda te ih pritom odmah sortirati..
 
Odgovor na temu

cassey
Andreja Ilic
Nis

Član broj: 57788
Poruke: 188
212.200.11.*



+1 Profil

icon Re: ulaz>sortiranje>izlaz20.06.2005. u 13:21 - pre 229 meseci
Nisam bas razumeo pitanje...
Prvo Reset se ne korsiti za pisanje podataka u fail. U tvom kodu za upisivanje u dadoteku si koristio Reset a moras da koristis ReWrite, tj. da rezimiram:
[1] Reset = otvori vec postojecu dadoteku i iz nje se mogu samo citati podaci
[2] ReWrite = ukoliko takve dadoteke nema, on je napravi i otvori za upisivanje podataka u nju (ne i citanje). Ukoliko ona vec postoji onda on sve iz nje izbrise i pocinje u nju da upisuje od pocetka
[3] Append = ukoliko takve dadoteke nema. on je napravi i otvori za upisivanje. Ukoliko ona postoji, on ne brise podatke iz nje, vec pocinje njeno upisivanje od zadnjeg reda (dopunjuje je)...

Sto se tice tvog pitanja, pa ako sam te dobro shvatio ti samo treba da ih spojis njih tj. samo ne tvom programu za sortiranje ne ucitavas podatke i ne stampas ih...
(mrzelo me da ispravljam tvoj kod pa sam lupio moj)

Code:

{
PROGRAM: QuickSort
SLOZENOST: O(N log N)
}
program QuickSort;
const
  MaxN = 1000;
var
  a: array [1.. MaxN] of LongInt;
  n: LongInt;
  f, g: Text;

  procedure InPut;
  begin
    Assign (f,'niz.in');
    Reset (f);
    Read (f, n);
    for i := 1 to n do Read (f, a [i]);
    Close (f);
  end;

  procedure Sort (l, d: LongInt);
  var
    tmp, pivot, i, j: LongInt;
  begin
    if (l < d) then begin
      pivot := a [(l + d) DIV 2];
      i := l; j := d;
      repeat
        while (a [i] < pivot) do Inc (i);
           while (a [j] > pivot) do Dec (j);
           if (i <= j) then begin
             tmp := a [i]; a [i] := a [j]; a [j] := tmp;
             Inc (i); Dec (j);
           end;
      until (i > j);
      Sort (l, j);
      Sort (i, d);
    end;
  end;

  procedure OutPut;
  var
    i: LongInt;
  begin
    Assign (g, 'niz.out');
    ReWrite (g);
    for i := 1 to n do Write (g, a[ i], ' ');
    Close (g);
  end;

begin
  InPut;
  Sort (1, n);
  OutPut;
end.



Math is like love. A simple idea but it can get complicated.
 
Odgovor na temu

Passwd

Član broj: 54624
Poruke: 640
*.adsl.net.t-com.hr.



Profil

icon Re: ulaz>sortiranje>izlaz20.06.2005. u 15:20 - pre 229 meseci
Jos da radi
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: ulaz>sortiranje>izlaz20.06.2005. u 15:40 - pre 229 meseci
Ako koristis samo stringove onda ti Delphi moze uraditi sve
Format fajla bi trebao da bude ovakav

PERA
SIMA
DJURA
.
.
.

Znaci svako ime u svom redu i onda napises kod za recimo kad se klikne dugme
Code:
procedure Button1Click(Sender: TObject);
var
  S: TStringList;
begin
  S := TStringList.Create;
  S.LoadFromFile(ImeFajla);
  S.Sort;
  S.SaveToFile(ImeFajla);
  S.Free;
end;

Mnooogo lako, bree
 
Odgovor na temu

Passwd

Član broj: 54624
Poruke: 640
*.adsl.net.t-com.hr.



Profil

icon Re: ulaz>sortiranje>izlaz20.06.2005. u 16:19 - pre 229 meseci
Stvarno lako, al se spremam na natjecanje iz pascala pa moram u njemu vjezbat :)
A u delphiu sam poceo citat o nasljedjivanju, o konstruktorima i destruktorima ;)
 
Odgovor na temu

Toyo

Član broj: 45193
Poruke: 227
*.kovnet.co.yu.



+1 Profil

icon Re: ulaz>sortiranje>izlaz20.06.2005. u 17:06 - pre 229 meseci
Ajde ovako naslepo bez provere:

Code:

var
 f:text;
 niz: array[1..100] of string;
 i,j, duz: integer;
 t: String;
begin
 assign(f, 'ulaz.txt');
 reset(f);
 duz:=0;
 while not eof(f) do
  begin
    inc(duz);
    readln(f, niz[duz]);
  end;
  close(f);
  for i := duz-1 downto 1 do
    for j := 1 to i do
     if niz[j]>niz[j+1] then
       begin
         t := niz[j];
         niz[j]:= niz[j+1];
         niz[j+1] := t;
       end;
  assign(f,'izlaz.txt');
  rewrite(f);
  for i := 1 to duz do
    writeln(f, niz[i]);
  close(f);
end.



E sad jedno pitanje: Kako mislis da ides na takmicenje, kada ne znas da ucitas jednu obicnu text datoteku u niz? :)))) (mala sala)
 
Odgovor na temu

cassey
Andreja Ilic
Nis

Član broj: 57788
Poruke: 188
212.200.11.*



+1 Profil

icon Re: ulaz>sortiranje>izlaz20.06.2005. u 17:52 - pre 229 meseci
Citat:
Srki_82
Znaci svako ime u svom redu i onda napises kod za recimo kad se klikne dugme
Code:
procedure Button1Click(Sender: TObject);
var
  S: TStringList;
begin
  S := TStringList.Create;
  S.LoadFromFile(ImeFajla);
  S.Sort;
  S.SaveToFile(ImeFajla);
  S.Free;
end;

Mnooogo lako, bree ;)


Sve je to lepo, ali po meni nebi trebalo nikada koristiti vec gotove algoritme za sortiranje koji su dati u sastav program (npr. i u C++ se moze odmah napisati qsort pa niz i on ga automatski sortira). Zasto? Prvo, kod je trivijalan i za njegovo kucanje je potrebno 2-3 minuta, a drugo ukoliko neko ne poznaje kod (koliko god to bilo tesko) kako ce on sortirati npr. jedan niz u rasticem poretku, a ukoliko su neka dva elementa ista onda se gleda njihova velicina u nekom drugom nizu (npr. pri sortiranju koordinata po X pa po Y)...
Math is like love. A simple idea but it can get complicated.
 
Odgovor na temu

cassey
Andreja Ilic
Nis

Član broj: 57788
Poruke: 188
212.200.11.*



+1 Profil

icon Re: ulaz>sortiranje>izlaz20.06.2005. u 17:54 - pre 229 meseci
Sto se tice samog algoritma pogledaj na "Art of Programming :: [Teorija algoritama] Skup poznatih algoritama i struktura podataka"... Tu ti je sve objasnjeno (by Srdjan Krstic)

Math is like love. A simple idea but it can get complicated.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: ulaz>sortiranje>izlaz20.06.2005. u 18:42 - pre 229 meseci
@cassey: ali moras priznati da nema svrhe izmisljati toplu vodu. Ako builtin funkcija radi posao nema potrebe pisati novu.
 
Odgovor na temu

Toyo

Član broj: 45193
Poruke: 227
*.kovnet.co.yu.



+1 Profil

icon Re: ulaz>sortiranje>izlaz20.06.2005. u 18:57 - pre 229 meseci
Slazem se sa Srki-jem, mada ne znam ni sam zasto, ali uvek napisem svoju max ili min funkciju iako takva vec postoji implementirana. :)
 
Odgovor na temu

Passwd

Član broj: 54624
Poruke: 640
*.adsl.net.t-com.hr.



Profil

icon Re: ulaz>sortiranje>izlaz20.06.2005. u 19:10 - pre 229 meseci
Dobro, nemojte se prepucavati
Ovako, treba napisati program koji ucitati ime i prezime od N osoba, a zatim ispisati po abecedi:
prvo ime
prvo prezime
drugo ime
drugo prezime
....
Evo test primjer
1.ime i prezime:Matija Matijevic
2.ime i prezime:Ana Zrinjac

E sada izlaz:
Ana
Matijevic
Matija
Zrinjac

Ok-to sam napravio ali potrebno je da se osoba spomene SAMO jednom, znaci ako smo spomenuli ANU necemo spomenuti i ZRINJAC jer je to jedna te ista osoba...
Znaci trebao bi izlaz biti:
Ana
Matijevic

Evo program koji sortira i ispise ali spomene svaku osobu 2 puta, pa ako neko zna kako to ispravit neka me samo orijentalno uputi a ne da RIJESI zadatak

Code:

program sortiranje;
uses crt;
var i,j,n:integer;
    ime,prezime,t:array [1..50] of string;
begin
clrscr;
writeln('Koliko osoba:');
readln(n);
clrscr;
for j:=1 to n do
begin
clrscr;
writeln(j,'.ime:');
readln(ime[j]);
writeln(j,'.prezime:');
readln(prezime[j]);
end;

for i:=n-1 downto 1 do
for j:=1 to i do
begin
if ime[j]>ime[j+1] then
begin
t[j]:=ime[j];
ime[j]:=ime[j+1];
ime[j+1]:=t[j];
end;
end;

clrscr;
for i:=n-1 downto 1 do
for j:=1 to i do
begin
if prezime[j]>prezime[j+1] then
begin
t[j]:=prezime[j];
prezime[j]:=prezime[j+1];
prezime[j+1]:=t[j];
end;
end;


for j:=1 to n do
begin
writeln(ime[j]);
writeln(prezime[j]);
end;



readln;
end.
 
Odgovor na temu

cassey
Andreja Ilic
Nis

Član broj: 57788
Poruke: 188
212.200.11.*



+1 Profil

icon Re: ulaz>sortiranje>izlaz20.06.2005. u 19:37 - pre 229 meseci
Pa samo ih nekako pamti, tj. vezi ime i prezime jedne osobe, pa kad prvi put naidjes stampaj (ime ili prezime, sta god to bilo), a drugi preskoci...
Srecno...
Math is like love. A simple idea but it can get complicated.
 
Odgovor na temu

Toyo

Član broj: 45193
Poruke: 227
*.kovnet.co.yu.



+1 Profil

icon Re: ulaz>sortiranje>izlaz20.06.2005. u 19:37 - pre 229 meseci
Evo necu vise da ti pisem programe, jer tako neces nista nauciti.

Pomoc:

Za sva ko ime i prezime moras da odredis njegov ID koji je jedinstven (znaci uvedes neki brojac)

Za Matiju ce biti:

1. Matija
1. Matijevic
2. Ana
2. Zrinjac
...

Kada sortiras imena ili prezimena sortiras ih zajedno sa tim ID (vezujes ih za njega).

Kada Zelis da ispises naprimer 2.Zrinjac, moras da proveris da li je pre toga u nizu imena iznad trenutnog indeksa koji ispisujes vec bilo ispisano ime sa ID-om.
Ako nije ispises i tako redom.
 
Odgovor na temu

Passwd

Član broj: 54624
Poruke: 640
*.adsl.net.t-com.hr.



Profil

icon Re: ulaz>sortiranje>izlaz20.06.2005. u 20:41 - pre 229 meseci
Idem sad to napravit pa vam javim
 
Odgovor na temu

Passwd

Član broj: 54624
Poruke: 640
*.adsl.net.t-com.hr.



Profil

icon Re: ulaz>sortiranje>izlaz20.06.2005. u 21:23 - pre 229 meseci
Ne ide

 
Odgovor na temu

Toyo

Član broj: 45193
Poruke: 227
*.kovnet.co.yu.



+1 Profil

icon Re: ulaz>sortiranje>izlaz20.06.2005. u 21:51 - pre 229 meseci
Pa u tvoj program treba da dodas samo 10-ak linija koda.
 
Odgovor na temu

cassey
Andreja Ilic
Nis

Član broj: 57788
Poruke: 188
212.200.11.*



+1 Profil

icon Re: ulaz>sortiranje>izlaz21.06.2005. u 00:48 - pre 229 meseci
Napravi niz i na pocetku ga popuni sa . Ukoliko iskoristis necije ime ili prezime ti ga postavi na . Stampaces samo ukoliko je , pa onda ga promenis, tako da ces uvek jednom stampati ime ili prezime jedne osobe...
Math is like love. A simple idea but it can get complicated.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: ulaz>sortiranje>izlaz

[ Pregleda: 2792 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.