Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Dobry den
mam zadan priklad :Vytvorte program, ktery ze vstupniho souboru cte vetu ukoncenou teckou.
Slova ve vete jsou oddelena jednou nebo nekolika mezerami. Program vytiskne
zadanou vetu, a dale vytiskne slova po jednom na radek usporadana podle
delky. Slova se stejnou delkou se vytisknou v poradi podle abecedy.
Tohle mi rozdeli vetu na slova a sepise mi je pod sebe ale nemzu prijd na to jak udelat to aby se mi seradily podle velikosti
a uz vubec ne podle abecedy ... prosim o radu
var
f:text;
zm:integer;
zn:char;
begin
writeln('Program rozdeli vetu na slova a seradi je pod sebe');
writeln('dle velikosti popripadne dle abecedy');
assign(f,'text.txt');
reset(f);
writeln;writeln;
writeln('Enter k pokracovani');
writeln('*******************');
readln;
writeln;
while not eof(f) do
begin
read(f,zn);
if (zn<>' ') and (zn<>'.') then
begin
write(zn);
zm:=0;
end
else begin
if zm=0 then
writeln;
zm:=zm+1;
end;
end;
writeln;writeln;
closefile(f);
writeln;writeln;
writeln('ENTER = KONEC');
readln;
end.
predem diky za odpoved :-)
Offline
↑ kedrik: Ahoj,
1. Prosím, dej ten kód do elementu CODE
2. Podle délky: Měl bych nějaké pomocné pole, kam bych to pořád přepisoval to porovnání, dokud by to nebylo EOF ve vstupním souboru. Stačí si vždycky zjistit délku slova a délku slova následujícího. Porovnáš a popřípadě prohodíš. No, prostě klasickej Bubble sort. Možná to není optimální, ale já bych to tak asi řešil...
3. Podle abecedy: No a tady bych asi využil nějakou funkci pro porovnání řetězců. Takže opět načteš první a následující slovo, hodíš to do porovnávací funkce, nevím možná strcmp a popřípadě prohodíš a pokračuješ dál.
Aha, takže jsem zjistil, že jsem Ti odpovídal tak trochu (víc) na něco jiného.
Ale návod tu je, ale upřesním. Ty stejně dlouhá slova bych si načetl do pomocného pole, včetně White space, aby jsi je pak mohl rozeznat. No a potom použiješ to pomocné pole + Bubble sort. Načteš první slovo a následující, hodíš je do funkce strcmp a popřípadě prohodíš a pokračuješ dál. Jo, ta funkce strcmp nepůjde, nejsme v C! Aha, takže zkus něco jako string compare Delphi zadat do Google.
Jinak, tyto algoritmy jsem nikdy nezkoušel a ani nevím, jak moc jsou složité. Stoprocentně existují jednodušší algoritmy na vyřešení Tvé úlohy.
Offline
↑ kedrik: RePRO to s tím CODE myslel tak, že kód, který vkládáš sem na fórum máš uzavřít mezi [CODE a [/CODE (na konci je samozřejmě ukončovací hranatá závorka). Nemusíš tam tyhle značky psát ručně, stačí daný kód označit a dole (pod oknem kam píšeš) kliknout na tlačítko CODE.
↑ RePRO: To chceš v tom pomocném poli přehazovat celá slova? To je trochu šílenost. Bohatě stačí pracovat s indexy toho pomocného pole, čili řadit pouze čísla.
Offline