Kvadratická rovnice-najdi chybu v syntaxi kodu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kvadratická rovnice-najdi chybu v syntaxi kodu – C / C++ – Fórum – Programujte.comKvadratická rovnice-najdi chybu v syntaxi kodu – C / C++ – Fórum – Programujte.com

 

Counter0
Newbie
3. 1. 2013   #1
-
0
-

Zdravím,

prosím vás o pomoc, zadání... 

"Jsou dány hodnoty koeficientů A,B,C kvadratické rovnice A*x2+B*x+c=0.Vypočítejte reálné kořeny této rovnice" 

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(){
    int a,b,c;
    float x1,x2;
    double D;
    printf("Zadejte koeficient pro A:\n\n");
    scanf("%i",&a);
    printf("Zadejte koeficient pro B:\n\n");
    scanf("%i",&b);
    printf("Zadejte koeficient pro C:\n\n");
    scanf("%i",&c);
    if(a==0 && b==0 && c==0)printf("rovnice ma nekonecne mnoho reseni\n\n");
    if(b==0 && c!=0)printf("Zadana rovnice je linearni a nema reseni v mnozine realnych cisel\n");
    if(b!=0)printf("Zadana rovnice je linearni a reseni je %.2f",(-c)/b);
    else
    D=(b*b)-(4*a*c);
    if(D>0)
    
    x1=((-b)+sqrt(D))/(2*a);
    x2=((-b)-sqrt(D))/(2*a);
    
    printf("rovnice ma dva realne koreny %.2f a %.2f",x1,x2);
    
    if(D<0)printf("Rovnice nema realne reseni");
    
    if(D==0)
    x1=(-b)/2*a;
    printf("Rovnice ma dvojnasobny koren %f \n\n",x1);
    system("pause");
    return 0;
}

Předem děkuji za pomoc.

Nahlásit jako SPAM
IP: 93.99.183.–
KIIV
~ Moderátor
+43
God of flame
3. 1. 2013   #2
-
0
-

fuj to je zase prasecina takhle pred obedem...

doporucuju jednu vec - nastudovat "bloky" kodu a if - else .... !!

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Counter0
Newbie
3. 1. 2013   #3
-
0
-

#2 KIIV
ok

Nahlásit jako SPAM
IP: 93.99.183.–
3. 1. 2013   #4
-
0
-

Podmínky se vyhodnucují zleva, jak se zachová tohle, nevím:

if(a==0 && b==0 && c==0)

proto nešetřím závorkama

if((a==0) &&  (b==0) && (c==0))

pak ještě sémantická chyba:

if(b==0 && c!=0)printf("Nema reseni v mnozine realnych cisel\n");

chceš tvrdit, že 3x^2 - 5 = 0 nemá řešení?

hu

Nahlásit jako SPAM
IP: 195.178.67.–
KIIV
~ Moderátor
+43
God of flame
3. 1. 2013   #5
-
0
-

#4 hlucheucho
zrovna 3x^2 + 5 = 0 mi pripada jako ukazka toho nemit reseni (v oboru realnych cisel)...  D = 0 - 4*3*5  :)  ale nejspis ses jen uklepl ve znamenku u c

EDIT: a uz si to stihl i opravit :)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
3. 1. 2013   #6
-
0
-

#5 KIIV
všiml jsem si, že druhá odmocnina z -5/3 by nešla, znaménko zradilo.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
vitamin+8
Grafoman
3. 1. 2013   #7
-
0
-

#4 hlucheucho
Podmienka obsahuje vyraz ktory sa vyhodnocuje na zaklade toho z coho sa sklada. V c/c++ ma kazdy operator prioritu a smer vyhodnocovania. Takze nemozes povedat ze podmienka sa vyhodnocuje zlava do prava:

int a, b, c;
if( a = b = c = 1)/*...*/;   //toto sa vyhodnoti zprava do lava

Vyraz:

if(a==0 && b==0 && c==0)

sa sice vyhodnocuje zlava do prava, ale operator == ma vyzsiu prioritu ako &&, cize je totozny s vyrazom ktory si napisal ty:

if((a==0) &&  (b==0) && (c==0))

pripadne:

if( ( (a==0) &&  (b==0) )  && (c==0))

To len pre upresnenie   .

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
3. 1. 2013   #8
-
0
-

#7 vitamin
tou prioritou jsem si nebyl jistý, děkuji za vysvětlení.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
3. 1. 2013   #9
-
0
-

dělal bych to asi takhle (není to odladěný):

if ( a == 0)	//rovnice je bud linearni nebo nema reseni
{
	if ( (b == 0) && (c != 0) )
	{
		//rovnice nema reseni
	}
	else
	   if( (b == 0) && (c == 0) )
	   {
		//resenim je kazde realne cislo
	   } 
	   else
	   {
		//rovnice je linearni, resim linearni rovnici
	   }
}
else
{
	//kvadraticka rovnice
}

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Luckin
~ Anonymní uživatel
57 příspěvků
3. 1. 2013   #10
-
0
-

Neni náhodou rovnice lineární pokud a == 0 ?
Pokud b == 0 ale a != 0 pak je pořád kvadratická nebo se mýlim.

Nahlásit jako SPAM
IP: 195.113.181.–
3. 1. 2013   #11
-
0
-

#10 Luckin
je-li a==0 (první if mého ukázkového kódu), jsou 3 možnosti:
- nemá žádný kořen pří b == 0 a současně c != 0 (druhý If), např. 5 = 0
- řešením je každé reaálné číslo x při b==0 a současně c==0 (třetí if), protože dostaneš 0 = 0
- má jeden kořen při b!=0 (první else), např.  3x = 15 nebo 2x + 6 = 11

je-li a!=0 (poslední větev else), je to kvadratická rovnice bez ohledu na to, zda obsahuje lineární člen a/nebo absolutní člen

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Luckin
~ Anonymní uživatel
57 příspěvků
3. 1. 2013   #12
-
0
-

#11 hlucheucho
Sry, já koukal na ten jeho původní kód, tam to takhle nemá.

Nahlásit jako SPAM
IP: 89.103.156.–
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, 23 hostů

Podobná vlákna

Kvadratická rovnice — založil Patrik Hlobil

Kvadratická rovnice — založil pazdy

Kvadratická rovnice — založil Kaalc

Kvadraticka rovnice — založil Hanmir1

Kvadratická rovnice — založil rdckONE

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ý