Desafio de programação em C

O segundo desafio de programação em C consiste em criar um sistema de cadastro de alunos da UTFPR. O sistema permitirá armazenar as informações do RA, nome, idade e duas notas em um arquivo. Os alunos devem ser armazenados em uma estrutura de dados do tipo struct e as operações de cadastro, consulta e atualização devem ser implementadas por meio de funções.

Conteúdo proposto no desafio: structs, funções, manipulação de arquivos e ponteiros.

Cole no comentário o código de implementação do desafio.

Fonte: Pexels.

4 comentários em “Desafio de programação em C

  1. #include <stdio.h>

    #define TAM 100

    struct Aluno {
    int RA;
    char nome[50];
    int idade;
    float notas[2];
    };

    int main() {
    struct Aluno alunos[TAM];
    int totalAlunos = 0;
    int opcao;
    int ra;
    int i = 0;

    do {
        printf("\nSistema de Cadastro de Alunos da UTFPR\n");
        printf("1 - Cadastrar Aluno\n");
        printf("2 - Consultar Aluno\n");
        printf("3 - Atualizar Aluno\n");
        printf("0 - Sair\n");
        printf("Escolha uma opcao: ");
        scanf("%d", &opcao);
    
        switch (opcao) {
            case 1: {
                int novaRA;
                char novoNome[50];
                int novaIdade;
                float novasNotas[2];
    
                if (totalAlunos >= TAM) {
                    printf("Limite máximo de alunos atingido!\n");
                    break;
                }
    
                printf("Cadastro de Aluno\n");
                printf("RA: ");
                scanf("%d", &novaRA);
    
                printf("Nome: ");
                scanf(" %[^\n]s", novoNome);
    
                printf("Idade: ");
                scanf("%d", &novaIdade);
    
                printf("Nota 1: ");
                scanf("%f", &novasNotas[0]);
    
                printf("Nota 2: ");
                scanf("%f", &novasNotas[1]);
    
                alunos[totalAlunos].RA = novaRA;
                strcpy(alunos[totalAlunos].nome, novoNome);
                alunos[totalAlunos].idade = novaIdade;
                alunos[totalAlunos].notas[0] = novasNotas[0];
                alunos[totalAlunos].notas[1] = novasNotas[1];
    
                totalAlunos++;
                printf("Aluno cadastrado com sucesso!\n");
                break;
            }
            case 2:
                printf("Consulta de Aluno\n");
                printf("RA do aluno: ");
                scanf("%d", &ra);
    
                int encontrado = 0;
                for (i = 0; i < totalAlunos; i++) {
                    if (alunos[i].RA == ra) {
                        printf("RA: %d\n", alunos[i].RA);
                        printf("Nome: %s\n", alunos[i].nome);
                        printf("Idade: %d\n", alunos[i].idade);
                        printf("Nota 1: %.2f\n", alunos[i].notas[0]);
                        printf("Nota 2: %.2f\n", alunos[i].notas[1]);
                        encontrado = 1;
                        break;
                    }
                }
    
                if (!encontrado) {
                    printf("Aluno não encontrado!\n");
                }
                break;
            case 3:
                printf("Atualização de Aluno\n");
                printf("RA do aluno: ");
                scanf("%d", &ra);
    
                encontrado = 0;
                for (i = 0; i < totalAlunos; i++) {
                    if (alunos[i].RA == ra) {
                        printf("Novo Nome: ");
                        scanf(" %[^\n]s", alunos[i].nome);
    
                        printf("Nova Idade: ");
                        scanf("%d", &alunos[i].idade);
    
                        printf("Nova Nota 1: ");
                        scanf("%f", &alunos[i].notas[0]);
    
                        printf("Nova Nota 2: ");
                        scanf("%f", &alunos[i].notas[1]);
    
                        printf("Aluno atualizado com sucesso!\n");
                        encontrado = 1;
                        break;
                    }
                }
    
                if (!encontrado) {
                    printf("Aluno não encontrado!\n");
                }
                break;
            case 0:
                printf("Saindo do programa.\n");
                break;
            default:
                printf("Opção inválida!\n");
        }
    } while (opcao != 0);
    
    return 0;
    

    }

    Curtir

  2. #include <stdio.h>

    #define TAM 100

    struct Aluno {
    int RA;
    char nome[50];
    int idade;
    float notas[2];
    };

    int main() {
    struct Aluno alunos[TAM];
    int totalAlunos = 0;
    int opcao;
    int ra;
    int i = 0;

    do {
        printf("\nSistema de Cadastro de Alunos da UTFPR\n");
        printf("1 - Cadastrar Aluno\n");
        printf("2 - Consultar Aluno\n");
        printf("3 - Atualizar Aluno\n");
        printf("0 - Sair\n");
        printf("Escolha uma opcao: ");
        scanf("%d", &opcao);
    
        switch (opcao) {
            case 1: {
                int novaRA;
                char novoNome[50];
                int novaIdade;
                float novasNotas[2];
    
                if (totalAlunos >= TAM) {
                    printf("Limite máximo de alunos atingido!\n");
                    break;
                }
    
                printf("Cadastro de Aluno\n");
                printf("RA: ");
                scanf("%d", &novaRA);
    
                printf("Nome: ");
                scanf(" %[^\n]s", novoNome);
    
                printf("Idade: ");
                scanf("%d", &novaIdade);
    
                printf("Nota 1: ");
                scanf("%f", &novasNotas[0]);
    
                printf("Nota 2: ");
                scanf("%f", &novasNotas[1]);
    
                alunos[totalAlunos].RA = novaRA;
                strcpy(alunos[totalAlunos].nome, novoNome);
                alunos[totalAlunos].idade = novaIdade;
                alunos[totalAlunos].notas[0] = novasNotas[0];
                alunos[totalAlunos].notas[1] = novasNotas[1];
    
                totalAlunos++;
                printf("Aluno cadastrado com sucesso!\n");
                break;
            }
            case 2:
                printf("Consulta de Aluno\n");
                printf("RA do aluno: ");
                scanf("%d", &ra);
    
                int encontrado = 0;
                for (i = 0; i < totalAlunos; i++) {
                    if (alunos[i].RA == ra) {
                        printf("RA: %d\n", alunos[i].RA);
                        printf("Nome: %s\n", alunos[i].nome);
                        printf("Idade: %d\n", alunos[i].idade);
                        printf("Nota 1: %.2f\n", alunos[i].notas[0]);
                        printf("Nota 2: %.2f\n", alunos[i].notas[1]);
                        encontrado = 1;
                        break;
                    }
                }
    
                if (!encontrado) {
                    printf("Aluno não encontrado!\n");
                }
                break;
            case 3:
                printf("Atualização de Aluno\n");
                printf("RA do aluno: ");
                scanf("%d", &ra);
    
                encontrado = 0;
                for (i = 0; i < totalAlunos; i++) {
                    if (alunos[i].RA == ra) {
                        printf("Novo Nome: ");
                        scanf(" %[^\n]s", alunos[i].nome);
    
                        printf("Nova Idade: ");
                        scanf("%d", &alunos[i].idade);
    
                        printf("Nova Nota 1: ");
                        scanf("%f", &alunos[i].notas[0]);
    
                        printf("Nova Nota 2: ");
                        scanf("%f", &alunos[i].notas[1]);
    
                        printf("Aluno atualizado com sucesso!\n");
                        encontrado = 1;
                        break;
                    }
                }
    
                if (!encontrado) {
                    printf("Aluno não encontrado!\n");
                }
                break;
            case 0:
                printf("Saindo do programa.\n");
                break;
            default:
                printf("Opção inválida!\n");
        }
    } while (opcao != 0);
    
    return 0;
    

    }

    Curtir

  3. Desafio 2
    #include <stdio.h>
    #include <stdlib.h>

    struct aluno{
    int RA;
    char nome[100];
    int id;
    float n1;
    float n2;
    };

    void cadastrarAluno( struct aluno aluno) {
    FILE *arquivo = fopen(“alunos.txt”, “a”);
    if (arquivo == NULL) {
    printf(“Erro ao abrir o arquivo!\n”);
    return;
    }

    fprintf(arquivo, "%d;%s;%d;%.2f;%.2f\n", aluno.RA, aluno.nome, aluno.id, aluno.n1, aluno.n2);
    
    fclose(arquivo);
    
    printf("Aluno cadastrado com sucesso!\n");
    

    }

    void consultarAlunos() {
    FILE *arquivo = fopen(“alunos.txt”, “r”);
    if (arquivo == NULL) {
    printf(“Erro ao abrir o arquivo!\n”);
    return;
    }

    struct aluno aluno;
    
    printf("Alunos cadastrados:\n");
    
    while (fscanf(arquivo, "%d;%[^;];%d;%f;%f\n", &aluno.RA, aluno.nome, &aluno.id, &aluno.n1, &aluno.n2) != EOF) {
        printf("RA: %d\n", aluno.RA);
        printf("Nome: %s\n", aluno.nome);
        printf("Idade: %d\n", aluno.id);
        printf("Nota 1: %.2f\n", aluno.n1);
        printf("Nota 2: %.2f\n", aluno.n2);
        printf("\n");
    }
    
    fclose(arquivo);
    

    }

    void atualizarNotas(int RA, float novaN1, float novaN2) {
    FILE *arquivo = fopen(“alunos.txt”, “r+”);
    if (arquivo == NULL) {
    printf(“Erro ao abrir o arquivo!\n”);
    return;
    }

    struct aluno aluno;
    
    FILE *temp = fopen("temp.txt", "w");
    if (temp == NULL) {
        printf("Erro ao abrir o arquivo temporário!\n");
        fclose(arquivo);
        return;
    }
    
    int encontrado = 0;
    
    while (fscanf(arquivo, "%d;%[^;];%d;%f;%f\n", &aluno.RA, aluno.nome, &aluno.id, &aluno.n1, &aluno.n2) != EOF) {
        if (aluno.RA == RA) {
            aluno.n1 = novaN1;
            aluno.n2 = novaN2;
            encontrado = 1;
        }
    
        fprintf(temp, "%d;%s;%d;%.2f;%.2f\n", aluno.RA, aluno.nome, aluno.id, aluno.n1, aluno.n2);
    }
    
    fclose(arquivo);
    fclose(temp);
    
    if (encontrado) {
        remove("alunos.txt");
        rename("temp.txt", "alunos.txt");
        printf("Notas atualizadas com sucesso!\n");
    } else {
        remove("temp.txt");
        printf("Aluno não encontrado!\n");
    }
    

    }

    int main() {
    int op;
    struct aluno aluno;

    do {
        printf("Sistema de Cadastro de Alunos\n");
        printf("1 - Cadastrar aluno\n");
        printf("2 - Consultar alunos\n");
        printf("3 - Atualizar notas\n");
        printf("0 - Sair\n");
        printf("Escolha uma opcao: ");
        scanf("%d", &op);
    
        switch (op) {
            case 1:
                printf("RA: ");
                scanf("%d", &aluno.RA);
                printf("Nome: ");
                scanf(" %[^\n]", aluno.nome);
                printf("Idade: ");
                scanf("%d", &aluno.id);
                printf("Nota 1: ");
                scanf("%f", &aluno.n1);
                printf("Nota 2: ");
                scanf("%f", &aluno.n2);
    
                cadastrarAluno(aluno);
                break;
            case 2:
                consultarAlunos();
                break;
            case 3:
                int RA;
                float novaN1, novaN2;
    
                printf("RA do aluno: ");
                scanf("%d", &RA);
                printf("Nova nota 1: ");
                scanf("%f", &novaN1);
                printf("Nova nota 2: ");
                scanf("%f", &novaN2);
    
                atualizarNotas(RA, novaN1, novaN2);
                break;
            case 0:
                printf("Saindo do programa...\n");
                break;
            default:
                printf("Opcao invalida!\n");
                break;
        }
    
        printf("\n");
    } while (op != 0);
    
    return 0;
    

    }

    Curtir

  4. #include <stdio.h>

    #define TAM 100

    struct Aluno {
    int RA;
    char nome[50];
    int idade;
    float n1, n2;
    };

    int main() {
    struct Aluno alunos[TAM];
    int numAlunos = 0;
    int opcao;
    int ra;
    int i = 0;

    do {
    printf(“\nCadastro de Alunos da UTFPR\n”);
    printf(“1 – Cadastrar Aluno\n”);
    printf(“2 – Consultar Aluno\n”);
    printf(“3 – Atualizar Aluno\n”);
    printf(“0 – Sair\n”);
    printf(“Escolha uma opcao: “);
    scanf(“%d”, &opcao);

    switch (opcao) {
        case 1: {
            int novoRA;
            char novoNome[50];
            int novoIdade;
            float novon1, novon2;
    
            if (numAlunos >= TAM) {
                printf("Limite máximo de alunos atingido!\n");
                break;
            }
    
            printf("Cadastro de Aluno\n");
            printf("RA: ");
            scanf("%d", &novoRA);
    
            printf("Nome: \n");
            scanf(" %[^\n]s", novoNome);
    
            printf("Idade: \n");
            scanf("%d", &novoIdade);
    
            printf("Nota 1: \n");
            scanf("%f", &novon1);
    
            printf("Nota 2: \n");
            scanf("%f", &novon2);
    
            alunos[numAlunos].RA = novoRA;
    
            alunos[numAlunos].idade = novoIdade;
            alunos[numAlunos].n1 = novon1;
            alunos[numAlunos].n2 = novon2;
    
            numAlunos++;
            printf("Aluno cadastrado com sucesso!\n");
            break;
        }
        case 2:{
    
            printf("Consulta de Aluno\n");
            printf("RA do aluno: ");
            scanf("%d", &ra);
    
            int encontrado = 0;
            for (i = 0; i < numAlunos; i++) {
                if (alunos[i].RA == ra) {
                    printf("RA: %d\n", alunos[i].RA);
                    printf("Nome: %s\n", alunos[i].nome);
                    printf("Idade: %d\n", alunos[i].idade);
                    printf("Nota 1: %.2f\n", alunos[i].n1);
                    printf("Nota 2: %.2f\n", alunos[i].n2);
                    encontrado = 1;
                    break;
                }
            }
    
            if (!encontrado) {
                printf("Aluno não encontrado!\n");
            }
            break;
    
        }
        case 3:{
    
            printf("Atualização de Aluno\n");
            printf("RA do aluno: ");
            scanf("%d", &ra);
    
            int encontrado = 0;
            for (i = 0; i < numAlunos; i++) {
                if (alunos[i].RA == ra) {
                    printf("Novo Nome: ");
                    scanf(" %[^\n]s", alunos[i].nome);
    
                    printf("Nova Idade: ");
                    scanf("%d", &alunos[i].idade);
    
                    printf("Nova Nota 1: ");
                    scanf("%f", &alunos[i].n1);
    
                    printf("Nova Nota 2: ");
                    scanf("%f", &alunos[i].n2);
    
                    printf("Aluno atualizado com sucesso!\n");
                    encontrado = 1;
                    break;
                }
            }
    
            if (!encontrado) {
                printf("Aluno não encontrado!\n");
            }
            break;
        }
        case 0:
            printf("Saindo do programa.\n");
            break;
        default:
            printf("Opção inválida!\n");
    }
    

    } while (opcao != 0);

    return 0;
    }

    Curtir

Deixar mensagem para Thaís Camargo Cancelar resposta

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.