Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: dvaid en 12 Agosto 2011, 13:44 pm



Título: Programa matematico `[ayuda]
Publicado por: dvaid en 12 Agosto 2011, 13:44 pm
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);
}   


Título: Re: Programa matematico `[ayuda]
Publicado por: Darkgold9 en 12 Agosto 2011, 14:19 pm
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:

(http://file:///C:/Piury/Pruebas/Imagenes%20internet/Respuesta_El_Hacker.png)


Título: Re: Programa matematico `[ayuda]
Publicado por: bigfu en 12 Agosto 2011, 14:19 pm
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.


Título: Re: Programa matematico `[ayuda]
Publicado por: dvaid en 12 Agosto 2011, 14:43 pm
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


Título: Re: Programa matematico `[ayuda]
Publicado por: bigfu en 12 Agosto 2011, 14:48 pm
Pon system("PAUSE") justo encima del return 0, a ver si va a ser por eso xD


Título: Re: Programa matematico `[ayuda]
Publicado por: dvaid en 12 Agosto 2011, 15:01 pm
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.



Título: Re: Programa matematico `[ayuda]
Publicado por: Darkgold9 en 12 Agosto 2011, 15:18 pm
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:
Código:
 
         char x;
         printf("Presione una tecla para continuar");
         scanf("%c",&x);


Título: Re: Programa matematico `[ayuda]
Publicado por: Dark Invader en 12 Agosto 2011, 15:46 pm
En vez de system("pause") utiliza la funcion de la libreria stdio.h:

Código

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


Un saludo


Título: Re: Programa matematico `[ayuda]
Publicado por: dvaid en 12 Agosto 2011, 16:03 pm
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);
}    




Título: Re: Programa matematico `[ayuda]
Publicado por: dvaid en 16 Agosto 2011, 14:11 pm
tras estarlo mirando  ytal creo q el problema esta en las operaciones matematicas sinembargo no consigo ver el error


Título: Re: Programa matematico `[ayuda]
Publicado por: Valkyr en 16 Agosto 2011, 19:10 pm
Ten en cuenta que el valor devuelto por la función acos es el arco coseno de X expresado en radianes.

Saludos.


Edito, ya veo que lo transformas a grados


Título: Re: Programa matematico `[ayuda]
Publicado por: dvaid en 18 Agosto 2011, 15:07 pm
no el problema del programa creo q mas bn es en las operaciones pero no se q esta mal


Título: Re: Programa matematico `[ayuda]
Publicado por: dvaid en 27 Agosto 2011, 01:11 am
alguien??


Título: Re: Programa matematico `[ayuda]
Publicado por: Alien-Z en 27 Agosto 2011, 01:44 am
alguien??

A ver, ¿exactamente qué le ocurre al programa? (no se ejecuta, se ejecuta pero da resultados erróneos...).


Título: Re: Programa matematico `[ayuda]
Publicado por: rir3760 en 27 Agosto 2011, 01:45 am
El problema se debe a que estas utilizando "%d" (correcto para leer e imprimir valores de tipo "int").

Para leer valores de tipo "double" con scanf debes utilizar "%lf" y para imprimirlos con printf utiliza "%f".

Un saludo


Título: Re: Programa matematico `[ayuda]
Publicado por: dvaid en 29 Agosto 2011, 17:51 pm
rir3760 muchisismas gracias ese era el problema,como siempre en C lo mas tonto es siempre lo mas complicado de encontrar,no dudes ni un momento en pedirme ayuda para cualquier cosa.mas tarde subire el programa para todo aquel q este interesado.
Pd:mucisimas grais otras no sabes cuantos cabezazzos me e dado contra la pared cuando vi la tonteria q era,