dostala jsem za úkol kvadratické rovnice v C++, ale envíím si rady...kdo by mi mohl poradit??Můj přesný ukol zní takto : Kvadratické rovnice)zadávají se kořeny a do souboru se tisknout příslušné rovnice a naopak; naprogramovány jsou obě možnosti, program se jednou na začátku zeptá , kterou z možností chceme zvolit; lze zadávat kořeny celočíselné, nebo jeden ve tvarz zlomku - na formát se opět program zeptá jednou na začátku).Děkuji moc za odpověĎ
Fórum › C / C++
Potřebuji urychleně radu jak udělat program v C++
#1 blechacek31
"jak udělat program v C++"
1. přečíst si a pochopit zadání
2. pokud nejsou v hlavě, vyhledat potřebné vzorečky a informace k řešenému problému
3. Navrhnout postup řešení (algoritmus) a ten si třeba nakreslit pomocí vývojového diagramu
4. zapsat algoritmus pomocí příkazů programovacího jazyka - například C++
5. odladit program, nebo-li odhalit a opravit případné chyby
Ok, zkusíme pomoc s tou dekompozicí. Já jsem to pochopil následovně:
Po spuštění, jestli to má bejt teda v konzoli:
1) Chcete zadávat celou rovnici (a), nebo kořeny (b)
2) Chcete zadávat čísla celočíselně?
(3a) Zadejte kvadratický člen: --pokud chce ve tvaru zlomku, bude následovat přečtení čitatele a jmenovatele-- znač A
(4a) Zadejte lineární člen : -- to samé -- znač B
(5a) Zadejte absolutní člen: ---- znač C
(6b) udělej z toho float čísla (A_cit/A_jm), pokud to byly zlomky !!
(7a) Nyní spočtu diskriminant podle D=b^2 - 4(a*c) .. když D<0 => je záporný, rovnice nemá v R řešení, pokud D == 0 existuje jenom jedno řešení a tedy x1 == x2
(8a) výpočtem x1,2 = (-b+-sqrt(D))/(2a) získáš 2 kořeny -> x1 = -b+sqrt(..) a x2 = -b-sqrt(..) ..
--------
(3b) "Zadejte kořen x1:" -- pode toho jestli chce zadávat zlomky, vyzve k zadání čitatele/jmenovate - znač x1_cit/x1_jm
(4b) "Zadejte kořen x2:" -- pode toho jestli chce zadávat zlomky, vyzve k zadání čitatele/jmenovate - znač x2_cit/x2_jm
(5b) udělej z toho float čísla (x1_cit/x1_jm), pokud to byly zlomky !!
(6b) podle vzorce (x-x1)*(x-x2) vypočítáš hodnoty lineárního a absolutního členu ->
lineární: x1+x2, absolutní x1*x2
4) výsledky vytiskneš do souboru. Výsledky jsou v (a) - kořeny rovnice x1,x2. V (b) je to celá kvadratická rovnice.
Logicky teda když nejdřív zvolíš možnost (a) s rovnicí x^2+2x+3 měly by ti vyjít výsledky x1=2, x2=1. když tyhle data podstrčíš možnosti (b), musí ti vyjít rovnice x^2+2x+3.
Je možný že to mám moc zbytečně složitý, nebo že sem na něco zapomněl, ale snažil jsem se to popsat tak aby to bylo srozumitelný. Musíš si uvědomit že správná dekompozice problému je to, o čem je programování :) Držím palec
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
no a v tom programu by to bylo konkrétně jak??celý napsaný??
stímto programem dělám poprvé a moc se v něm neorientuju :(
promin, v C++ nedělám .. ale to by neměl být zase takový problém, pokud jsi měla alespon pár hodin programování v tom. Myslím že jsem to napsal poměrně dost podrobně. Upozornuju že nejsem C++, ale něco si snad ještě pamatuju.
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
//interakce s uzivatelem, jestli chce cisla zadat ve zlomkach
int ve_zlomkovem_tvaru()
{
int volba;
cout << "(1) Chci zadat koef. ve zlomkovem tvaru" << endl;
cout << "(2) Chci zadat celoèíselné koeficienty" << endl;
cout << " Volba: ";
cin >> volba;
return volba;
}
int main(int argc, char *argv[])
{
int volba, zlomek, citatel, jmenovatel;
float kvadr, lin, abs;
cout << "Program pro vypocet kvadraticke rovnice:" << endl;
cout << "(1) Zadani rovnice" << endl;
cout << "(2) Zadani korenu" << endl;
cout << " Volba: ";
cin >> volba;
if (volba == 1){
zlomek = ve_zlomkovem_tvaru();
cout << "Rovnice ve tvaru ax^2 + bx + c" << endl;
if (zlomek == 1){
cout << "Kvadraticky clen(a) - citatel: ";
cin >> citatel;
cout << "Kvadraticky clen(a) - jmenovatel: ";
cin >> jmenovatel;
kvadr = citatel / jmenovatel;
cout << "Linearni clen(b) - citatel: ";
cin >> citatel;
cout << "Linearni clen(b) - jmenovatel: ";
cin >> jmenovatel;
lin = citatel / jmenovatel;
cout << "Absolutni clen(c) - citatel: ";
cin >> citatel;
cout << "Absolutni clen(c) - jmenovatel: ";
cin >> jmenovatel;
abs = citatel / jmenovatel;
}
if (zlomek == 2){
cout << "Kvadraticky clen(a): ";
cin >> kvadr;
cout << "Linearni clen(b): ";
cin >> lin;
cout << "Absolutni clen(c): ";
cin >> abs;
}
int diskriminant = lin*lin - 4*(abs*kvadr);
int x1,x2;
if (diskriminant > 0){
x1 = (-lin+sqrt(diskriminant))/(2*kvadr);
x2 = (-lin-sqrt(diskriminant))/(2*kvadr);
cout << "koreny jsou x1 = " << x1 << ", x2 = " << x2;
system("PAUSE");
}
if (diskriminant == 0){
int x1 = (-lin+sqrt(diskriminant))/(2*kvadr);
cout << "Jeden dvojnasobny koren je x1,2 = " << x1;
system("PAUSE");
}
if (diskriminant < 0){
cout << "Rovnice nema v R reseni" << endl;
system("PAUSE");
}
else {
cout << "Nezadali jste cislo 1,2. Program bude ukoncen" << endl;
system("PAUSE");
}
}
if (volba == 2){
zlomek = ve_zlomkovem_tvaru();
float x1,x2;
if (zlomek == 1){
cout << "Prvni koren(x1) - citatel: ";
cin >> citatel;
cout << "Prvni koren(x1) - jmenovatel: ";
cin >> jmenovatel;
x1 = citatel / jmenovatel;
cout << "Druhy koren(x2) - citatel: ";
cin >> citatel;
cout << "Druhy koren(x2) - jmenovatel: ";
cin >> jmenovatel;
x2 = citatel / jmenovatel;
}
if (zlomek == 2){
cout << "Prvni koren(x1): ";
cin >> x1;
cout << "Druhy koren(x2): ";
cin >> x2;
}
lin = x1+x2;
abs = x1*x2;
cout << "Kvadraticka rovnice x^2 + " << lin << "x + " << abs << endl;
system("PAUSE");
}
else cout << "Nezadali jste cislo 1,2. Program bude ukoncen" << endl;
}
Zapisování do souboru si budeš muset vyřešit sama. Tohle sem sesmolil tedko, nemám momentálně nainstalovaný C++ kompilátor, takže ti to bohužel nepovím, jestli to běží, ale mělo by. Není to komentovaný, neb sou to samý výpisy a zadávání z klávesnice .. kdybys něco nevěděla tak napiš
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
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
Jak udělat tento program? — založil Aleš
Jak udělat tento program ?? prosím — založil w3Rbie
Jak udělat tenhle program? nevím si rady — založil pítr
Prosím o radu jak na tento program — založil David
Potřebuji radu — založil Johnyyy
Moderátoři diskuze