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
Zdravím, potřeboval bych poradit. Mám texovej soubor ve kterým je pár vět a úkolem je vytvořit program, který načte tento soubor a určí, která věta je nejkratší a která věta je nejdelší. Nevím si vůbec rady, takže budu rád za každou radu.
Offline
↑ qwertprd:
Zdravím, v jakém formátu jsou věty ukládány? Bez této informace se dá říct jen "obecné" řešení, které ti asi moc nepomůže.
Je totiž třeba rozdíl mezi
První věta má pět slov. Druhá věta jich už ale má více, dokonce devět. Tato věta je krátká.
a
První věta má pět slov. Druhá věta jich už ale má více, dokonce devět. Tato věta je krátká.
Offline
↑ qwertprd:
Vždy porovnávaj len dve vety. Veta končí bodkou :)), a či sa majú pripočítavať aj biele znaky si už nepovedal...
Offline
↑ hradecek:
Proč porovnávat jen dvě věty? Možná jsem tu myšlenku nepochopil...
Jinak algoritmus bych si navrhnul takhle:
delka_nejdelsi_vety := 0;
nejdelsi_veta = "";
delka_nejkratsi_vety := (něco velkýho, třeba MAXINT)
nejkratsi_veta = "";
while(veta = nacti_vetu(vstup)){
if(veta.delka > delka_nejdelsi_vety){
nejdelsi_veta = veta;
delka_nejdelsi_vety = veta.delka;
}
if(veta.delka < delka_nejkratsi_vety){
nejkratsi_veta = veta;
delka_nejkratsi_vety = veta.delka;
}
}
A je jen potřeba naprogramovat čtení věty, což už nebude takovej problém. Záleží v čem se to má napsat (C#/Java je to pár řádků, v Pascalu malinko práce navíc)...
Offline
Souhlasím s řešením od ↑↑ Jookyn:.
K zadání: Aby ti mohl někdo pomoci více než jen s algoritmem, je potřeba uvést více informací: jazyk, formát jak jsou uložené v txt (co řádek věta nebo konec tečkou..otazníkem?? atd.) A délkou věty myslíš počet slov nebo počet znaků? Počítají se do délky i bílé znaky?
Offline
Díky za reakce k mému problému. Abych to upřesnil. Mým úkolem je to naprogramovat v Pascalu, věty jednoduché, žádná souvětí a jsou zakončeny tečkou. Délka věty je počet znaků, takže i mezery. ↑ qwertprd:
Offline
↑ qwertprd: Proste to načítaj do stringu a udržuj si ich dĺžku. Nič ťažké. Skonči, keď príde bodka a choď na ďalšiu.
Offline
V tom případě já bych to řešil takto:
program packalScitaPismenka;
var vstup:string;
var iterator,max,min,cur:integer;
begin
vstup:='Ahoj ja jsem nejdelsi veta a pocitame se vcetne tecky na konci. A ja nejkratsi.';
cur:=0;
max:=0;
min:=length(vstup);
iterator:=1;
while(iterator <= length(vstup))
do
begin
cur:=cur+1;
if '.' = vstup[iterator]
then
begin
if(cur>max)
then max:=cur;
if(max>cur)
then min:=cur;
cur:=0;
end;
iterator:=iterator+1;
end;
writeln('max: ',max);
writeln('min: ',min);
readln;
end.Je tam akorát potřeba dopsat načtení ze souboru.
-edit: a pokud chceš vypsat i která to je, tak tam prostě jen přidáš dvě proměnné a upravíš IF(y)
Offline