Pascal - sortiranje zapisa iz datoteke

poruka: 19
|
čitano: 8.216
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
neaktivan
offline
Pascal pomoć

e ovako, trebao bih pomoc oko jednog zadatka iz pascala

naime, trebao bih napravit program koji bi sortirao iz jednog .txt filea u drugi txt file popis imena po abecedi

 

npr.

postoji Popis1.txt i u njemu je popis: Ivo Ivić, Mario Marić, Pero Perić, Ante Antić, Mirko Mirkić......      i postoji drugi Popis2.txt koji je prazan..

i sad treba napisat program u pascalu koji ce iz tog Popis1.txt u drugi txt file - Popis2.txt ispisati ta imena i sortrirati ih po abecedi

 

zvuci jednostavno i vjerovatno i je, al ne mogu nikako skuzit kak da to napravim

 

pa ako ima poznavatelja ovog danas rjetko koristenog jezika, bio bih zahvalan da mi malo pomognu

 

hvala unaprijed Osmijeh

"Prediction? Pain."
 
0 0 hvala 0
16 godina
offline
Pascal pomoć

Zna li netko neku dobru stranicu sa gotovim programima za FPC?Osmijeh 

Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
RE: Pascal pomoć

Pošalji nam kod koji si do sada napisao, pa da vidimo di što fali..

17 godina
neaktivan
offline
RE: Pascal pomoć

@plavi08: ima ponešto ovdje: http://freshmeat.net/tags/pascal

17 godina
neaktivan
offline
RE: Pascal pomoć
Black Deus Typhon kaže...

Pošalji nam kod koji si do sada napisao, pa da vidimo di što fali..

yo, eo sto do sad imam
znaci ono sto sam uspio je povuc iz Popis1.txt u Popis2.txt imena, to je laksi dio, al ono sto me hebe je kak sad sortirat to po obecednom redu (u Popis1.txt ima recimo 10ak prezimena i imena, a treba ih sortirat po prezimenu), i jos treba pazit na nasa slova čćžšđ
PROGRAM Sortiranje;
USES  Crt;
CONST N = 100;
VAR   Ulaz, Izlaz : text;
      S, S1, S2   : string;
      A           : array [1.. N] of string;
      i, k        : integer;
BEGIN
  ClrScr;
  Assign (Ulaz,  'POPIS1.TXT');  Reset (Ulaz);
  Assign (Izlaz, 'POPIS2.TXT'); Rewrite (Izlaz);
  k := 0;
  WHILE not eof (Ulaz) DO BEGIN
    ReadLn (Ulaz, S);
    k := k +1;
    WriteLn (S);
    A[k] := S
    END;

  FOR i := 1 TO k DO BEGIN
    WriteLn (Izlaz, A[i]);
    WriteLn (A[i])
    END;
  Close (Ulaz); Close (Izlaz);
  ReadLn
END.
"Prediction? Pain."
16 godina
neaktivan
offline
RE: Pascal pomoć

Zato bih ti preporucio takozvani radix sort. Pogledaj na wikipediji. Upravo je fenomenalan u ovom slucaju. 

 

EDIT: Tj, radix sort ce ti raditi unutar sekunde cak i kad je N=100,000. 

Sa štovanjem, brahle!
Poruka je uređivana zadnji put uto 9.6.2009 17:17 (brahle).
17 godina
neaktivan
offline
RE: Pascal pomoć
brahle kaže...

Zato bih ti preporucio takozvani radix sort. Pogledaj na wikipediji. Upravo je fenomenalan u ovom slucaju. 

 

EDIT: Tj, radix sort ce ti raditi unutar sekunde cak i kad je N=100,000. 

 ok, thx stari, pogledat cu mal taj radix sort
"Prediction? Pain."
17 godina
online
Pascal pomoć

Nemoj se mučiti s radixom ili quicksortom za 10 imena.

Napravi standarni bubble sort i završi zadatak.

Moj PC  
1 0 hvala 1
16 godina
neaktivan
offline
RE: Pascal pomoć

Ili insertion sort kao alternativu bubble sortu. Također je vrlo jednostavan za implementaciju.

Link

16 godina
neaktivan
offline
RE: Pascal pomoć

Fora kod radix sorta je kaj ga je jednostavno modificirat da radi za nase znakove. 

Sa štovanjem, brahle!
17 godina
neaktivan
offline
Pascal pomoć

fala ljudi, pozabavit cu se mal tim, i proucit sve te sortove sto ste mi savjetovali, valjd cu skuzit jednog Smijeh

"Prediction? Pain."
 
0 0 hvala 0
15 godina
offline
Pascal pomoć

sam jedno pitanjce kako bi  u pascalu dakle da mi vadi treci korijen ja znam pomocu fora...al nije mi jasno kako se radi pomocu repeata i untila

?????

Coca-Cola je Najpoznatije piće, a ujedno i druga najpoznatija riječ na svijetu - odmah poslije riječi OK.Njezina je formula jedna od najvećih svjetskih tajni.U Brazilu se smatra da je Cola afrodizijak
Moj PC  
0 0 hvala 0
17 godina
offline
RE: Pascal pomoć
meluka kaže...

sam jedno pitanjce kako bi  u pascalu dakle da mi vadi treci korijen ja znam pomocu fora...al nije mi jasno kako se radi pomocu repeata i untila

?????

Zar postoji toliko jednostavan način? Možeš li ukratko opisati algoritam? Baš me zanima!

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
15 godina
offline
Pascal pomoć

program bug;
var n,i : integer;
begin
writeln('unesi broj');
readln(n);
for i:=1 to n do
 if i*i*i=n then writeln(i);
readln;
end.
e ali krivo sam nesto rekao, jer u zadatku pise samo prirodne brojeve ...ja sam kriv krivo sam pitanje postavio

Coca-Cola je Najpoznatije piće, a ujedno i druga najpoznatija riječ na svijetu - odmah poslije riječi OK.Njezina je formula jedna od najvećih svjetskih tajni.U Brazilu se smatra da je Cola afrodizijak
Moj PC  
0 0 hvala 0
17 godina
offline
RE: Pascal pomoć
meluka kaže...

program bug;
var n,i : integer;
begin
writeln('unesi broj');
readln(n);
for i:=1 to n do
 if i*i*i=n then writeln(i);
readln;
end.
e ali krivo sam nesto rekao, jer u zadatku pise samo prirodne brojeve ...ja sam kriv krivo sam pitanje postavio

Aha, ja sam pomislio da je nešto univerzalno :D

 

Ugl. ovako:

 

i := 0;

repeat

  i := i + 1;

until i*i*i = n;

writeln(i);

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
15 godina
offline
Pascal pomoć

a zapravo je isto kad pogledaš

Coca-Cola je Najpoznatije piće, a ujedno i druga najpoznatija riječ na svijetu - odmah poslije riječi OK.Njezina je formula jedna od najvećih svjetskih tajni.U Brazilu se smatra da je Cola afrodizijak
Moj PC  
0 0 hvala 0
17 godina
offline
Pascal pomoć

Pa slične su, razlika je utoliko što će se (tvoj) for izvršavati i nakon pronalaska, a ovaj until prekinuti po pronalasku.

 

No mogle bi se uz malu izmjenu napraviti identične verzije.

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
 
0 0 hvala 0
15 godina
offline
Pascal pomoć

e a jeli bi znao napraviti da bas da treci korijen ... od bilo kojeg broja???

Coca-Cola je Najpoznatije piće, a ujedno i druga najpoznatija riječ na svijetu - odmah poslije riječi OK.Njezina je formula jedna od najvećih svjetskih tajni.U Brazilu se smatra da je Cola afrodizijak
Moj PC  
0 0 hvala 0
17 godina
offline
Pascal pomoć

Pa, jedan algoritam koji je jednostavno implementirati za drugi korijen bi se - vjerojatno - mogao lako "proširiti" za 3.korijen (nisam pokušavao)

 

Ide ovako:

 

X = broj čiji korijen želiš

Y = neki nasumični broj (npr. 10)

P = 0

-------------------------------

P := X / Y

Y := (P + Y) / 2

ako je Y * Y dovoljno-jednak P, onda je Y korijen, ako ne - ponovi petlju

 

dovoljno-jednak je neka funkcija koju ćeš sam implementirati, a koja će - ovisno o tvojim željama - provjeriti je li razlika između 2 broja manja od željene (naime - iz više je razloga ideja izravnog uspoređivanja 2 decimalna broja operatorom jednakosti loša)

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice