Programa matematico `[ayuda]

Iniciado por dvaid, 12 Agosto 2011, 13:44 PM

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

dvaid

hola chicos vereis me estoy iniciando en esto de la programacion en c utiizo el dev-C++ y estoy haciendo un programa el cual dado dos lados haya todos los angulos q posee el triangulo.el problema esta en q me compila pero a la hora de ejecutar despues de meter los datos salta, dejandome a dos velas he buscado un monton por internet y han aunque he encontrado cosas parecidas no lo he logrado.
Os dejo el codigo para q m critiqueis y sacamos algo en claro.

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


#define PI 3.14159265

int main()
{
    int a,base,d,c,A,B,C,l;
   
    printf("Introduce altura: ");
    scanf("%i",&a);
    printf("Introduce base: ");
    scanf("%i",&l);
    c = sqrt((a^2)+(l^2));
    A = acos((l*l+c*c-a*a)/(2*l*c))*180/PI;
    B = acos((a*a+c*c-l*l)/(2*a*c))*180/PI;
    C = acos((a*a+l*l-c*c)/(2*a*l))*180/PI;
    printf("A tiene %.1i \n",A);
    printf("B tiene %.1i \n",B);
    printf("C tiene %.1i \n",C);
   
        return(0);
}   

Darkgold9

Copiando y pegando tu codigo en el codeblocks y dandole unos valores me rula, ya no comprobe si el resultado que da debe ser el correcto o no.

Aqui screen:


bigfu

Sin profundizar mucho en el codigo, a primera vista veo que tienes variables sin utilizar, aunque eso no influye en el funcionamiento del programa, te recomiendo que las borres si no las usas (base, d).
Luego, veo que en la sentencia c = sqrt((a^2)+(l^2)), utilizas ^para elevar al cuadrado. No se hace asi, o utilizas una funcion de la biblioteca math.h (que supongo que tendra una funcion para calcular los cuadrados) o simplemente lo cambias por a*a y l*l.

Saludos.
A reader lives a thousand lives before he dies. The man who never reads lives only one

dvaid

#3
muchas gracias por responderme ya he cambia esas cosillas, lo compilo y lo hace anque abajo me pone/ warning converting to "int" from "double" en las lineas en las q hago las operaciones, asu ves me deja compilar pero al ejecutar introduzco los datos altura y base y luegono m sale nada es como si el programa termine ai os dejo el codigo retocado

PD: quite la libreria conio.h gracias a los post de arriba q me he ido leyendo jejeje

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





#define PI 3.14159265

int main()
{
   int a,c,A,B,C,l;
   
   printf("Introduce altura: ");
   scanf("%i",&a);
   printf("Introduce base: ");
   scanf("%i",&l);
   c = sqrt((a*a)+(l*l));
   A = acos((l*l+c*c-a*a)/(2*l*c))*180/PI;
   B = acos((a*a+c*c-l*l)/(2*a*c))*180/PI;
   C = acos((a*a+l*l-c*c)/(2*a*l))*180/PI;
   
printf("A tiene %.1i \n",A);
   printf("B tiene %.1i \n",B);
   printf("C tiene %.1i \n",C);
   
       return(0);
}    


PD2:estoy utilizando el dev-C++ no se si sera bueno pero es con el q me enseñaron en la uni

bigfu

Pon system("PAUSE") justo encima del return 0, a ver si va a ser por eso xD
A reader lives a thousand lives before he dies. The man who never reads lives only one

dvaid

#5
con el system pause no me compila me da error en la linea scanf("%i",&l); o en la de debajo
21  [Warning] converting to `int' from `double'  me sale este error.


Darkgold9

Cambia los valores de las variables a double, dado que stas haciendo operaciones que te van a devolver decimales.
Mm y si no te va el system("PAUSE")... prueba a hacertelo tu manualmente, es decir:

         char x;
         printf("Presione una tecla para continuar");
         scanf("%c",&x);

Dark Invader

En vez de system("pause") utiliza la funcion de la libreria stdio.h:

getchar();

Si sigue sin dar el resultado esperado miro un poco el codigo aver si veo el fallo.


Un saludo

dvaid

#8
ahora me sale pero los numeros no concuerdan con los datos =hay algun fallo en los operandos y no lo veo, dejo el codigo para q se vea mejor

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


#define PI 3.14159265

int main()
{
   char x;
   double a,c,A,B,C,l;
   
   printf("Introduce altura: ");
   scanf("%d",&a);
   printf("Introduce base: ");
   scanf("%d",&l);
   c = sqrt((a*a)+(l*l));
   A = acos((l*l+c*c-a*a)/(2*l*c))*180/PI;
   B = acos((a*a+c*c-l*l)/(2*a*c))*180/PI;
   C = acos((a*a+l*l-c*c)/(2*a*l))*180/PI;
   printf("A tiene %.1d \n",A);
   printf("B tiene %.1d \n",B);
   printf("C tiene %.1d \n",C);
   printf("Presione una tecla para continuar");
   scanf("%c",&x);
   getchar();
   return(0);
}    



dvaid

tras estarlo mirando  ytal creo q el problema esta en las operaciones matematicas sinembargo no consigo ver el error