1
Crie um tipo de registro que contenha os seguintes campos: Nome, RA, frequencia, notas[3] e media. Crie um vetor de variáveis deste registro. Faça um programa que permita inserir, remover, visualizar e buscar elementos do registro pelo RA.
Crie um tipo de registro que contenha os seguintes campos: Nome, RA, frequencia, notas[3] e media. Crie um vetor de variáveis deste registro. Faça um programa que permita inserir, remover, visualizar e buscar elementos do registro pelo RA.
Passo 1
Beleza, vamos dar uma olhada no que você precisa fazer aqui! O exercício pede para criar um tipo de registro com os campos Nome, RA, frequência, notas[3] e média. Depois, precisamos criar um vetor desse tipo de registro e desenvolver um programa que permita inserir, remover, visualizar e buscar elementos pelo RA.
Para resolver isso, vamos usar conceitos de estruturas de dados (no caso, registros) e vetores. Também vamos precisar entender como manipular esses registros no programa para realizar as operações solicitadas.
Passo 2
Primeiro, vamos definir o tipo de registro. Dependendo da linguagem de programação que você está usando (como C, Python, Java, etc.), a sintaxe pode variar. Vou dar um exemplo em C, que é bem comum para esse tipo de exercício.
Em C, podemos definir um struct para representar o registro:
typedef struct {
char nome[50];
int RA;
float frequencia;
float notas[3];
float media;
} Registro;
Aqui, typedef cria um novo tipo chamado Registro com os campos que você mencionou.
Passo 3
Agora, vamos criar um vetor para armazenar múltiplos registros. Ainda em C, podemos definir um vetor de Registro. Vamos supor que o tamanho máximo do vetor seja 100 elementos:
#define MAX 100
Registro vetorRegistros[MAX];
int contador = 0; // Para acompanhar quantos registros já foram inseridos
Aqui, vetorRegistros é o nosso vetor de registros, e contador vai ajudar a saber quantos registros já estão armazenados.
Passo 4
Vamos criar funções para cada uma das operações que o programa deve realizar: inserir, remover, visualizar e buscar pelo RA.
Função para Inserir
void inserirRegistro() {
if (contador < MAX) {
printf("Digite o nome: ");
scanf("%s", vetorRegistros[contador].nome);
printf("Digite o RA: ");
scanf("%d", &vetorRegistros[contador].RA);
printf("Digite a frequencia: ");
scanf("%f", &vetorRegistros[contador].frequencia);
printf("Digite as 3 notas:\n");
vetorRegistros[contador].media = 0;
for(int i = 0; i < 3; i++) {
printf("Nota %d: ", i+1);
scanf("%f", &vetorRegistros[contador].notas[i]);
vetorRegistros[contador].media += vetorRegistros[contador].notas[i];
}
vetorRegistros[contador].media /= 3;
contador++;
printf("Registro inserido com sucesso!\n");
} else {
printf("Vetor cheio. Não é possível inserir mais registros.\n");
}
}
Explicação: Essa função verifica se ainda há espaço no vetor. Se sim, solicita que o usuário digite os dados, calcula a média das notas e incrementa o contador.
Função para Remover
void removerRegistro(int RA) {
int encontrado = -1;
for(int i = 0; i < contador; i++) {
if(vetorRegistros[i].RA == RA) {
encontrado = i;
break;
}
}
if(encontrado != -1) {
for(int i = encontrado; i < contador - 1; i++) {
vetorRegistros[i] = vetorRegistros[i+1];
}
contador--;
printf("Registro removido com sucesso!\n");
} else {
printf("Registro com RA %d não encontrado.\n", RA);
}
}
Explicação: Essa função busca pelo RA no vetor. Se encontrar, remove o registro deslocando os demais elementos para preencher o espaço vazio.
Função para Visualizar
void visualizarRegistros() {
if(contador == 0) {
printf("Nenhum registro para exibir.\n");
return;
}
for(int i = 0; i < contador; i++) {
printf("Registro %d:\n", i+1);
printf("Nome: %s\n", vetorRegistros[i].nome);
printf("RA: %d\n", vetorRegistros[i].RA);
printf("Frequência: %.2f%%\n", vetorRegistros[i].frequencia);
printf("Notas: %.2f, %.2f, %.2f\n", vetorRegistros[i].notas[0], vetorRegistros[i].notas[1], vetorRegistros[i].notas[2]);
printf("Média: %.2f\n", vetorRegistros[i].media);
printf("-------------------------\n");
}
}
Explicação: Essa função percorre o vetor e exibe os dados de cada registro armazenado.
Função para Buscar
void buscarRegistro(int RA) {
for(int i = 0; i < contador; i++) {
if(vetorRegistros[i].RA == RA) {
printf("Registro encontrado:\n");
printf("Nome: %s\n", vetorRegistros[i].nome);
printf("RA: %d\n", vetorRegistros[i].RA);
printf("Frequência: %.2f%%\n", vetorRegistros[i].frequencia);
printf("Notas: %.2f, %.2f, %.2f\n", vetorRegistros[i].notas[0], vetorRegistros[i].notas[1], vetorRegistros[i].notas[2]);
printf("Média: %.2f\n", vetorRegistros[i].media);
return;
}
}
printf("Registro com RA %d não encontrado.\n", RA);
}
Explicação: Essa função busca por um registro específico usando o RA informado e exibe seus dados se encontrado.
Passo 5
Por fim, vamos criar um menu para o usuário interagir com o programa, escolhendo qual operação deseja realizar.
int main() {
int opcao, RA;
while(1) {
printf("----- Menu -----\n");
printf("1. Inserir Registro\n");
printf("2. Remover Registro\n");
printf("3. Visualizar Registros\n");
printf("4. Buscar Registro pelo RA\n");
printf("5. Sair\n");
printf("Escolha uma opção: ");
scanf("%d", &opcao);
switch(opcao) {
case 1:
inserirRegistro();
break;
case 2:
printf("Digite o RA do registro a remover: ");
scanf("%d", &RA);
removerRegistro(RA);
break;
case 3:
visualizarRegistros();
break;
case 4:
printf("Digite o RA para buscar: ");
scanf("%d", &RA);
buscarRegistro(RA);
break;
case 5:
printf("Saindo do programa.\n");
return 0;
default:
printf("Opção inválida. Tente novamente.\n");
}
}
}
Explicação: Esse trecho cria um loop infinito que exibe as opções disponíveis. Dependendo da escolha do usuário, chama a função correspondente ou encerra o programa.
Resposta
Pronto! Com esses passos, você consegue criar um programa que gerencia registros contendo Nome, RA, frequência, três notas e a média, permitindo inserir, remover, visualizar e buscar registros pelo RA. Experimente compilar e rodar o programa para ver como tudo funciona na prática!