Autor Tema: Problema programa no muestra decimales guardar datos C lenguajeC CU00537F  (Leído 3970 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas tardes. Dejo una posible solución del ejercicio CU00537F del curso aprende a programar en lenguaje C desde cero.

Citar
EJERCICIO

Crea un programa que pida 3 números al usuario y guarde 4 líneas en un archivo denominado datos.txt. El contenido de las líneas debe ser el siguiente: las 3 primeras líneas, cada uno de los datos proporcionados. La cuarta línea, el valor medio de los tres datos anteriores.

Ejemplo: el usuario introduce como números 10, 14, 31. El archivo creado deberá contener lo siguiente:

10

14

31

18.333333

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

int main() {
    int num[3], i, media;

    for(i=0; i<3; i++){
        printf("Introduzca un n%cmero entero: ", 163);
        scanf("%d", &num[i]);
    }

    media = (num[0]+num[1]+num[2])/3;

    FILE*fichero;
    fichero = fopen("archivo01.txt","wt");
    fprintf(fichero, "%d\n%d\n%d\n%d", num[0], num[1], num[2], media);
    fclose(fichero);

    printf("Proceso completo");

    return 0;
}

Gracias.
« Última modificación: 12 de Julio 2016, 17:14 por César Krall »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU00537F Escribir (guardad datos) en lenguajeC
« Respuesta #1 en: 07 de Julio 2016, 14:16 »
Hola dimiste.

De la forma que resuelves el ejercicio el resultado de la media no muestra decimales, y tendría que permitir tener decimales, como se ve en el ejemplo del enunciado.


Saludos. ;D

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Re:CU00537F Escribir (guardad datos) en lenguajeC
« Respuesta #2 en: 07 de Julio 2016, 23:48 »
Buenas, Pedro.

Gracias por tu corrección. Entonces el código debería ser así:

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

int main() {
    int num[3], i;
    double media;

    for(i=0; i<3; i++){
        printf("Introduzca un n%cmero entero: ", 163);
        scanf("%d", &num[i]);
    }

    media = (num[0]+num[1]+num[2])/3;

    FILE*fichero;
    fichero = fopen("archivo01.txt","wt");
    fprintf(fichero, "%d\n%d\n%d\n%lf", num[0], num[1], num[2], media);
    fclose(fichero);

    printf("Proceso completo");

    return 0;
}

Gracias y saludos.

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU00537F Escribir (guardad datos) en lenguajeC
« Respuesta #3 en: 08 de Julio 2016, 10:25 »
Esta línea:
Código: [Seleccionar]
media = (num[0]+num[1]+num[2])/3;
debería quedar así:

Código: [Seleccionar]
media = (num[0]+num[1]+num[2])/3.0;
Si no pones"3.0" solo tomará la parte entera del resultado.

Saludos.

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Re:CU00537F Escribir (guardad datos) en lenguajeC
« Respuesta #4 en: 08 de Julio 2016, 14:11 »
Buenas tardes, Pedro.

Gracias por corregirme el ejercicio.

Sí, tienes razón, ahora cuando ví tu corrección me acordé de lo que me dijiste ayer en una de las otras correcciones y del hilo:

https://www.aprenderaprogramar.com/foros/index.php?topic=4726.msg19246#msg19246

jeje. No lo tendré que olvidar.

Saludos.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".