Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LucasPS

[Resolvido] Baskara

Recommended Posts

galera eu fiz um aqui pra calcular x' e x'' da baskara, só que ele ta errado os calculos eu acho, vou explicar:

se o valor de A for 12, B for 10, C for -42.

dai o resultado seria x'=3/2 ou 1,5 e o x''=-7/3 ou -2,33.

mais no programa nao mostra isso, vou passar o codigo aqui pra ve se vcs conseguem me ajudar

#include <stdio.h>
#include <math.h>
float x1(float,float,float);
float x2(float,float,float);
float delta(float,float,float);
void main(void){
	float a,b,c;
	printf("Informe os coeficientes da equacao: ");
	scanf("%f%f%f",&a,&b,&c);
	printf("As raizes sao x1=%f x2=%f",x1(a,b,c),x2(a,b,c));
}
float x1(float x ,float y ,float z){
	return(-y+sqrt(delta(x,y,z)))/2*x;
}
float delta(float m,float n,float o){
	return n*n-4*m*o;
}
float x2(float f,float g,float h){
	return (-g-sqrt(delta(f,g,h)))/2*f;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

2*f

&

2*x

 

Esses tem que ter parênteses próprios:

 

return(-y+sqrt(delta(x,y,z)))/(2*x);

Etc...

 

Só mais uma coisa: porque você definiu nomes de variáveis diferentes pra cada uma das funções? Acho que ficaria muito mais simples se você usasse só a b c, as variáveis ficariam muito mais auto-explicativas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi o que você quis dizer, aonde você fala de usar só a b c?

 

mudando oq você falou ele mostra os resultado por exemplo:

3/2 ele mostra 1,535416 e seria só 1,5 oq pode estar errado pra ele mostrar esses outros numeros?

e o -7/3 por exemplo seria -2,333333 e ele mostra -2,735416

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compilei seu codigo ja com os parenteses (2*x) e o resultado foi exatamente x1=1,5000 e x2= 2,333333. Nao sei como voce encontrou esses resultados oO

E pra melhor seu programa, seria interessante nao prosseguir a conta se o valor do delta for negativo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi o que você quis dizer, aonde você fala de usar só a b c?

 

mudando oq você falou ele mostra os resultado por exemplo:

3/2 ele mostra 1,535416 e seria só 1,5 oq pode estar errado pra ele mostrar esses outros numeros?

e o -7/3 por exemplo seria -2,333333 e ele mostra -2,735416

Provavelmente você digitou algum dos valores errados, pois aqui funcionou legal.

Quanto ao a b c, é que na função x1 você usa xyz, no delta você usa mno e no x2 você usa fgh. Todo mundo eu acho aprende báskara por (-b +- raiz de (b² - 4ac))/2a... fica meio estranho você usar xyz e outras coisas no lugar, deixa o código mais confuso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tinha colocado os numeros invertidos por isso deu erro

troquei abc la, eu botei diferente pq achei que daria erro hehe

ta resolvido ;P

Compartilhar este post


Link para o post
Compartilhar em outros sites

galera eu dei uma ajeitada no codigo e tal, só que qdo eu executo, boto os numero, ele da o resultado e fecha mais nem da tempo de ver o resultado, vejam o que pode estar errado:

#include <stdio.h>
#include <stdlib.h>
float x1(float,float,float);
float x2(float,float,float);
float delta(float,float,float);
main(){
	float a,b,c;
	printf("Informe o valor de A: ");
	scanf("%f",&a);
	printf("Informe o valor de B: ");
	scanf("%f",&b);
	printf("Informe o valor de C: ");
	scanf("%f",&c);
	printf("  x'=%.3f   x''=%.3f",x1(a,b,c),x2(a,b,c));
}
float x1(float a,float b,float c){
	return(-b+sqrt(delta(a,b,c)))/(2*a);
}
float delta(float a,float b,float c){
	return ((b*b)-(4*a*c));
}
float x2(float a,float b,float c){
	return (-b-sqrt(delta(a,b,c)))/(2*a);
system("pause");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

float x2(float a,float b,float c){
	return (-b-sqrt(delta(a,b,c)))/(2*a);
system("pause");
}

Esse system("pause");, você tira daí e põe aqui:

main(){
	float a,b,c;
	printf("Informe o valor de A: ");
	scanf("%f",&a);
	printf("Informe o valor de B: ");
	scanf("%f",&b);
	printf("Informe o valor de C: ");
	scanf("%f",&c);
	printf("  x'=%.3f   x''=%.3f",x1(a,b,c),x2(a,b,c));
}

No final da função. Aproveita e declara main como int e põe um return 0; no final. Boas práticas de programação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.