Pascal - délka nejdelšího rostoucího úseku

Datum vydání: 2012-10-24 06:28:19; aktualizováno: 2012-10-26 10:59:49

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.

Další informace