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, mám problém s pascalem-konkrétně potřebuji sestavit program, kterému se zadá 10 čísel.
Z těchto deseti čísel má vypsat nejdelší souvislý lichý řetězec (počet lichých číslic v něm obsažených).
Př: Vstup: 1 2 3 1 1 1 2 3 3 2
Program vypíše 4
Nějak jsem to rozpracoval, ale dál si nevím rady
program lichy_retezec;
uses crt;
var cislo, i, maximum, citac, k :integer;
begin
writeln ('zadej cislo');
readln (cislo);
if cislo mod 2 <>0 then
begin
citac:=citac+1;
maximum :=citac+1;
end;
for i:=1 to 10 do
begin
readln (cislo);
if cislo mod 2 <>0 then
begin
citac:=citac+1;
writeln ('citac je' , citac);
end
else citac:=0;
end;
(*
if citac >maximum then maximum:=citac;
writeln ('nejdelsi je ' , maximum);
readln;
*)
end.
Tou částí mezi (**) si nejsem jist, píše hlouposti. Právě proto sem píšu. Nevím, jak ošetřit průběžné ukládání čítače , který čítá obsah řetězce lichých čísel (při přerušení -sudé číslo-se vynuluje a začne odznova). Čítač mi pouze vypisuje na obrazovku.
Díky za rady
Offline
Máš pravdu, to jde řešti např. tak že na konec programu připojíš tu část, kterou jsi v původním kódu ohvězdičkoval (tj. ještě jednou se porovná aktuální čítač s maximem). Anebo se ukládání čítače do hodnoty maxima dá přesunout z části "else" přímo do části "if", čili tam, kde se hodnota čítače zvyšuje, pak už by ohvězdičkovaný dodatek neměl být potřeba.
Offline