Recapitulação: Struct de Dados de Aluno
Parte da seção Lógica e Fluxo do Journey de C da Coddy. Lição 43 de 63.
Desafio
FácilCrie um programa em C que demonstre o fluxo de trabalho completo do uso de structs com um sistema de gerenciamento de estudantes. Seu programa deve:
- Definir uma
structchamadaStudentcom os seguintes membros:- Um inteiro
idpara armazenar o número de identificação do estudante - Um float
gradepara armazenar a nota do estudante
- Um inteiro
- Na função principal, criar uma variável
Studentchamadastudent1 - Ler o ID e a nota do estudante da entrada usando
scanf:- Ler um inteiro para o ID e armazená-lo em
student1.id - Ler um float para a nota e armazená-lo em
student1.grade
- Ler um inteiro para o ID e armazená-lo em
- Após ler a entrada, realizar as seguintes validações e cálculos:
- Se a nota for maior que 100.0, defini-la como 100.0
- Se a nota for menor que 0.0, defini-la como 0.0
- Calcular uma nota bônus adicionando 5.0 à nota atual (após a validação)
- Se a nota bônus exceder 100.0, defini-la como 100.0
- Imprimir as informações do estudante exatamente neste formato:
Student Information:ID: [id]Original Grade: [grade]Bonus Grade: [bonus_grade]Grade Status: [status]
- O status da nota deve ser determinado da seguinte forma:
- Se a nota original for 90.0 ou superior:
Excellent - Se a nota original estiver entre 80.0 e 89.9:
Good - Se a nota original estiver entre 70.0 e 79.9:
Average - Se a nota original for inferior a 70.0:
Needs Improvement
- Se a nota original for 90.0 ou superior:
Este desafio testa sua compreensão da definição de structs, da criação de variáveis, do acesso a membros usando o operador ponto, do tratamento de entradas com scanf e da lógica condicional para validação e processamento de dados. Você praticará o fluxo de trabalho completo de uso de structs em um cenário prático.
Experimente você mesmo
#include <stdio.h>
// TODO: Defina a struct Student aqui
int main() {
// TODO: Crie uma variável Student chamada student1
// Ler entrada
int id;
float grade;
scanf("%d", &id);
scanf("%f", &grade);
// TODO: Armazene os valores de entrada nos membros da struct
// TODO: Implemente a validação da nota e o cálculo do bônus
// TODO: Determine o status da nota
// Exibir os resultados
printf("Student Information:\n");
printf("ID: %d\n", /* TODO: imprimir o ID do estudante */);
printf("Original Grade: %.1f\n", /* TODO: imprimir a nota original */);
printf("Bonus Grade: %.1f\n", /* TODO: imprimir a nota com bônus */);
printf("Grade Status: %s\n", /* TODO: imprimir o status da nota */);
return 0;
}Todas as lições de Lógica e Fluxo
1Fundamentos de Ponteiros
O que é um Ponteiro?Declarando PonteirosO Operador de Endereço (&)O Operador de Desreferência (*)Ponteiros NULLRecapitulação: Fundamentos de Ponteiros4Projeto: Utilitário de Texto Simples
Visão Geral do ProjetoContando Caracteres7Estruturas (structs)
O que é uma Struct?Declarando uma StructCriando Variáveis de StructAcessando Membros de uma StructInicializando StructsRecapitulação: Struct de Dados de Aluno2Ponteiros e Arrays
Nomes de Arrays como PonteirosElementos de Array - PonteirosAritmética de PonteirosComparando PonteirosRecapitulação: Percorrendo Arrays com Ponteiros5Ponteiros e Funções
Passagem por ValorPassando Ponteiros para FunçõesModificando Variáveis via PonteirosUm Exemplo Clássico: SwapPassando Arrays para FunçõesRecapitulação: Ponteiros como Argumentos3Arrays de Caracteres e Strings
Strings como Arrays de charO Terminador NuloEntrada de Strings com scanfUsando strlen()Usando strcpy()Usando strcat()Usando strcmp()Recapitulação: Funções Básicas de Strings6Gerenciamento de Memória
Memória Stack vs. HeapAlocação Dinâmica - malloc()Usando sizeof() para AlocaçãoVerificando Falhas de AlocaçãoLiberando Memória com free()Alocando com calloc()Recapitulação: Array Dinâmico9Projeto: Cadastro Simples de Contatos
Projeto: Definir a Struct de ContatoFunção para Criar um ContatoPratique por conta própria: Compilador de C online