single
Struct con Arreglos y Otras Structs
Desliza para mostrar el menú
En algunas estructuras, es necesario utilizar un arreglo de estructuras anidadas cuando un objeto contiene varios sub-objetos relacionados. Por ejemplo, si un estudiante puede tomar varios cursos, tiene sentido representar los cursos como un arreglo de estructuras dentro de la estructura Student.
Sintaxis de ejemplo:
OuterStruct.NestedStruct[1].NestedField;
Para acceder a un elemento del arreglo de estructuras anidadas, primero se hace referencia a la estructura externa, luego se utiliza un índice para seleccionar el elemento deseado del arreglo y, finalmente, se accede a un campo específico de ese elemento.
Ejemplo práctico
Suponga que cada estudiante tiene un nombre, edad y un conjunto de cursos. Cada curso contiene su título, instructor y número de créditos.
main.c
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#include <stdio.h> #include <string.h> struct Course { char name[50]; char instructor[50]; int credits; }; struct Student { char name[50]; int age; struct Course courses[3]; // array of nested structures }; int main() { struct Student student; // Initialize student strcpy(student.name, "Alice Johnson"); student.age = 20; // Initialize courses strcpy(student.courses[0].name, "Mathematics"); strcpy(student.courses[0].instructor, "Dr. Smith"); student.courses[0].credits = 4; strcpy(student.courses[1].name, "Computer Science"); strcpy(student.courses[1].instructor, "Prof. Brown"); student.courses[1].credits = 3; strcpy(student.courses[2].name, "History"); strcpy(student.courses[2].instructor, "Dr. Green"); student.courses[2].credits = 2; // Display information printf("Student: %s\n", student.name); printf("Age: %d\n", student.age); printf("Courses:\n"); for (int i = 0; i < 3; i++) { printf(" Course %d: %s, Instructor: %s, Credits: %d\n", i + 1, student.courses[i].name, student.courses[i].instructor, student.courses[i].credits); } // Example of accessing a specific nested field printf("\nInstructor of the second course: %s\n", student.courses[1].instructor); return 0; }
En este ejemplo, la estructura Student tiene un arreglo courses con tres elementos de tipo Course. Cada curso posee su propio título, instructor y número de créditos. Para acceder a un curso específico, utilice el índice del arreglo y el operador punto: student.courses[1].instructor.
El uso de arreglos de estructuras anidadas es útil para representar objetos con sub-objetos repetidos, como estudiantes con cursos, tiendas con productos o libros con autores.
Desliza para comenzar a programar
El estudiante está representado por una estructura Student que contiene un arreglo de tamaño fijo de estructuras anidadas Course. Cada curso tiene un nombre, un instructor y una cantidad de créditos. La función debe iterar por todos los cursos y sumar los créditos.
Implementar una función calculateTotalCredits con tipo de retorno int.
- Dentro de la función, crear una variable
intllamadatotalinicializada en0. - Utilizar un ciclo
forpara iterar desde0hasta el número de cursos (3). - Para cada curso, acceder a
creditsy sumarlo atotal. - Retornar el valor final de
total.
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla