Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: 2ricardo_c en 26 Enero 2015, 06:23 am



Título: problema al final con un codigo en c++
Publicado por: 2ricardo_c en 26 Enero 2015, 06:23 am
me pidieron hacer un programa que resuelva ecuaciones de segundo grado en c++ pero despues de corregir muchos errores, al final sale que el acceso es denegado porque el numero final es uno? soy nuevo en c++ asi que no conozco mucho de eso, que le puedo hacer ahi?? :huh: :huh: :-(

si les sirve aqui esta el codigo:

Código
  1.  

/******************** resolucion de ecuaciones de 2º grado *******************/
//ecuaciones.cpp
//asignar valores y librerias
#include <stdio.h>
#include <stdlib.h>
#include <math.h>



main()
{
    double a, b, c, d, e, x1, x2;
   

    system("cls");
   
    printf("\n introducir los valores de a, b y c\n");
    // escribimos a
    printf(" introducir a\n");
    scanf(" %lf", &a);
    getchar();
    system("cls");
    // escribimos b
    printf(" introducir b\n");
    scanf(" %lf", &b);
    getchar();
    system("cls");
    // escribimos c
    printf(" introducir c\n");
    scanf(" %lf", &c);
    getchar();
    system("cls");
    // mostramos la escuacion a seguir
    printf("                              __2__________  /\n");
    printf(" la escuacion a seguir    x= |(b)-4(a)(c)  -\n");
    printf("                              ----------------\n");
    printf("                                 2(a)\n");
    getchar();
    system("cls");
    ///raiz
    d = b * b - 4 * a *c;
    e = sqrt(d);
           
    // operaciones
    x1 = (-b + e) / (2 * a);
    x2 = (-b - e) / (2 * a);
   
    //resultados
    printf(" x1 = %g\n", x1);
    printf(" x2 = %g\n", x2);
    getchar();
    system("cls");
    printf(" espero que le haya gustado el programa\n vuelva pronto");
     getchar();
    system("cls");
    printf(" este programa fue creado con fines locales");
    getchar();
    exit(0);
}



Título: Re: problema al final con un codigo en c++
Publicado por: eferion en 26 Enero 2015, 08:35 am
Así a bote pronto veo un par de errores:

1. Si d = b * b - 4 * a *c es menor que 0, la siguiente instrucción, e = sqrt(d) va a dar error. La raiz de cualquier número negativo da lugar a números complejos y esta función no está preparada para este tipo de cálculos.

2. Si a = 0, el divisor en  (-b + e) / (2 * a) será igualmente 0 y eso resulta en un error en tiempo de ejecución.