Výpočet kořenů kvadratické rovnice – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Výpočet kořenů kvadratické rovnice – C / C++ – Fórum – Programujte.comVýpočet kořenů kvadratické rovnice – C / C++ – Fórum – Programujte.com

 

xXx
~ Anonymní uživatel
55 příspěvků
29. 9. 2009   #1
-
0
-

Dobrý den, začínám s Céčkem a nastal jeden problém, v tomto kodu mi nevychází kořeny x1 a x2. Diskriminant vychází správně, pak nastává zlom a hází to špatné čísla.. Čím to je?

#include <stdio.h>

#include <math.h>

int main()
{
int a, b, c;
double dis, x1, x2;

printf("Zadejte cleny kvadraticke rovnice \"a\", \"b\" a \"c\".\n\n");
scanf("%i%i%i",&a,&b,&c);
printf("%i %i %i\n",a,b,c);
dis=(pow(b,2))-4*a*c;
x1=(-b+sqrt(dis))/2*a;
x2=(-b-sqrt(dis))/2*a;
printf("Diskriminant je %lf \nx1 je %lf \nx2 je %lf \n", dis, x1, x2);
system("PAUSE");
return 0;
}

Nahlásit jako SPAM
IP: 217.196.213.–
xXx
~ Anonymní uživatel
55 příspěvků
29. 9. 2009   #2
-
0
-

Chyběly mi tam závorky ve jmenovateli.. Offtopic!

Nahlásit jako SPAM
IP: 217.196.213.–
jjub
~ Anonymní uživatel
4 příspěvky
29. 9. 2009   #3
-
0
-

To xXx : Jak tak na to koukám, tak nemáš ošetřený záporný diskriminant (pak nemá rovnice reálné kořeny, musíš je hledat v komplexní množině), takže pak házíš jako argument funkci sqrt() záporné číslo (odmocnina ze záporného čísla v reálné množině neexistuje), proto to hází nesmyslná čísla. Pro D >= 0 mi to funguje (ikdyž by nebylo od věci při D = 0 oznámit, že se jedná o jeden dvojnásobný kořen, ale to už je maličkost :))...

Nahlásit jako SPAM
IP: 83.208.48.–
xXx
~ Anonymní uživatel
55 příspěvků
29. 9. 2009   #4
-
0
-

To jjub : Jasně že to bylo nedořešené, ale nemělo cenu dál se tím zabývat když mi nefungovalo ani to.. :) Teď jsem chtěl ošetřit i ty ostatní dva případy a zase jsem v úzkých. Neustále mě to háže na else na konci, ikdyž vyjde diskriminant 0 nebo menší než nula, hodí mě to na diskriminant>0 a také je tam uložena 0 ale před podmínkama je výsledek diskriminantu správný.. Poradíte?



#include <stdio.h>

int main()
{
int a, b, c;
double dis, x1, x2;

printf("Zadejte cleny kvadraticke rovnice \"a\", \"b\" a \"c\".\n");
printf("a= ");
scanf("%i", &a);
printf("b= ");
scanf("%i", &b);
printf("c= ");
scanf("%i", &c);

dis=(pow(b,2))-4*a*c;
x1=(-b+sqrt(dis))/(2*a);
x2=(-b-sqrt(dis))/(2*a);

if(dis=0)
printf("Diskriminant je 0. Rovnice ma jedno reseni, x je %fl\n.", x1);
else
{
if(dis<0)
printf("Diskriminant je mensi nez 0. Rovnice nema reseni v mnozine realnych cisel!\n");
else
printf("Diskriminant je %lf \n x1 je %lf \n x2 je %lf \n", dis, x1, x2);
}
system("PAUSE");
return 0;
}

Nahlásit jako SPAM
IP: 217.196.213.–
xXx
~ Anonymní uživatel
55 příspěvků
29. 9. 2009   #5
-
0
-

To xXx : A už jsem si chybu zase našel. = místo ==. :smile5:

Nahlásit jako SPAM
IP: 217.196.213.–
KIIV
~ Moderátor
+43
God of flame
29. 9. 2009   #6
-
0
-

To xXx : kdyz das if ( dis=0 ) tak se priradi do dis 0 a if bere 0 jako nepravdu...
tudiz nikdy nemuze nastat ze to bude neco jineho

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Root
~ Anonymní uživatel
21 příspěvků
30. 9. 2011   #7
-
0
-

Zdravim. Potrebuju poradit s podminkou jak by mela vypada kdyz chci osetrit zadani vstupu tak aby pri zadani pismen vypsal program hlasku .. nemuzu porad prijit na tu podminku :-( tak prosim.

Nahlásit jako SPAM
IP: 89.102.171.–
Matrix17
~ Anonymní uživatel
300 příspěvků
30. 9. 2011   #8
-
0
-

scanf má jako návratovou hodnotu počet ÚSPĚŠNĚ přečtených údajů. V když načítáš např. tři takhle:

scanf("%d %d %d", &a, &b, &c);

Tak ti scanf může vrátit číslo 0 - 3 podle toho kolik si jich přečetl. Podle toho se pak můžeš zařídit...

Nahlásit jako SPAM
IP: 195.113.207.–
Peppy0
Stálý člen
30. 9. 2011   #9
-
+1
-
Zajímavé

Budem zlý: Ak zadám a = 0 ?   

Nahlásit jako SPAM
IP: 85.135.138.–
Qt, QML, C++
N-Gin
~ Anonymní uživatel
1 příspěvek
17. 1. 2018   #10
-
0
-

Pokud by bylo a=0, nejedná se o kvadratickou rovnici a odporuje to zadání úkolu.
 

Nahlásit jako SPAM
IP: 2a00:1028:96c1:f59e:cc:a3...–
17. 1. 2018   #11
-
0
-

Koeficienty a, b, c mohou být reálná čísla.

hu

Nahlásit jako SPAM
IP: 193.86.81.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý