Kvadraticka rovnice – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kvadraticka rovnice – C / C++ – Fórum – Programujte.comKvadraticka rovnice – C / C++ – Fórum – Programujte.com

 

Yurda
~ Anonymní uživatel
12 příspěvků
7. 11. 2012   #1
-
0
-

Dobry den hosi prosim o pomoc nako se stim trapim a nevim co delam spatne :( kvadraticka rovnice ma funguvoat pouze v R číslech.. Copak delam spatne ? 

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

void kvadr(int a, int b, int c, float *x1, float *x2);

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

printf("Kvadraticka rovnice je ve tvaru axx + bx + c\n");
printf("Zadejte promennou a: ");
scanf("%d",&a);
printf("Zadejte promennou b: ");
scanf("%d",&b);
printf("Zadejte promennou c: ");
scanf("%d",&c);

kvadr(a,b,c,&x1,&x2);

printf("koren x1 = %d\n", x1);
printf("koren x2 = %d\n", x2);

system("PAUSE");
return 0;
}

void kvadr(int a, int b, int c, float *x1, float *x2){
int D;
D = b*b - (4*a*c);

if(a!=0){
  if(D>0){
   *x1 = (-b - sqrt((double)D)/(2*a));
   *x2 = (-b + sqrt((double)D)/(2*a));
   printf("rovnice ma 2 reseni\n");
  }
  else if(D==0){
   *x1 = (-b - sqrt((double)D)/(2*a));
   printf("rovnice ma 1 reseni\n");
  }
}
}

Nahlásit jako SPAM
IP: 212.80.67.–
Yurda
~ Anonymní uživatel
12 příspěvků
7. 11. 2012   #2
-
0
-

Dobry den hosi prosim o pomoc nako se stim trapim a nevim co delam spatne :( kvadraticka rovnice ma funguvoat pouze v R číslech.. Copak delam spatne ? 

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

void kvadr(int a, int b, int c, float *x1, float *x2);

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

printf("Kvadraticka rovnice je ve tvaru axx + bx + c\n");
printf("Zadejte promennou a: ");
scanf("%d",&a);
printf("Zadejte promennou b: ");
scanf("%d",&b);
printf("Zadejte promennou c: ");
scanf("%d",&c);

kvadr(a,b,c,&x1,&x2);

printf("koren x1 = %d\n", x1);
printf("koren x2 = %d\n", x2);

system("PAUSE");
return 0;
}

void kvadr(int a, int b, int c, float *x1, float *x2){
int D;
D = b*b - (4*a*c);

if(a!=0){
  if(D>0){
   *x1 = (-b - sqrt((double)D)/(2*a));
   *x2 = (-b + sqrt((double)D)/(2*a));
   printf("rovnice ma 2 reseni\n");
  }
  else if(D==0){
   *x1 = (-b - sqrt((double)D)/(2*a));
   printf("rovnice ma 1 reseni\n");
  }
}
}
Nahlásit jako SPAM
IP: 212.80.67.–
crazy
~ Moderátor
+10
Grafoman
7. 11. 2012   #3
-
0
-

1) výsledek vypisuješ jako int ikdyž to jsou double

2) celý čitatel do závorky:

((-b - sqrt((double)D))/(2*a));
Nahlásit jako SPAM
IP: 147.32.31.–
All you need is vision and time.
Yurda
~ Anonymní uživatel
12 příspěvků
7. 11. 2012   #4
-
0
-

Dal jsem vsude double a kdyz nactu treba do a=1,b=10,c=3 tak se do a udeli naky neskutecne obrovsky cislo s mantisou a vypocte to uplnej nesmysl... Nemohl by jsi si to prosim hodit do compilatoru a kouknout co je tam blbe ?

Nahlásit jako SPAM
IP: 212.80.67.–
Yurda
~ Anonymní uživatel
12 příspěvků
7. 11. 2012   #5
-
0
-

#4 Yurda
+ jeste jsem upravil ten citatel jak jsi rikal

Nahlásit jako SPAM
IP: 212.80.67.–
KIIV
~ Moderátor
+43
God of flame
7. 11. 2012   #6
-
0
-

#5 Yurda
jeste by to float chtelo vypisovat jako float ne jako int

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Yurda
~ Anonymní uživatel
12 příspěvků
7. 11. 2012   #7
-
0
-

stale to nefunguje po zadani a,b,c  1 5 4  mi to vyhodi stejne cislo pro oba koreny cca -156111161.00000

Nahlásit jako SPAM
IP: 212.80.67.–
vitamin+8
Grafoman
7. 11. 2012   #8
-
0
-

#7 Yurda
mas chybu vpri vypocte x1 a x2, chybaju ti tam zatvorky

edit: tak crazy ti to uz napisal

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. "
7. 11. 2012   #9
-
0
-

u skutečné kvadr. rovnice lze očekávat a, b, c float. Kromě toho D (asi determinant) by měl být float. 

jak už bylo napsáno, máš chaos v závorkách, mělo by to být takto: 

*x1 = (-1*b-sqrt(D))/(2*a);

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Yurda
~ Anonymní uživatel
12 příspěvků
7. 11. 2012   #10
-
0
-

Vsechno jsem zmenil a porad to blbne. Determinant D jsem zmenil na double kdyz do nej nacitam doubly ale delam vsechno co mi tu radite ale stale to nefunguje :( 

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

void kvadr(double a, double b, double c, float *x1, float *x2);

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

	printf("Kvadraticka rovnice je ve tvaru axx + bx + c\n");
	printf("Zadejte promennou a: ");
	scanf("%d",&a);
	printf("Zadejte promennou b: ");
	scanf("%d",&b);
	printf("Zadejte promennou c: ");
	scanf("%d",&c);

	kvadr(a,b,c,&x1,&x2);

	printf("koren x1 = %f\n", x1);
	printf("koren x2 = %f\n", x2);

	system("PAUSE");
	return 0;
}

void kvadr(double a, double b, double c, float *x1, float *x2){
	double D;
	D = (b*b - (4*a*c));
	printf("Diskriminant je: %d\n",D);

	if(a!=0){
		if(D>0){
			//*x1 = ((-b - sqrt((double)D))/(2*a));
			*x1 = (-1*b-sqrt(D))/(2*a);
			*x2 = (-1*b+sqrt(D))/(2*a);
			printf("rovnice ma 2 reseni\n");
		}
		else if(D==0){
			*x1 = (-1*b-sqrt(D))/(2*a);
			printf("rovnice ma 1 reseni\n");
		}
	}
}
Nahlásit jako SPAM
IP: 212.80.67.–
vitamin+8
Grafoman
7. 11. 2012   #11
-
0
-

gcc:

g++ -O3 -ftemplate-depth=9000 -Wall -g -std=c++11 "x.cpp" `llvm-config --cxxflags --ldflags --libs core` -o "x" 
x.cpp: In function ‘int main()’:
x.cpp:14:15: warning: format ‘%d’ expects argument of type ‘int*’, but argument 2 has type ‘double*’ [-Wformat]
x.cpp:16:15: warning: format ‘%d’ expects argument of type ‘int*’, but argument 2 has type ‘double*’ [-Wformat]
x.cpp:18:15: warning: format ‘%d’ expects argument of type ‘int*’, but argument 2 has type ‘double*’ [-Wformat]
x.cpp:10:8: warning: unused variable ‘vysledek’ [-Wunused-variable]
x.cpp: In function ‘void kvadr(double, double, double, float*, float*)’:
x.cpp:32:34: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’ [-Wformat]
Compilation finished successfully.

odstran vsetky warningy a budes to mat dobre.

edit: preco zadavas parametre v double ked mas vysledky vo float?

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. "
KIIV
~ Moderátor
+43
God of flame
7. 11. 2012   #12
-
0
-

#10 Yurda
no jeste si neudelal nic, co by se vzdalene podobalo tomu, co sem rekl ja, ze mas opravit.. (ted uz to mas i pekne vypsane od vitamina..)

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Yurda
~ Anonymní uživatel
12 příspěvků
7. 11. 2012   #13
-
0
-

Uz to funguje !!!!!!! Diky borci ! Ja jsem porad totiz prehazoval datovy typy a nenapadlo me ze ve scanfu to mam celou dobu blbe ze tam ma byt %lf    pridam sem kod:

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

void kvadr(double a, double b, double c, float *x1, float *x2);

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

	printf("Kvadraticka rovnice je ve tvaru axx + bx + c\n");
	printf("Zadejte promennou a: ");
	scanf("%lf",&a);
	printf("Zadejte promennou b: ");
	scanf("%lf",&b);
	printf("Zadejte promennou c: ");
	scanf("%lf",&c);

	kvadr(a,b,c,&x1,&x2);

	printf("koren x1 = %lf\n", x1);
	printf("koren x2 = %lf\n", x2);

	system("PAUSE");
	return 0;
}

void kvadr(double a, double b, double c, float *x1, float *x2){
	double D;
	D = (b*b - (4*a*c));
	printf("Diskriminant je: %lf\n",D);

	if(a!=0){
		if(D>0){
			//*x1 = ((-b - sqrt((double)D))/(2*a));
			*x1 = (-1*b-sqrt(D))/(2*a);
			*x2 = (-1*b+sqrt(D))/(2*a);
			printf("rovnice ma 2 reseni\n");
		}
		else if(D==0){
			*x1 = (-1*b-sqrt(D))/(2*a);
			printf("rovnice ma 1 reseni\n");
		}
	}
}
Nahlásit jako SPAM
IP: 212.80.67.–
KIIV
~ Moderátor
+43
God of flame
7. 11. 2012   #14
-
0
-

co se mimochodem stane kdyz bude jen jeden koren?

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
8. 11. 2012   #15
-
0
-

#14 KIIV

else if(D==0){
			*x1 = (-1*b-sqrt(D))/(2*a);
			printf("rovnice ma 1 reseni\n");
		}

a když nebude žádný, nevypíše se nic

hu

Nahlásit jako SPAM
IP: 195.178.67.–
8. 11. 2012   #16
-
0
-

Ještě detail. Když a = 0, tak se sice nejedná o kvadratickou rovnici, ale i tak může mít rovnice řešení.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
KIIV
~ Moderátor
+43
God of flame
8. 11. 2012   #17
-
0
-

mel sem na mysli spise cast: 

	kvadr(a,b,c,&x1,&x2);

	printf("koren x1 = %lf\n", x1);
	printf("koren x2 = %lf\n", x2);
Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
8. 11. 2012   #18
-
0
-

to mi uniklo. Jinak máš pravdu, vypíše se jeden kořen a nahodilý obsah x2, možná nula (řídím se pravidlem: proměnná, kterou jsem neinicializoval, má nedefinovanou hodnotu).

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Yurda
~ Anonymní uživatel
12 příspěvků
8. 11. 2012   #19
-
0
-

#16 hlucheucho
to samozrejme ma ale ja uz jsem tohle nemel v zadani tak jsem to nedelal

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

Podobná vlákna

Kvadratická rovnice — založil Patrik Hlobil

Kvadratická rovnice — založil Kolis

Kvadratická rovnice — založil rdckONE

Kvadratická rovnice — založil pazdy

Kvadratická rovnice — založil Kaalc

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ý