Helpnete s úkolem – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Helpnete s úkolem – Pascal – Fórum – Programujte.comHelpnete s úkolem – Pascal – Fórum – Programujte.com

 

21. 11. 2007   #1
-
0
-

Ahoj všichni,mám malý problém,neak nemám tušení jak na to...............

Na vstupu je dán seznam nejvýše 100 jmen lidí. Každé jméno je uvedeno na samostatném řádku, je zapsáno pouze pomocí velkých písmen anglické abecedy, skládá se z křestního jména a příjmení, které jsou odděleny právě jednou mezerou. Vstupní seznam je ukončen řádkem obsahujícím jediný znak *.

Příklad takového seznamu:



BEDRICH SMETANA

LEOS JANACEK

ANTONIN DVORAK

*



Napište program, který všechna tato jména uspořádá podle abecedy a seřazená jména vypíše na obrazovku. Jména se řadí abecedně v první řadě podle příjmení, v případě shodného příjmení pak podle křestního jména.



Návod:

- můžete předpokládat, že žádné jméno není delší než 30 znaků, můžete je tedy ukládat do proměnných typu string[30]

- při čtení stringů ze vstupu nezapomeňte používat proceduru readln, nikoli read

- pomocí funkce POS nebo pomocí indexování stringu lze vyhledat pozici mezery ve jméně; pomocí dvojího zavolání funkce COPY je pak možné získat a uložit si zvlášť křestní jméno a zvlášť příjmení každého člověka (pro uložení jednoho jména člověka lze například použít záznam tvořený dvěma znakovými řetězci představujícími křestní jméno a příjmení)

- při porovnávání znakových řetězců tvořených pouze velkými písmeny anglické abecedy lze jednoduše využít standardní relační operátory nad typem string

- uvědomte si, že nemůžete jednoduše porovnávat načtené stringy s celými jmény lidí, neboť na vstupu se zadává vždy nejprve křestní jméno a pak příjmení člověka (při porovnávání celých jmen by se tedy provádělo řazení přednostně podle křestních jmen).
nevíte někdo jak na to?

Nahlásit jako SPAM
IP: 82.202.12.–
Mircosoft+1
Věrný člen
21. 11. 2007   #2
-
0
-

Deklaruj si dve pole retezcu (array of string).
Do prvniho nacti jednotlive radky ze souboru - cyklus, ktery pobezi tak dlouho, dokud nenacte radek s *.
U kazdeho radku zjisti pozici mezery (na to je funkce Pos - viz help), pomoci funkce Copy si z radku vytahni text pred mezerou (jmeno) a za mezerou (prijmeni) a zapis je do druheho pole v obracenem poradi (prijmeni, mezera, jmeno).
Ted muzes to druhe pole setridit beznym zpusobem porovnavani stringu (if jeden>druhy then je v abecede dal), protoze mas prijmeni vepredu.
Nakonec to zase otocene prekopiruj zpatky do prvniho pole a to vypis na obrazovku.

Samozrejme to jde i bez druheho pole - porovnavani jmen muzes udelat rovnou tak, ze najdes pozici mezery, prectes prijmeni, porovnas prijmeni, a kdyz jsou stejna, porovnas jeste jmena.

Kazdopadne budes potrebovat tohle (a nejspis nic jineho):
text, reset, readln, repeat - until, for, array, string, <, >, =, :=, pos, copy
vsechno najdes prehledne popsane v helpu, opisovat ho sem nebudu.

Nahlásit jako SPAM
IP: 147.32.164.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Laaca
~ Anonymní uživatel
225 příspěvků
21. 11. 2007   #3
-
0
-

Elegantnější je třídit už v průběhu načítání. Načítat do spojového seznamu nebo ještě lépe do binárního stromu.

Nahlásit jako SPAM
IP: 82.208.37.–
tom*p0
Stálý člen
26. 11. 2007   #4
-
0
-

To Laaca : Jak se dá v Pascalu načítat do spojového seznamu nebo binárního stromu?

Nahlásit jako SPAM
IP: 217.115.246.–
Don't waste your time, or time will waste you.
Mircosoft+1
Věrný člen
Nahlásit jako SPAM
IP: 89.176.249.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
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, 4 hosté

Podobná vlákna

Problém s úkolem c++ — založil Michal

Pomoc s ukolem — založil Bronsky

Problém s úkolem c++ — založil Michal

Pomoc s úkolem — založil Malirka

Moderátoři diskuze

 

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