Zadání příkladu
Program vyzve uživatele k zadání celých kladných čísel. Čísla budou oddělena mezerou (případně enterem). Čísel může být libovolný počet. Čísla budou ukončena nulou. Program zjistí nejdelší rostoucí úsek posloupnosti čísel a vypíše délku tohoto nejdelšího úseku. Např. pro zadaná čísla „5 7 1 3 4 8 7 7 9 0“ vypíše „4“, protože nejdelší rostoucí úsek čísel je „1 3 4 8“ a jeho délka je čtyři.
Řešení ve Free Pascalu
program rostouciUsek; uses crt; var delkaAkt, delkaNej, cislo, prevCislo: integer; begin clrScr; delkaAkt := 0; delkaNej := 0; prevCislo := 0; write('Zadejte kladna cela cisla oddelena mezerou ukoncena nulou: '); read(cislo); while cislo <> 0 do begin if cislo > prevCislo then begin delkaAkt := delkaAkt + 1; end else // mame novy usek begin if delkaAkt > delkaNej then delkaNej := delkaAkt; delkaAkt := 1; end; prevCislo := cislo; read(cislo); end; // pro pripad, ze by nejdelsi usek byl na konci if delkaAkt > delkaNej then delkaNej := delkaAkt; writeln('Delka nejdelsiho rostouciho useku je: ', delkaNej); repeat until keyPressed; end.
Spuštění programu
Zadejte kladna cela cisla oddelena mezerou ukoncena nulou: 5 7 1 3 4 8 7 7 9 0 Delka nejdelsiho rostouciho useku je: 4
Poznámky
Program si musí pamatovat aktuálně načtené číslo a předchozí číslo. Porovnáním těchto dvou čísel zjistí, zda posloupnost je stále rostoucí, či již začíná nová posloupnost. Co se týká samotné rostoucí posloupnosti, tak je zapotřebí si pamatovat pouze délku té nejdelší posloupnosti a délku aktuálně čtené posloupnosti. Tyto délky se porovnají, jakmile skončí aktuální posloupnost. Je třeba dát pozor na inicializaci proměnných a jejich správné naplnění a další jejich změny. Při řešení je třeba dát pozor i na to, když nejdelší rostoucí úsek bude na konci posloupnosti čísel.