Struct con Arreglos y Otras Structs
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.
Swipe to start coding
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
Can you show me a code example of how to define these nested structures?
How do I access or modify a specific course for a student?
What are some other real-world scenarios where nested structure arrays are useful?
Genial!
Completion tasa mejorada a 4.35
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.
Swipe to start coding
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