Resumen: Struct de datos de estudiantes
Parte de la sección Logic & Flow del Journey de C de Coddy — lección 43 de 63.
Desafío
FácilCrea un programa en C que demuestre el flujo de trabajo completo del uso de structs con un sistema de gestión de estudiantes. Tu programa debe:
- Definir un
structllamadoStudentcon los siguientes miembros:- Un entero
idpara almacenar el número de identificación del estudiante - Un flotante
gradepara almacenar la calificación del estudiante
- Un entero
- En la función principal, crea una variable
Studentllamadastudent1 - Lee el ID y la calificación del estudiante desde la entrada usando
scanf:- Lee un entero para el ID y almacénalo en
student1.id - Lee un flotante para la calificación y almacénalo en
student1.grade
- Lee un entero para el ID y almacénalo en
- Después de leer la entrada, realiza la siguiente validación y cálculos:
- Si la calificación es mayor que 100.0, establécela en 100.0
- Si la calificación es menor que 0.0, establécela en 0.0
- Calcula una calificación de bonificación sumando 5.0 a la calificación actual (después de la validación)
- Si la calificación de bonificación excede 100.0, establece la calificación de bonificación en 100.0
- Imprime la información del estudiante en este formato exacto:
Student Information:ID: [id]Original Grade: [grade]Bonus Grade: [bonus_grade]Grade Status: [status]
- El estado de la calificación debe determinarse de la siguiente manera:
- Si la calificación original es 90.0 o superior:
Excellent - Si la calificación original es de 80.0 a 89.9:
Good - Si la calificación original es de 70.0 a 79.9:
Average - Si la calificación original es inferior a 70.0:
Needs Improvement
- Si la calificación original es 90.0 o superior:
Este desafío pone a prueba tu comprensión de la definición de structs, la creación de variables, el acceso a miembros mediante el operador de punto, el manejo de entradas con scanf y la lógica condicional para la validación y el procesamiento de datos. Practicarás el flujo de trabajo completo de trabajar con structs en un escenario práctico.
Pruébalo tú mismo
#include <stdio.h>
// TODO: Define la estructura Student aquí
int main() {
// TODO: Crea una variable Student llamada student1
// Leer entrada
int id;
float grade;
scanf("%d", &id);
scanf("%f", &grade);
// TODO: Almacena los valores de entrada en los miembros de la estructura
// TODO: Implementa la validación de la calificación y el cálculo de la bonificación
// TODO: Determina el estado de la calificación
// Mostrar los resultados
printf("Student Information:\n");
printf("ID: %d\n", /* TODO: imprimir ID del estudiante */);
printf("Original Grade: %.1f\n", /* TODO: imprimir calificación original */);
printf("Bonus Grade: %.1f\n", /* TODO: imprimir calificación con bonificación */);
printf("Grade Status: %s\n", /* TODO: imprimir estado de la calificación */);
return 0;
}Todas las lecciones de Logic & Flow
1Fundamentos de Punteros
¿Qué es un puntero?Declaración de punterosEl operador de dirección (&)El operador de desreferencia (*)Punteros NULLResumen: Conceptos básicos de punteros4Proyecto: Utilidad de texto simple
Descripción general del proyectoContar caracteres7Estructuras (structs)
¿Qué es un struct?Declaración de un structCreación de variables de tipo structAcceso a los miembros de un structInicialización de structsResumen: Struct de datos de estudiantes2Punteros y Arrays
Nombres de Arrays como PunterosElementos de un Array - PunterosAritmética de PunterosComparación de PunterosResumen: Recorrido de Arrays con Punteros5Punteros y funciones
Paso por valorPasar punteros a funcionesModificar variables mediante punterosUn ejemplo clásico: Intercambio (Swap)Pasar arrays a funcionesResumen: Argumentos de punteros a funciones3Arreglos de caracteres y cadenas
Cadenas como arreglos de charEl terminador nuloEntrada de cadenas con scanfUso de strlen()Uso de strcpy()Uso de strcat()Uso de strcmp()Resumen: Funciones básicas de cadenas