Resumen: Entrega nº39 del tutorial "Curso básico de programación en lenguaje C desde cero".
Codificación aprenderaprogramar.com: CU00539F

 

 

EJERCICIO Nº1: ENUNCIADO

Transformar en código el pseudocódigo indicado a continuación, relativo al llenado de aceite de un depósito cilíndrico a través de una toma con cierto caudal disponible. Razonar para comprender la lógica del programa.

 

logo lenguaje programacion C

 

Nota: considerar que el caudal disponible se encuentra en el archivo caudal.dat. Dicho archivo deberá ser creado e introducir en él el dato necesario antes de ejecutar el programa, de forma que el programa extraiga el dato desde el archivo.

1.  Inicio

2.  [Q = Caudal disponible en litros / minuto]

3.  Leer  Q

4.  Mostrar “Introduzca el diámetro del depósito, en metros” : Pedir D

5.  Mostrar “Introduzca la altura del depósito, en metros” : Pedir H

6.  Pi = 3,141593

7.  R = D / 2

8.  V = Pi * (R ^ 2) * H : Vlitros = V * 1000

9.  tminutos = Vlitros / Q

10.  Mostrar “El tiempo que transcurrirá hasta el llenado del depósito es de”, tminutos, “minutos”

11.  Fin [Pseudocódigo aprenderaprogramar.com]

 

 

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 ejecutamos el programa introduciendo como diámetro del depósito 2.44 metros y como altura del depósito 3 metros  obtendremos una salida en pantalla como esta:

Tiempo de llenado para un deposito cilindrico

Introduzca el diametro del deposito en metros: 2.44

Introduzca la altura del deposito en metros: 3

Dato de caudal extraido de fichero vale:  112.000000

El tiempo que transcurrira hasta el llenado del deposito es de 125.248567 minutos

 

 

EJERCICIO Nº2: ENUNCIADO

Crear un programa que extraiga datos desde un archivo relativos a un conteo de coches que han pasado por una vía durante 24 horas y realice un cálculo de datos estadísticos (horas en las que el tránsito es cero, total de coches que pasaron en el día, número de horas de tránsito cero, hora de máximo tránsito y última hora a la que pasó un coche. Las horas para el usuario del programa van desde la 0 hasta la 23. La hora 0 corresponde a desde las 00:00:00 hasta las 00:59:59).

El archivo con los datos de tránsito por horas deberá ser creado previamente conteniendo una lista de números (24 en total) que se corresponderán con el tránsito en cada hora.

 

 

EJERCICIO Nº2: SOLUCIÓN

El código sería el siguiente:

#include <stdio.h>
#include <stdlib.h>
// Ejercicios resueltos de programación en C aprenderaprogramar.com
int main() {
    int cochesHora[24]; //24 elementos con índices de 0 a 23
    int cochesTotal=0; int transitoCero=0; int maxTransito = 0;
    int horaMaxTran=0;int ultimaHora= 0; int cochesUltima=0;
    int i=0;

    puts ("Programa Coches \n");
    //Extracción de datos de archivo
    FILE* fichero;
    fichero = fopen("c:\\coches1523.dat", "rt");
    for (i=0; i<=23; i++) { fscanf (fichero, "%d", &cochesHora[i] ); }
    fclose(fichero);

    for (i=0; i<=23; i++) {
        cochesTotal = cochesTotal + cochesHora[i];
        if (cochesHora[i] == 0) {  transitoCero = transitoCero + 1;
                                                    printf ("La hora %d hubo transito cero \n" , i);
                                                  }

        if (cochesHora[i] > maxTransito) { maxTransito = cochesHora[i];
                                                                    horaMaxTran = i;
                                                                  }

        if (cochesHora[i] > 0) { ultimaHora = i;
                                                 cochesUltima = cochesHora[i];
                                              }

    } //Cierre del for

    printf ("El total de coches que pasaron durante el dia fueron %d \n", cochesTotal);

    printf ("Las horas de transito cero fueron %d \n", transitoCero);

    printf ("La hora de maximo transito fue la %d registrandose el paso de %d coches \n", horaMaxTran, maxTransito);

    printf ("La ultima hora a la que paso un coche fue la %d registrandose el paso de %d coches", ultimaHora, cochesUltima);

    return 0;
}

 

Para simular los datos contenidos en el archivo desde el que ha de leer el programa, crearemos un archivo en la ruta C:\coches1523.dat cuyo contenido será (por ejemplo) el siguiente:

programacin C archivos leer escribir

 

Comentarios: es preferible realizar la apertura y cierre una sola vez, fuera del bucle, a proceder a abrir y cerrar el archivo 24 veces disponiendo el código de apertura y cierre dentro del bucle. El resultado de ejecución sería (para los datos indicados de ejemplo) similar a este:

Programa Coches

La hora 0 hubo transito cero

La hora 1 hubo transito cero

El total de coches que pasaron durante el dia fueron 32332

Las horas de transito cero fueron 2

La hora de maximo transito fue la 12 registrandose el paso de 2665 coches

La ultima hora a la que paso un coche fue la 23 registrandose el paso de 45 coches

Process returned 0 (0x0)   execution time : 0.032 s

Press any key to continue.

 

 

EJERCICIO

Crea un programa que pida una entrada de teclado y usando un bucle muestre cada una de las letras que componen la entrada. Por ejemplo si se introduce “avena” debe mostrar:

Letra 1: a

Letra 2: v

Letra 3: e

Letra 4: n

Letra 5: a

 

Para comprobar si tus respuestas son correctas puedes consultar en los foros aprenderaprogramar.com.

 

 

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:  Ver curso completo.

 

Para  hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

 

Descargar archivo: