Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Struct com Arrays e Outros Structs | Uso Avançado de Structs
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Dominando Structs em C

bookStruct com Arrays e Outros Structs

Em algumas estruturas, torna-se necessário utilizar um array de estruturas aninhadas quando um objeto contém vários sub-objetos relacionados. Por exemplo, se um estudante pode cursar várias disciplinas, faz sentido representar as disciplinas como um array de estruturas dentro da estrutura Student.

Sintaxe de exemplo:

OuterStruct.NestedStruct[1].NestedField;

Para acessar um elemento do array de estruturas aninhadas, primeiro faz-se referência à estrutura externa, depois utiliza-se um índice para selecionar o elemento desejado do array e, por fim, acessa-se um campo específico desse elemento.

Exemplo prático

Imagine que cada estudante possui um nome, idade e um conjunto de disciplinas. Cada disciplina contém seu título, instrutor e 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; }

Neste exemplo, a estrutura Student possui um array courses com três elementos do tipo Course. Cada curso possui seu próprio título, instrutor e número de créditos. Para acessar um curso específico, utilize o índice do array e o operador ponto: student.courses[1].instructor.

O uso de arrays de estruturas aninhadas é útil para representar objetos com subobjetos repetidos, como estudantes com cursos, lojas com produtos ou livros com autores.

Tarefa

Swipe to start coding

O estudante é representado por uma estrutura Student que contém um array de tamanho fixo de estruturas aninhadas Course. Cada curso possui um nome, instrutor e número de créditos. A função deve iterar por todos os cursos e somar os créditos.

Implemente uma função calculateTotalCredits com tipo de retorno int.

  1. Dentro da função, crie uma variável int chamada total inicializada com 0.
  2. Utilize um laço for para iterar de 0 até o número de cursos (3).
  3. Para cada curso, acesse credits e adicione ao total.
  4. Retorne o valor final de total.

Solução

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 2
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

close

bookStruct com Arrays e Outros Structs

Deslize para mostrar o menu

Em algumas estruturas, torna-se necessário utilizar um array de estruturas aninhadas quando um objeto contém vários sub-objetos relacionados. Por exemplo, se um estudante pode cursar várias disciplinas, faz sentido representar as disciplinas como um array de estruturas dentro da estrutura Student.

Sintaxe de exemplo:

OuterStruct.NestedStruct[1].NestedField;

Para acessar um elemento do array de estruturas aninhadas, primeiro faz-se referência à estrutura externa, depois utiliza-se um índice para selecionar o elemento desejado do array e, por fim, acessa-se um campo específico desse elemento.

Exemplo prático

Imagine que cada estudante possui um nome, idade e um conjunto de disciplinas. Cada disciplina contém seu título, instrutor e 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; }

Neste exemplo, a estrutura Student possui um array courses com três elementos do tipo Course. Cada curso possui seu próprio título, instrutor e número de créditos. Para acessar um curso específico, utilize o índice do array e o operador ponto: student.courses[1].instructor.

O uso de arrays de estruturas aninhadas é útil para representar objetos com subobjetos repetidos, como estudantes com cursos, lojas com produtos ou livros com autores.

Tarefa

Swipe to start coding

O estudante é representado por uma estrutura Student que contém um array de tamanho fixo de estruturas aninhadas Course. Cada curso possui um nome, instrutor e número de créditos. A função deve iterar por todos os cursos e somar os créditos.

Implemente uma função calculateTotalCredits com tipo de retorno int.

  1. Dentro da função, crie uma variável int chamada total inicializada com 0.
  2. Utilize um laço for para iterar de 0 até o número de cursos (3).
  3. Para cada curso, acesse credits e adicione ao total.
  4. Retorne o valor final de total.

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 2
single

single

some-alt