Ahoj.Nemůže mi někdo pomoct s jedním příkladem v pascalu.Nevím jak na to.Pomocte..
Zadání:
Sestavte program, který zjistí, zda ve vstupním poli celých kladných čísel existuje souvislý úsek, jehož součet je roven zadané hodnotě HS a všechny takovéto úseky vypíše.
Vstup: - vstupní pole P – ze souboru CISLA1.TXT
- hledaný součet HS – vstup z klávesnice
Výstup: - pozice, na které hledaný úsek zacina (index) a výpis hodnot, popřípadě oznámení, že úsek nelze nalézt.
Fórum › Pascal
úkol
no hádám že si ty čísla budeš muset ukládat do pole... a pak asi projet všechny ty hodnoty...
něco jako že bys měl začátek a konec intervalu který sčítáš... když by si měl sumu menší než HS tak by si přičetl další v pořadí
pokud bys dostal číslo větší než HS tak posuneš první index o 1 a odečteš hodnotu na jeho pozici...
pokud dostaneš přesně HS tak asi taky posun začátku o jedna a pokračuješ dále
To martin :
Pole čísel deklaruješ pomocí konstrukce array[min_index..max_index] of nějaký číselný typ, třeba word.
Číslo HS přečteš z klávesnice příkazem Readln.
Soubor připravíš ke čtení příkazy Assign a Reset. Načítání čísel vyřešíš pomocí příkazu Read v cyklu typu While (nebo Repeat, pokud si jsi jist, že soubor není prázdný) s ukončovací podmínkou Eof(soubor). V nějaké pomocné proměnné si pamatuj, kolik čísel jsi přečetl (na začátku ji vynuluj a při každém Read ji zvyš o 1). Nakonec soubor zavři příkazem Close.
Hledání sekvencí:
Levým ukazováčkem si ukaž na první číslo v poli.
Cyklus 1:
Pravým ukazováčkem ukaž na stejné místo, na které ukazuje levý.
Zapamatuj si, že součet je zatím 0.
Teď Cyklus 2 (While nebo Repeat, celý je uvnitř Cyklu 1):
- K součtu přičti číslo, na které ukazuje pravý ukazováček.
- Pokud se součet rovná HS, vypiš na obrazovku čísla od toho pod levým ukazováčkem po to pod pravým ukazováčkem (cyklus typu For, příkazy Write a Writeln). Pokud se nerovná, nedělej nic.
- Pravý ukazováček posuň o jedno číslo dál.
Cyklus 2 ukonči, pokud už je součet větší než HS nebo pokud se pravý ukazováček dostal za poslední číslo v poli.
Levý ukazováček přesuň za pravý.
Cyklus 1 ukonči, když se levý ukazováček dostane za poslední číslo v poli.
Teď si místo poloh ukazováčků představ indexy (pořadová čísla prvků pole) a pro ukládání součtu si deklaruj pomocnou proměnnou a už by neměl být problém přeložit to do pascalštiny :-) (a kdyby jo, hoď sem svůj zdroják a napiš, kde přesně se ti objevuje jaká chyba).
Moje stránka.
Nebyla to náhodou Malirka? S tou už jsem po mailu řešil úkoly dva (v obou případech totéž co tady, i ty zdrojáky byly odsud okopírované) a jak tak koukám, moje vysvětlování už ji přestalo bavit a teď hledá někoho, kdo jí to napíše celé :smile5:
Moje stránka.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Moderátoři diskuze