Dobrý den, ve škole jsem dostal zadanou seminární práci a již delší dobu si s ní lámu hlavu, mohl by mi někdo z vás poradit jak s tím (Pascal moc neobládám). Za každou pomoc dekuji.
Zadání:
Výpočet kořenů kvadratické rovnice II. V hlavním programu bude vstup dat z klávesnice, kontrola vstupních dat a výpis řešení. Výpočet řešení (dva reálné, jeden dvojnásobný a dva komplexně sdružené) bude realizován formou samostatné funkce umístěné v jednom samostatně překládaném modulu (unitě). Pro předávání výsledků navrhněte vlastní datovou strukturu. Program bude umožňovat opakované zadávání parametrů kvadratické rovnice. Zadané hodnoty a řešení budou přidávány do textového souboru s názvem "kvadrov.log".
Fórum › Pascal
Výpočet kvadr. rovnice se zápisem výsledku do souboru
Chceš to dělat v Pascalu nebo v Delphi? Jestli v Delphi, tak na to existuje samostatné fórum o pár řádků výš.
Navíc v Delphi nejde jen tak použít vstup z klávesnice (procedura Readln), ale musí se komplikovaně přes textové pole (Edit) a následně ruční převod na číslo (Strtofloat, Strtoreal nebo tak něco, přesné názvy si nepamatuju). Podobně nefunguje výpis na obrazovku přes Writeln, musíš to převést na řetězec a ten vložit do nějakého objektu v okně (další textové pole apod.). A výpočet musíš volat v nějaké události, třeba po kliku na tlačítko, a ne jednoduše "start - načti hodnoty - spočítej rovnici - vypiš výsledky - konec".
Výpis do souboru by měl být v obou případech podobný. Budeš potřebovat proměnnou typu Text (tj. textový soubor, v Delphi se jmenuje Textfile) a procedury Assign (přiřadí proměnnou k souboru s daným jménem), Rewrite (otevře soubor pro zápis), Write (něco do souboru zapíše), Writeln (totéž co Write, ale ještě potom zapíše konec řádku) a Close (zavře soubor).
Do textového souboru můžeš zapisovat řetězce a čísla podobně jako když je vypisuješ na obrazovku.
Více o práci se soubory třeba tady: http://mircosoft.ic.cz/texty/ZAKLADY.TXT (na konci kapitoly o datových typech).
Ohledně kódu:
type koreny=array[1..6] of integer;
- co má tohle být? Potřebuješ vrátit dvě komplexní čísla (reálné číslo je obecně komplexní číslo s nulovou imaginární částí), čili 4 reálná. Takže array[1..4] of real. Ale pole jako návratovou hodnotu funkce podporuje až Freepascal, takže jestli budeš dělat v Turbu, tak to budeš muset vyřešit čtyřmi parametry volanými odkazem (se slovem Var): procedure vypocet_korenu(ua,ub,uc:real; var re1,im1,re2,im2:real).
Potom ti ještě chybí ošetřit situaci, kdy rovnice vůbec nemá řešení (třeba 0*x^2+0*x+5=0, i to může zlomyslný uživatel zadat).
Jinak je algoritmus v pořádku.
Moje stránka.
Dělaný to má bejt jako Console aplication v Delphy ( takže jestli jsem mimo správný tema tak se omlouvám ) zatím jsme s tím s kámošem pokročili. Posílám to jako přílohu... Kdyžtak jestli se na to někdo můžete mrknout a zkontrolovaz jestli tam jsou ošetřený všechny možnosti.... Předem díky
Ne, v pohodě, jseš ve správném fóru. Konzolové aplikace v Delphi se od klasického pascalu liší jenom málo, tudíž writeln a readln normálně funguje.
(elegantnější se mi ale zdá použít Freepascal, který je s Delphi kompatibilní a jeho standardní IDE vypadá jako klasický pascal, to je ale jedno)
Struktura record je podle mě nevhodně navržená - místo pole by se sem mnohem lépe hodil record. Něco jako
type koreny = record
pocet_reseni:byte;
r1,r2,r3,r4:real;
end;
Taky bys měl uživateli dovolit, aby mohl zadat koeficient A jako 0, normálně rovnici vypočítat a nehudrovat, že nejde o kvadratickou rovnici.
Jo, a v zadání stojí, že hodnoty a výsledky budou přidávány (nikoliv předávány) do souboru kvadrov.log
Tudíš musíš připisovat do existujícího souboru, jenže ty pokaždé vytváříš nový.
To Laaca : Díky za odpověď, program ve kterym se to má tvožit bohužel neovlivním, ten si vymyslel učitel a trvá na něm, co se týká tý nevhodný struktury tak jsem vycházel z prací, které jsme za celý rok dělali a tam se bohužel víc funkcí.... neoblevilo takže dělám s tím co bych ml znát.... No a co se týká posledních dvouch připomínek tak ty jsou zcela trefný, ale bohužel Pascalu nějak nevládnu, takže nevím jak na to :-( Nemohli by jste se na to někdo mrknout a přepsat to? Díky moc
Rovnice s koeficientem a=0 je normální lineární rovnice s jedním řešením, nevidím v tom nic těžkého: bx+c=0 -> x=-c/b.
Pro připisování na konec stačí textový soubor otevřít procedurou Append (místo Rewrite).
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
Výpočet rovnice — založil MaxDJs
Výpočet kořenů kvadratické rovnice — založil xXx
Výpočet diskirminantu a kořenů k-rovnice — založil Montezo
Probel se zapisem do souboru — založil LJ1024
Zápis výsledku do souboru — založil Honza
Moderátoři diskuze