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

 

 

EJERCICIO Nº1: ENUNCIADO

Un vivero forestal actualiza cada seis meses los precios de la planta que vende en función de los valores oficiales de inflación mensual. Desean desarrollar un programa que proporcione el precio actualizado a partir del precio anterior y de los valores de inflación en cada uno de los últimos seis meses.

 

logo lenguaje programacion C

 

EJERCICIO Nº1: SOLUCIÓN

Vamos a trabajar con arrays (arreglos) de datos. El código sería el siguiente:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int i=0;
    double actual=0;
    double nuevo=0;
    double inf [6]; //Inflacion con indices de 0 a 5
    puts ("Programa precios de planta\n");
    printf ("Introduzca el precio actual: ");
    scanf ("%lf", &actual);
    nuevo = actual;
    for (i=0; i<6; i++) {
        printf ("Introduzca la inflacion del mes %d: " , i+1);
        scanf ("%lf", &inf[i]);
        nuevo = nuevo * (1 + inf[i]/100);
    }
    printf("\nEl precio nuevo del producto debe ser: %lf ", nuevo);
    return 0; //Ejercicios resueltos aprenderaprogramar.com
}

 

 

Un resultado de ejecución podría ser este:

Programa precios de planta

Introduzca el precio actual: 75

Introduzca la inflacion del mes 1: 0.5

Introduzca la inflacion del mes 2: 0.8

Introduzca la inflacion del mes 3: 0.6

Introduzca la inflacion del mes 4: 0

Introduzca la inflacion del mes 5: -0.1

Introduzca la inflacion del mes 6: 0.9

 

El precio nuevo del producto debe ser: 77.044651

 

 

EJERCICIO Nº2: ENUNCIADO

En un complejo industrial se desea incentivar a los encargados de turnos de producción. A cada encargado le corresponde un turno. Hay 18 turnos, y por cada uno de ellos 40 operarios. Para evaluar a los encargados se ha hecho una encuesta entre los trabajadores. Se les ha pedido que evalúen a su encargado de 0 a 10 siendo el 5 el aprobado. Los resultados están almacenados en un array tipo Nota[turno, operario] donde turno indica el número de turno y operario el número de operario dentro del turno. Desarrollar un programa que determine en qué turnos todos los operarios del mismo han aprobado al encargado.

Nota: generar un archivo que contenga los datos a partir de un programa auxiliar que genere los datos y los guarde en un archivo de nombre evaluacion.dat. La generación de datos será pseudoaleatoria pero de forma “dirigida” para poder comprobar el funcionamiento del programa. Sabiendo que cada turno tiene 40 empleados, dejaremos una generación pseudoaleatoria entre 0 y 10 para todos los turnos excepto los número 3 y 18 (asociados a los datos 81 a 120 y 681 a 720), en los que los datos generados se deberán encontrar entre 5 y 10, de modo que sabemos de antemano que todos los empleados de los turnos nº3 y nº18 "han aprobado" a su encargado.

 

 

EJERCICIO Nº2: SOLUCIÓN

El programa auxiliar para crear el archivo con los datos sería el siguiente:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define TURNOS 18
#define TRABPORTURNO 40

//Ejercicios resueltos aprenderaprogramar.com

int main() {
    int i=0; int j=0;
    //numeroTrabajadores = TURNOS * TRABPORTURNO;
    srand(time(NULL)); //Semilla para numeros aleatorios
    FILE* fichero;     fichero = fopen("evaluacion.dat", "wt");
    for (i=1; i<=TURNOS; i++) {
        for (j=1; j<=TRABPORTURNO; j++) {
            if (i==3 || i==18) {
                //Turno 3 ó turno 18 pseudoaleatorio entre 5 y 10
                fprintf (fichero, "%d%c",  rand() % 6 + 5, '\n');
            } else {
                //Resto de turnos pseudoaleatorio entre 0 y 10
                fprintf (fichero, "%d%c",  rand() % 11, '\n');
            } //Cierre del if
        } //Cierre del for interno
    } //Cierre del for externo
    fclose(fichero);
    printf("Proceso completado");
    return 0;
}

 

 

Tras ejecutar este programa debemos comprobar que se haya creado un archivo denominado evaluacion.dat en el directorio donde estemos trabajando, cuyo contenido serán 720 líneas con números enteros, que representan los datos de la encuesta a los trabajadores.

El programa que lee los datos desde el archivo y los procesa sería el siguiente (tener en cuenta que el fichero evaluacion.dat debe estar en el directorio de trabajo).

/*** Evaluación de encargados ***/
#include <stdio.h>
#include <stdlib.h>

#define TURNOS 18
#define TRABPORTURNO 40

//Ejercicios resueltos aprenderaprogramar.com

int main() {
    int haySuspensos = 0; // 0 equivale a falso, 1 a verdadero

    int i=0;
    int j=0;

    int nota[TURNOS] [TRABPORTURNO];

    puts ("Programa Encuesta encargados \n");
    //Extracción de datos de archivo
    FILE* fichero;
    fichero = fopen("evaluacion.dat", "rt");

    for (i=0; i< TURNOS; i++) {
        for (j=0; j<TRABPORTURNO; j++) {
            fscanf(fichero, "%d", &nota[i][j]);
            if (nota[i][j] < 5) {
                haySuspensos = 1; //No todos los operarios del turno aprueban al encargado
            }

        } //Fin del bucle interno
        if (haySuspensos == 0) {
            printf ("\nTodos los operarios del turno %d han aprobado al encargado\n", i+1);
        }
        haySuspensos =0;
    }
    fclose(fichero);
    return 0;
}

 

 

El resultado de ejecución será similar a este:

Programa Encuesta encargados

Todos los operarios del turno 3 han aprobado al encargado

Todos los operarios del turno 18 han aprobado al encargado

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

Press any key to continue.

 

 

EJERCICIO

Se está realizando un estudio estadístico de los clientes que entran a un banco en cada hora a partir de su hora de apertura durante un día. El banco abre 6 horas al día y los datos de cuántas personas han entrado al banco en cada hora se encuentran almacenados en un array definido como clientesEntran[0], clientesEntran[1], … hasta clientesEntran[5]. Se desea desarrollar un programa que usando bucles y condicionales determine:

a) El total de personas que entraron al banco en el día.

b) Cuántas horas no entró ninguna persona y cuáles fueron.

c) Cuál fue la hora en la que entró el mayor número de personas.

d) El número medio de personas por hora que entraron al banco.

 

Considerar que en la primera hora entraron 12 personas, en la segunda 0, en la tercera 23, en la cuarta 45, en la quinta 21 y en la sexta 0. ¿Qué resultados muestra el programa?

Nota: en este tipo de ejercicios usamos arrays (arreglos) combinándolos con bucles de forma que para recorrer el array usamos un bucle, nunca escribimos una por una las variables que forman el array excepto si tenemos que asignarles un valor inicial.

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: