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 04 de Julio 2016, 19:03

Título: Problema programa no muestra decimales guardar datos C lenguajeC CU00537F
Publicado por: Dimitar Stefanov en 04 de Julio 2016, 19:03
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.
Título: Re:CU00537F Escribir (guardad datos) en lenguajeC
Publicado por: pedro,, 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
Título: Re:CU00537F Escribir (guardad datos) en lenguajeC
Publicado por: Dimitar Stefanov 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.
Título: Re:CU00537F Escribir (guardad datos) en lenguajeC
Publicado por: pedro,, 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.
Título: Re:CU00537F Escribir (guardad datos) en lenguajeC
Publicado por: Dimitar Stefanov 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 (https://www.aprenderaprogramar.com/foros/index.php?topic=4726.msg19246#msg19246)

jeje. No lo tendré que olvidar.

Saludos.