Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Dimitar Stefanov en 01 de Julio 2016, 00:55

Título: programa en C volumen esfera Variables printf scanf datos en lenguajeC CU00527F
Publicado por: Dimitar Stefanov en 01 de Julio 2016, 00:55
Buenas noches.

Dejo una posible solución del ejercicio CU00527F del curso lenguajeC desde cero.

Citar
EJERCICIO

Crea un programa que pida al usuario el radio de una esfera y muestre por pantalla el volumen de la esfera. Si no conoces la fórmula de cálculo, busca información al respecto en internet.

Fórmula del el volumen de la esfera:(http://www.ditutor.com/geometria_espacio/images/59_2.gif)

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main() {
    double V, R;
    const double Pi = 3.141593;

    //Datos
    printf("Introduce el radio de la esfera: ");
    scanf("%lf", &R);

    //Cálculo
    V = 1.33*Pi*pow(R, 3);

    printf("El volumen de la esfera es: %lf, metros c%cbicos", V, 163);

    return 0;
}

Gracias.
Título: Re:CU00527F Variables, printf, scanf, datos en lenguajeC
Publicado por: Pandemia en 03 de Julio 2016, 21:02
Todo bien; pero te aconsejo que inicialices las variables por ejemplo:

duoble v = 0;
double r = 0;

Así le das mas sentido a tu programa.

Saludos   ;D
Título: Re:CU00527F Variables, printf, scanf, datos en lenguajeC
Publicado por: Dimitar Stefanov en 04 de Julio 2016, 10:13
Buenos días, Pandemia.

Primero que nada, gracias por tu corrección y por el tiempo implicado.

Realmente hace falta inicializar las variables si una de ellas la tiene que entrar el usuario y la otra es un cálculo?

Es más, las variables se inicializan, pero no en la misma línea en su definición. La "R" se inicializa con el valor dado por el usuario y la "V" a través de la fórmula.

Saludos.
Título: Re:CU00527F Variables, printf, scanf, datos en lenguajeC
Publicado por: Pandemia en 05 de Julio 2016, 20:21
Buenas tardes dimiste, no son estrictamente obligatorias inicializarlas, pero sí es aconsejable   queda a gusto del programador, así como por ejemplo los contadores no son necesarios inicializarlos.

Saludos.   ;D
Título: Re:CU00527F Variables, printf, scanf, datos en lenguajeC
Publicado por: Dimitar Stefanov en 06 de Julio 2016, 11:42
Buenos días, Pandemia.

Programo de esta manera para ir acorde con el estilo de enseñanza de los cursos de aprenderaprogramar.com. Vi que el profesor lo programaba así, como por ejemplo en la entrega CU00539F (entre otras):

Citar
EJERCICIO Nº1: SOLUCIÓN

Vamos a suponer que el archivo caudal.dat se encuentra en la unidad de disco C:, y que el valor de caudal disponible en litros por minuto que proporciona es 112. Antes de ejecutar el programa habremos creado este archivo. Tener en cuenta que para especificar la ruta tendremos que poner c:\\caudal.dat usando una doble barra porque \ es un carácter especial que se usa para insertar ciertos códigos de control como cuando escribimos \n y para que se interprete como un carácter de la cadena c:\caudal.dat hemos de escribir el carácter de escape, que es precisamente \, de ahí que se escriba duplicado.

 

Código:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// Ejercicios resueltos de programación en C aprenderaprogramar.com
int main() {
    const double Pi = 3.141592654;     double D, R, H, V, Vlitros, tminutos, Q;
    puts ("Tiempo de llenado para un deposito cilindrico\n");
    printf ("Introduzca el diametro del deposito en metros: ");  scanf ("%lf", &D);
    printf ("Introduzca la altura del deposito en metros: "); scanf ("%lf", &H);

    //Extracción de dato de caudal del archivo
    FILE* fichero;     fichero = fopen("c:\\caudal.dat", "rt");
    fscanf (fichero, "%lf", &Q );
    fclose(fichero);

    //Cálculos y resultados
    printf ("\nDato de caudal extraido de fichero vale:  %lf \n", Q);
    R = D / 2;     V = Pi * pow (R, 2) * H;     Vlitros = V * 1000;     tminutos = Vlitros / Q;
    printf ("El tiempo que transcurrira hasta el llenado del deposito es de %lf minutos \n", tminutos );
    return 0;
}

Si te fijas en este ejemplo, las variables D, R, H, V, Vlitros, tminutos, Q, solamente están definidas, pero no inicializadas.

Pero lo dicho, gracias por tus consejos, lo tendré en cuenta. Al fin y al cabo lo que quiero es mejor como programador y agradezco todos los consejos por vuestra parte. Gracias.

Saludos.
Título: Re:CU00527F Variables, printf, scanf, datos en lenguajeC
Publicado por: Pandemia en 06 de Julio 2016, 20:47
Buenas tardes Dimiste, en es te ejemplo tienes razón, pero si te fijas todas son del mismo tipo  double, en casos así vale la pena porque te ahorras varias líneas de código, pero de todos modos va a gusto del programador, mi consejo es solo para la cuestión de estructuración del programa, así se ven mejor los errores.

Saludos.   ;D
Título: Re:programa en C volumen esfera Variables printf scanf datos en lenguajeC CU00527F
Publicado por: Ogramar en 08 de Julio 2016, 18:55
Buenas en general se considera una buena práctica de programación (y recomendable) inicializar las variables. En algunos lenguajes forma parte de la propia estructura habitual de la programación (por ejemplo en Java al crear un objeto usamos un constructor y en ese constructor normalmente inicializamos todos los atributos aunque no sea algo obligatorio, pero lo hacemos por norma). No inicializar una variable puede suponer un riesgo, de ahí que sea recomendable (aunque a veces ciertamente no se haga. En ese caso la variable tendrá un valor de defecto definido por el compilador, o quizás tenga un contenido nulo).

Salu2
Título: Re:programa en C volumen esfera Variables printf scanf datos en lenguajeC CU00527F
Publicado por: Dimitar Stefanov en 08 de Julio 2016, 21:46
Buenas, Ogramar.

Gracias por tu aportación también. Ok, me ha quedado claro que tengo que declarar (evidentemente) y inicializar todas las variabes/atributos.

Gracias a tí y a Pandemia por la aportación en este hilo.

Saludos.