Pregunta:
Programacion en C con Dev-C++?
Dude
2008-06-16 08:24:29 UTC
He compilado el siguiente programa en C. Cuando ejecuto el programa me pide que ingrese los valores que me pide, pero el reultado no me muestra tods los digitos; en vez de mostrarme 6.732E-11 ó lo que es lo mismo 0.00000000006732 solo me muestra lo siguiente:


INTRODUZCA MASA UNO :25

INTRODUZCA MASA DOS :25

INTRODUZCA DISTANCIA:25
LA FUERZA ES: 0.000000
Presione una tecla para continuar . . .

como podeis ver le faltan numeros al resultado; Aqui os dejo el codigo fuente a ver si me podeis ayudar, muchas gracias:

#include
#include
#define G 6.723E-11

int main ()

{
double masauno , masados , distancia, fuerza;
printf("\nINTRODUZCA MASA UNO :");
scanf("%f", &masauno );
printf("\nINTRODUZCA MASA DOS :");
scanf("%f", &masados );
printf("\nINTRODUZCA DISTANCIA:");
scanf("%f", &distancia);
fuerza = (G*((masauno)*(masados ))/distancia*distancia);
printf("LA FUERZA ES: %f\n", fuerza);
system("pause");
return 0;
Tres respuestas:
:: S]aga ::
2008-06-16 09:49:35 UTC
Saludos !



Tienes un error en la forma que escribiste la formula



[Cito]

>> fuerza = (G*((masauno)*(masados ))/distancia*distancia);



Es necesario poner entre parentesis (distancia*distancia)



Porque a la hora de resolver la sentencia, se lee de izquierda a derecha, por lo tanto primero se divide entre distancia (el primero que aparece de izquierda a derecha) y el resultado se multiplica por distancia (el último)



[ Solución ]

>> fuerza = (G*( (masauno)*(masados ))/ ( distancia*distancia ) );



o bien, ahorrarte unos parentesis.



>> fuerza = (G * masauno * masados )/(distancia * distancia);



Si necesitas expresarlo en forma de notación científica puedes utilizar %E



p. ej



>> printf("LA FUERZA ES: %E\n", fuerza);



[ Si deseas conocer más acerca de los formatos de impresión de la función printf ingres a ]

http://www.cplusplus.com/reference/clibrary/cstdio/printf.html



Te adjunto el programa con las modificaciones



>>



#include

#include

#define G 6.723E-11



int main ()



{

double masauno = 0.0, masados = 0.0, distancia = 0.0, fuerza = 0.0;

printf("\nINTRODUZCA MASA UNO :");

scanf("%f", &masauno );

printf("\nINTRODUZCA MASA DOS :");

scanf("%f", &masados );

printf("\nINTRODUZCA DISTANCIA:");

scanf("%f", &distancia);

fuerza = (G * masauno * masados )/(distancia * distancia);

printf("LA FUERZA ES: %E\n", fuerza);

system("pause");

return 0;

}



<<



Una recomendación, utiliza constantes y no macros (#define G) Por ejemplo. La defines dentro de tu main de la siguiente forma.



>> const double G = 6.723E-11;

>> const float G = 6.723E-11;



Además, por buena practica siempre incializa tus variables antes de usarlas, porque te pueden provocar errores inesperados en cálculos o lógica. En tu ejemplo si no inicializas te puede cálcular mal.
?
2017-01-01 19:39:59 UTC
El problema está en l. a. declaración de arrays multidimensionales. Lo puedes solucionar utilizando memoria dinámica. Prueba crear los arreglos con este código: #comprise #comprise drift*** reservar_memoria(const int T1, const int T2, const int T3) {     drift*** A = (drift***)malloc(T1 * sizeof(drift***));     for (int i = 0; i < T1; i++) {         A[i] = (drift**)malloc(T2 * sizeof(drift**));         for (int j = 0; j < T2; j++)             A[i][j] = (drift*)malloc(T3 * sizeof(drift*));     }     return A; } void liberar_memoria(drift*** A, const int T1, const int T2) {     for (int i = 0; i < T1; i++) {         for (int j = 0; j < T2; j++)             unfastened(A[i][j]);         unfastened(A[i]);     }     unfastened(A); } int substantial() {     const int T1 = 10;     const int T2 = 20;     const int T3 = 30;     drift*** array = reservar_memoria(T1, T2, T3);     array[0][0][0] = 50;     printf("%.0fn", array[0][0][0]);     liberar_memoria(array, T1, T2);     gadget("pause");     return 0; } Saludos
wario71
2008-06-16 08:49:58 UTC
Chicles ya no me acuerdo de C, que tragedia, pero bueno lo que te puedo decir es puedes intentar imprimiendo la fuerza como double porque asi esta declarada, porque las estas imprimiendo como float (%f).



A lo mejor eso lo soluciona, ahortia no recuerdo como se cambiaba el num. de decimales, que cosas.



Otro punto, sabes cual es el resultado que te debe dar?

A lo mejor ese es el resultado de la operacion y tu ni cuenta. jeje saludos


Este contenido se publicó originalmente en Y! Answers, un sitio web de preguntas y respuestas que se cerró en 2021.
Loading...