Lazarus programovanie – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Lazarus programovanie – Pascal – Fórum – Programujte.comLazarus programovanie – Pascal – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
muča0
Duch
16. 4. 2014   #1
-
0
-

#7 progman

Napíšte program, ktorý načíta nami zadanú postupnosť mien a zoradí ju podľa abecedy.

Mohol by mi s tým niekto pomôcť myslím že niečo už mam ale chýba mi jadro?

Vopred ďakujem!

var a:array[1..100] of string;

  i,n:integer;
begin
  writeln('Napis pocet mien');
  readln(n);
  writeln('Pis mena');
  for i:=1 to n do readln (a[i]);
  .
  .
  .
    writeln('Poprehadzovane mena su:');
    for i:=1 to n do writeln(a[i]);
    readln;
end.

Nahlásit jako SPAM
IP: 178.143.136.–
Reklama
Reklama
p3can
~ Anonymní uživatel
312 příspěvků
17. 4. 2014   #2
-
+1
-
Zajímavé

var a:array[1..100] of string;

  i,n:integer;
begin
  writeln('Napis pocet mien');
  readln(n);
  writeln('Pis mena');
  for i:=1 to n do readln (a[i]);

projdeme cele pole a najdeme v nem prvni "nejnizsi jmeno" tj prvni jmeno podle abecedy. az toto jmeno najdeme tak ho vymenime s prvni pozici. pak projmene zbytek pole tj. od 2 do na najdeme druhe nejnizsi jmeno zase az ho najdeme tak ho vymenime s pozici 2 a tak pokracujeme dokonce.

jinymy slovy

od x=1 do n budeme delat to ze

    poziceminimalniho prvku nastavime na x;

    projdeme zbytek pole tj od y=x+1 do n

      a pokud prvek[y] ma nizsi hodnotu nez prvek[poziceminima] tak poziceminima zmenime na y

    po kazdem celem projiti pole vymenime prvky prvek[x] s prvek[poziceminima]

a je to :)

na porovnani stringu pouzij treba tuto funkci

http://www.freepascal.org/docs-html/rtl/sysutils/ansicomparestr.html


    writeln('Poprehadzovane mena su:');
    for i:=1 to n do writeln(a[i]);
    readln;
end.

Nahlásit jako SPAM
IP: 77.92.213.–
muča0
Duch
17. 4. 2014   #3
-
0
-

#2 p3can
#7 progman

V prvom rade ďakujem za odpoveď ale stále neviem ako nájdem v poli mien to meno ktoré je prvé podľa abecedy?

Môžete mi niekto napísať ten program ja už nemám síl :)

Nahlásit jako SPAM
IP: 178.143.136.–
hlucheucho+10
Posthunter
17. 4. 2014   #4
-
0
-

prohlédni si ASCII tabulku.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
muča0
Duch
17. 4. 2014   #5
-
0
-

#4 hlucheucho
#2 p3can
#7 progman

Stále to nejde... som aspoň blízko?

var a:array[1..100] of string;
  m:string;

  j,i,n:integer;
begin
  writeln('Napis pocet mien');
  readln(n);
  writeln('Pis mena');
  for i:=1 to n do readln (a[i]);
  repeat
  for j:=1 to n-1 do begin
  if a[j]>a[j+1]then m:=a[j+1];
  a[j+1]:=a[j];
  a[j]:=m;
  end;
  until a[j]<a[j+1];
  writeln('************************************');
   writeln('Poprehadzovane mena su:');
    for i:=1 to n do writeln(a[i]);
    readln;
end.

Nahlásit jako SPAM
IP: 178.143.136.–
hlucheucho+10
Posthunter
17. 4. 2014   #6
-
+1
-
Zajímavé

nejdřív si napiš algoritmus. V podstatě jde o řazení řetězců podle prvního písmene, u těch, kde je první písmeno stejné pak podle druhého.....  Začni seřazením jen podle prvního písmene. K tomu potřebuješ umět získat ordinální číslo (prvního) znaku - znak je vyjádřen nějakým číslem (viz ASCII tabulka). Dále nějaký algoritmus řazení, třeba buble sort. Je to vlastně seřazení čísel. Asi bych nepřesouval celé řetězce, ale v pomocném poli bych si uspořádal indexy pole se jmény tak aby mi při výpisu šli uspořádaně - pole se jmény jako "halda" a pomocné pole s indexy které tvoří "řád" podle kterého se "halda přebere".

A ještě na závěr: Google dovede najít spoustu věcí. 

Nahlásit jako SPAM
IP: 195.178.67.–
muča0
Duch
17. 4. 2014   #7
-
0
-

#6 hlucheucho
Ok už som to napísal nejako a ide to. :)

Tu je finálna verzia: 

var a:array[1..100] of string;
  n,i,j:integer; m:string;

begin
writeln('Zadaj pocet mien: ');
readln(n);
for i:=1 to n do begin
  writeln(i,'.meno: ');
  readln(a[i]);
end;
Writeln('usporiadane mena su: ');
for i:=1 to n do
for j:=1 to n-1 do
if a[j]>a[j+1] then begin
  m:=a[j];
  a[j]:=a[j+1];
  a[j+1]:=m;
end;
for i:=1 to n do
writeln(a[i]);
readln;
end.

Nahlásit jako SPAM
IP: 178.143.136.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 16 hostů

Podobná vlákna

Lazarus — založil ProgDan

Lazarus help — založil kardon

Lazarus — založil Rampa

Lazarus a W8.1Pre — založil 7232

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý