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
Stránky: 1
Zdravím, mám za úkol dát dohromady prográmek, který určí nejvyšší číslo v posloupnosti a jeho pozici, případně všechny pozice, když je tam víckrát. Určování max. hodnoty už mám, ale pořád se mi nedaří určit ty pozice. Víte někdo jak nato? Díky
Offline
Potřebuješ o jedno pole víc, třeba pole indexy. V něm si budeš uchovávat indexy nalezených maxim. Když najdeš číslo, které je menší než současné maximum, nic neuděláš. Když najdeš číslo, které je stejně velké jako maximum, přidáš tento index do pole indexy. Když najdeš číslo větší než maximum, vymažeš všechny prvky pole indexy a vložíš do něj aktuální index nového maxima.
Offline
↑ tominga:
A v čem uchováváte tu sekvenci? Měla by jít použít stejná datová struktura jako pro tu sekvenci. Potřebuješ zkrátka něco, kam si můžeš uložit více intů, nemusí to být nutně pole.
Offline
↑ Lukee:
tak to už je na mě trochu moc :) jsem úplný novic. začal jsem do hotovýho kódu cpát pole a od té doby to mám celý rozbitý a nejde mi to zkompilovat. to je konec. vůbec jsem před tím nepoužil pole, jen jsem deklaroval proměnné a pak jsem for cyklem zjistil nejvyšší číslo, které se uložilo do jiné proměnné, ta se na konci vypíše.
program MaxPosloup; var C, N, MAX, i : Integer; {C: zadan čísla, N: zadaný počet čísel v posloupnosti, MAX: nejvyšší hodnota v posl.} begin writeln ('Zadejte počet čísel v posloupnosti.' ); readln (N); writeln ('Zadejte čísla posloupnosti. '); MAX := -MaxInt; {nejnižší možné číslo pro porovnávání v daném oboru} for i:=1 to N do begin read (C); if C>MAX then MAX := C; end; write ('Nejvyšší číslo posloupnoti je ', MAX, '.'); end.
to je můj výtvor, z toho prostě nedokážu vymáčknout pozici
Offline
resenim je napriklad nasledujici kod, nicmene je v nem pouzito dynamicke pole pro ukladani indexu maximalni hodnoty. nevim, jak moc jsi seznamen s pascalem (programovanim), tudiz nevim, jak moc je tento kod pro tebe srozumitelny. za poznamku urcite stoji rici, ze dynamicka pole jsou indexovana od nuly.
program MaxPosloup; var C, N, MAX, i, j : Integer; index: array of Integer; begin writeln ('Zadejte pocet cisel v posloupnosti.' ); readln (N); writeln ('Zadejte cisla posloupnosti. '); MAX := -MaxInt; for i:= 1 to N do begin read (C); if C>MAX then begin j := 0; MAX := C; SetLength(index, j+1); index[j] := i; end; if C = MAX then begin j := j + 1; SetLength(index, j+1); index[j] := i; end; end; write('Nejvetsi cislo posloupnosti je ', MAX, ' nachazejici se na pozici(ch) '); for i := 1 to Length(index) - 1 do write(index[i], ' '); end.
Offline
jaj, ted se divam na tvuj prispevek ↑ tominga:: "tak to musím ještě dostudovat pole, sakra." takze dynamicke pole mozna bude celkem velky orisek. nebo ne?
Offline
↑ tominga: okay, jen doplnim: dynamicke pole je vlastne "obycejne" staticke pole, jehoz velikost lze behem programu menit. to staticke pole neumoznuje, jeho velikost je pevne dana jiz v dobe prekladu. dynamicke pole meni velikost pomoci SetLength(pole, pocet prvku), dulezite je vedet, ze je indexovane od nuly, tedy prvni index v poli ma index nula, druhy prvek ma index jedna, ..., posledni prvek ma index N-1, kde N je pocet prvku v poli
Offline
Stránky: 1