Problema en programación en C

Iniciado por lucashuerga, 4 Marzo 2014, 21:35 PM

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

lucashuerga

Hola les queria pedir un favor. Soy novato en el tema de la programacion y debo hacer un programa para la facultad para mañana. Lo intente hacer en el codeblocks pero me tira un error "integer constant is too large for long type". Necesito ayuda. Gracias...
Aca esta el programa:

#include <stdio.h>
#include <stdlib.h>
main()
{
double l, d, q, to, tf, t, x;
double v, a=(-1,922e-6),b=(1,8412779e-3), c=(5,887097476e-1),m=(62,855739543442);
printf("Escriba la longitud del conducto, luego presione Enter: \n");
scanf("%lf", &l);
printf("\nEscriba el diametro del conducto, luego presione Enter: \n");
scanf("%lf", &d);
printf("\nEscriba el caudal: \n");
scanf("%lf", &q);
printf("\nEscriba temperatura inicial del fluido, luego presione Enter: \n");
scanf("%lf", &to);
printf("\nEscriba temperatura final del fluido, luego presione Enter: \n");
scanf("%lf", &tf);
printf("\nEscriba la distancia en la que quiere calcular la temperatura, luego presione Enter: \n");
scanf("%lf", &x);
t=(to+((tf-to)/l)*x);
printf("\nLa temperatura es = %f \n", t);
v=((a*(t*t*t))+(b*(t*t))-(c*x)+m);
printf("\nLa viscosidad es = %ld \n", v);
system("pause");
return 0;
}

El Benjo

#1
El problema está en que la constante "62,8557395434422" es demasiado larga para el tipo long. Lo probé quitando dos tres cifras y funcionó.

¿Son indispensables esas últimas dos cifras para tu programa?

Si no es así, elimínalas.

EDITADO: En vez de usar la coma para el punto decimal, utiliza el punto. Así no te dará problemas al asignar la el número "62,8557395434422".
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

engel lex

usa las etqieutas GeSHi cuando publiques codigo, eso lo hará mas legible, aunque veo que ya resolvieron, cuando publiques errores publicalos completo con su numero de linea, si no puede carecer de sentido...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

leosansan


Has caso a lo que marca el compilador en la parte inferior, los errores y warnings.

* main es de tipo int. Ya sé que lo sabes porque has puesto return 0 al final, pero al principio sería int main.

* Como te comentaron el signo para decimales, a no ser que uses un formato Spanish o similar, es el punto decimal. Con él puedes meter todas las cifras sin problemas, más siendo la variable de tipo double.

* Y hablando de double, en los últimos printf lo que procede es el formato %lf, ya que un tipo como %ld puede provocar salidas erróneas.



¡¡¡¡ Saluditos! ..... !!!!