Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Struct con Arreglos y Otras Structs | Uso Avanzado de Structs
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Dominio de las Estructuras en C

bookStruct 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

main.c

copy
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.

Tarea

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.

  1. Dentro de la función, crear una variable int llamada total inicializada en 0.
  2. Utilizar un ciclo for para iterar desde 0 hasta el número de cursos (3).
  3. Para cada curso, acceder a credits y sumarlo a total.
  4. Retornar el valor final de total.

Solución

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 2
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

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?

close

bookStruct 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

main.c

copy
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.

Tarea

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.

  1. Dentro de la función, crear una variable int llamada total inicializada en 0.
  2. Utilizar un ciclo for para iterar desde 0 hasta el número de cursos (3).
  3. Para cada curso, acceder a credits y sumarlo a total.
  4. Retornar el valor final de total.

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 2
single

single

some-alt