Čaute potřeboval bych poradit jak udělat tohle: Program načte větu do proměnné typu string a vypsat ji s původním pořadím slov, v každém slově je obrácené pořadí znaků.
Fórum › Pascal
Program do školy
To Pepi : Podle mezer třeba?
Prostě udělejte ten úkol za mne?
Slovem se většinou rozumí posloupnost znaků složených z písmen (případně číslic). Tedy taková posloupnost, která je ohraničena buď počátkem/koncem celé věty nebo nebo nějakým jiným znakem než je písmeno či čislice.
Alternativně si můžeš definovat nějakou množinu znaků, které tvoří oddělovače (mezera, tečka, čárka, středník, pomlčka, ...). A posloupnost znaků, která je tvořena jinými znaky než oddělovači a je ohraničena z obou stran oddělovači nebo začíná za zátku věty či končí na konci věty, je slovo.
má to dělat víc věcí ale s tím obrácením jenom znáků slov si nevím rady.
program vet;
uses Crt;
var veta:string;
var i,mezera,pocet:integer;
begin
ClrScr;
write ('Zadej vetu: ');
readln (veta);
writeln (veta);
writeln ('Delka vety je ',length(veta),' znaku');
for i:=length(veta) downto 1 do write (veta[i]);
writeln ('.');
Mezera:=1;
Pocet:=0;
while (Length(Veta)>0)and(Mezera<>0) do begin
Mezera:=Pos(' ',Veta);
if Mezera<>1 then Inc(Pocet);
Delete(Veta,1,Mezera);
end;
writeln ('Pocet slov je ',pocet);
readkey;
end.
mam cyklus repeat-until nech je to trochu tazsie ten sa bude opakovat kym zaciatok stringu nebude rovny dlzke vety ked najdem medzeru tak si vytiahnem to slovo do pomocnej premennej a cez cyklus for to otocim a vsadim do povodnej vety
alebo druhe riesenie otocim celu vetu naraz a popresuvam potom slova
jak "jake prikazy"?.. musis pouzit vhodnej algoritmus...
jinak pri trose snahy bys to zvladl prohazet primo v retezci.. najdes zacatek slova, pak konec slova.. a prohazujes postupne pismena na spravnejch pozicich.. jak skoncis tak najdes dalsi slovo.. a zase stejne
Trocha pseudokódu:
výstupní řetězec:='';
repeat
Přeskoč a na konec výstupního řetězce ulož všechny znaky, ze kterých se slova neskládají (mezery, čárky apod.), a zastav se na prvním znaku, ze kterého ano (písmena apod.). Zapamatuj si jeho pozici - to je začátek slova. Nebo jestli žádný takový znak nenajdeš a skončíš na konci vstupního řetězce, skonči (Break).
Pokračuj dál, dokud nedojdeš na poslední znak slova, tj. poslední znak, ze kterého se může skládat slovo, za kterým je buď zase oddělovací znak nebo už tam končí řetězec. Zapamatuj si jeho pozici - to je konec slova.
Funkcí Copy si slovo vykopíruj do samostatné proměnné (string), aby se ti s ním lépe pracovalo.
Otoč ve slově pořadí písmen.
Přidej slovo na konec výstupního řetězce.
until jsi na konci vstupního řetězce.
Čtení jednotlivých znaků z řetězce se dělá takhle: znak:=řetězec[pozice]. Pozice může nabývat hodnoty od 1 do length(řetězec). Obdobným způsobem se dá do řetězce i zapisovat, ale to asi nebudeš potřebovat.
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
Program do školy... — založil Mokky
Program do školy — založil Sue
Program do školy c++ — založil Adam
Program do školy c++ — založil ZeVrajProgramator
Program do školy v c++ na VSB — založil danieldorda
Moderátoři diskuze