Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: raulinchi en 22 Octubre 2011, 15:58 pm



Título: C para resolver ecuaciones de segundo grado llamando tres funciones diferentes,
Publicado por: raulinchi en 22 Octubre 2011, 15:58 pm
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...


Título: Re: C para resolver ecuaciones de segundo grado llamando tres funciones diferentes,
Publicado por: raulinchi en 22 Octubre 2011, 16:27 pm
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;
}