C para resolver ecuaciones de segundo grado llamando tres funciones diferentes,

Iniciado por raulinchi, 22 Octubre 2011, 15:58 PM

0 Miembros y 1 Visitante están viendo este tema.

raulinchi

Bueno, soy yo de nuevo, la verdad es que ahora me quedo enganchado con cualquier toneria(no acabo de comprender algunos conceptos), poero por ganas no sera, asi que haber si me ayudais a comprender bien que estoy haciendo, os comento:
Intento resolver una ecuacion de segundo grado, tres posibles soluciones di>0
di<0, di=0.
Dependiendo del valor de di, llamo a una funcion o otra y devuelvo un resultado con returt y otro con un puntero.

Os asjunto el codigo a ver si me podeis ayudar:


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

void main(){

float a=0,b=0,c=0,di=0,l,A,B;
printf("Solucion a  la ecuacion de tipo ax2+bx+c=0\n");
printf("Dame el valor de a\n");
scanf("%d",&a);
printf("Dame el valor de b\n");
scanf("%d",&b);
printf("Dame el valor de c\n\n");
scanf("%d",&c);
di=b*b-(4*a*c);
if(di>0)
{
    A = discrpos(a,b,di,&l);
    printf("x1=%d y x2=%d",A,l);
}
if(di<0)
{
    A = discrneg(a,b,di,&l);
    printf("x1=%d y x2=%d",A,l);
}
else
{
    A = discrnull(a,b);
    printf("x1=x2=x=%d",A);
}
}
float discrpos(float m, float n, float q, float *r){

float x1=0,x2=0;
x1 = (-n+sqrt(q))/(2*m);
x2 = (-n-sqrt(q))/(2*m);
*r = x2;
return x1;
}
float discrneg(){

float x1=0,x2=0;
x1 = -n/(2*m);
x2 = sqrt(q)/(2*m);
*r = x2;
return x1;
}
float discrnull(float m, float n){

float x1=0,x2=0;
x1 = x2 = -n/(2*m);
return x1;
}




GRacias y perdonad mi ignorancia...No resulta facil el C, sinceramente, espero no os importe ayudarme...

raulinchi

Esto esta mejor no???

No me da errores, pero no resuleve bien, voy a repasarlo a ver...


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

float discrpos(float m, float n, float q, float *r);
float discrneg(float m, float n, float q, float *r);
float discrnull(float m, float n);

int main(){

float a=0,b=0,c=0,di=0,l,A,B;
printf("Solucion a  la ecuacion de tipo ax2+bx+c=0\n");
printf("Dame el valor de a\n");
scanf("%d",&a);
printf("Dame el valor de b\n");
scanf("%d",&b);
printf("Dame el valor de c\n\n");
scanf("%d",&c);
di=b*b-(4*a*c);
if(di>0)
{
    A = discrpos(a,b,di,&l);
    printf("x1=%d y x2=%d",A,l);
}
else if(di<0)
{
    A = discrneg(a,b,di,&l);
    printf("x1=%d y x2=%d",A,l);
}
else
{
    A = discrnull(a,b);
    printf("x1=x2=x=%d",A);
}
}
float discrpos(float m, float n, float q, float *r){

float x1=0,x2=0;
x1 = (-n+sqrt(q))/(2*m);
x2 = (-n-sqrt(q))/(2*m);
*r = x2;
return x1;
}
float discrneg(float m, float n, float q, float *r){

float x1=0,x2=0;
x1 = -n/(2*m);
x2 = sqrt(q)/(2*m);
*r = x2;
return x1;
}
float discrnull(float m, float n){

float x1=0,x2=0;
x1 = x2 = -n/(2*m);
return x1;
}