LucasPS 1 Denunciar post Postado Junho 18, 2008 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
José Enésio 4 Denunciar post Postado Junho 18, 2008 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
LucasPS 1 Denunciar post Postado Junho 18, 2008 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
Myho 2 Denunciar post Postado Junho 18, 2008 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
José Enésio 4 Denunciar post Postado Junho 19, 2008 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
LucasPS 1 Denunciar post Postado Junho 19, 2008 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
LucasPS 1 Denunciar post Postado Junho 19, 2008 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
José Enésio 4 Denunciar post Postado Junho 19, 2008 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
LucasPS 1 Denunciar post Postado Junho 19, 2008 oq muda declarar main como algo ou deixar sem nada? e só o pause ja nao serve? tem que por o return? Compartilhar este post Link para o post Compartilhar em outros sites