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.

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!

Exercícios relacionados