Potrebujem pomoc s jednym maturitnym zadanim.
jeho znenie: Peter má zavírený počítač vírusom, ktorý v každom odoslanom maily otočí jednotlivé slová odzadu. Vytvorte program, ktorý:
• bude obsahovať funkciu Otoc, ktorá otočí zadaný reťazec
• prečítajte z textového súboru postupne celý mail a vypíšte ho na obrazovku
• pomocou vami vytvorenej funkcie otočte jednotlivé slová v maily.
Predpokladajme, že text je napísaný korektne a slová sú oddelené práve jednou medzerou. Každá veta končí bodkou a je práve na konci riadku. Text neobsahuje čiarky.
VSTUP : yrbod ned.
misorp sav o einalsaz hcynavodazop vodalkod.
VÝSTUP: dobry den.
prosim vas o zaslanie pozadovanych dokladov.
NEVIEM SI S TYM DAT RADY!!!. prosim ak ma niekto radu ako sa dostat k jednotlivym slovam v riadku poradte!!!..
Fórum › Pascal
MATURITNÉ ZADANIE!!!
Ze zadání není jasné, jestli se má otočený mail vypsat na obrazovku nebo do souboru. Takže předpokládám, že na obrazovku. Taky nevím, jestli chceš vypisovat i původní text nebo jenom ten otočený - předpokládám, že jenom otočený. Dále předpokládám, že řádky v souboru budou mít maximálně 255 znaků a vejdou se do proměnné typu String.
Když si to rozebereme taktikou "shora dolů", dostaneme zhruba toto (řádek je String, soubor je Text):
- Otevři vstupní soubor (Assign, Reset).
- Opakuj, dokud nejsi na konci souboru (While, Eof):
-- Načti ze souboru jeden řádek (Readln).
-- Otoč v načteném řádku jednotlivá slova (rozebereme dále).
-- Vypiš upravený řádek na obrazovku (Writeln).
- Zavři vstupní soubor (Close).
Otočení slov (budou potřeba dva pomocné indexy (typ Byte) Začátek a Konec pro hledání začátků a konců slov a jeden pomocný řetězec (string) na ukládání jednotlivých slov) může vypadat třeba takhle:
- Oba indexy (Začátek i Konec) nastav na první znak řádku (:=1).
- Opakuj, dokud Začátek není na konci řádku (while, Length):
-- Začátek posunuj doprava tak dlouho, dokud nepřejdeš mezery. Zastav se s ním na prvním znaku, který není mezera. (While, Inc)
-- Když Začátek dojel na tečku, skonči (Break).
-- Konec nastav na Začátek.
-- Konec posunuj doprava tak dlouho, dokud ukazuje na písmeno. Zastav se, když znak za ním bude mezera nebo tečka. (While, Inc)
(teď ti Začátek ukazuje na první písmeno slova a Konec na poslední)
-- Zkopíruj úsek od Začátku do Konce do pomocného řetězce (:=, Copy).
-- Nakopíruj pomocný řetězec znak po znaku zpátky do řádku, ale obráceně (For, :=).
-- Začátek nastav o jednu pozici za Konec.
Jednotlivé znaky z řetězce přečteš stejným způsobem jako z běžného pole: znak:=řetězec[pozice]. Pozice může nabývat hodnot od 1 do Length(řetězec). Obráceně to jde taky: řetězec[pozice]:=znak, znak na dané pozici se tím přepíše.
Samozřejmě tohle není jediná možnost, šlo by to i jinak (např. přes Pos a Delete, jak doporučuje Krychlik).
Program ti samozřejmě celý nenapíšu (maturuješ ty, ne já), tohle by ti mělo stačit. Jestli ne, ptej se.
Moje stránka.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Zadanie v c — založil matej123
Zadanie v c++ — založil Limdumo
Vypis - zadanie... C — založil Neo015
C# a .NET zadanie — založil Lisieu
Zadanie do školy — založil Lubo
Moderátoři diskuze