Ir para conteúdo
Fórum Script Brasil
  • 0

Dois probleminhas com registro


Lyudmila Pavlichenko

Pergunta

Olá!

Estou com dois probleminhas no código abaixo:

1) Na impressão do registro, o campo "DISCIPLINA" tá dando um bug onde quando o nome da matéria tem 10 caracteres, mesmo sendo este o tamanho da coluna, o nome da disciplina fica exatamente assim: "MatematicaAPROVADO", desformatando a tabela toda. Eu fiz aquele macete do espaçamento + tamanho do nome da coluna + tamanho declarado do vetor, mas dá esse erro sempre que o nome da disciplina é igual ao tamanho da coluna. Mesmo que eu dê uns espaçamentos a mais no título da coluna, isso acontece.

2) Eu não sei como realizar comandos para que o usuário consiga excluir um boletim inteiro do vetor de registros, ou mesmo partes de um registro (por exemplo, excluir os dados referentes a média e a disciplina).

Desde já, agradeço a paciência e disposição!! 🥲🥲🥲

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#include <conio.h>

int main(void)
{   //comando para escrever com acentuação
    setlocale(LC_ALL, "Portuguese");
    
    //criação do novo tipo de variável (registro): boletim
    typedef struct {
        
        int matricula;
        char nome[20], disciplina [10], situacao[10];
        float media;
        
        
    } tipo_boletim;
    
    //declaração do vetor "alunos" do tipo boletim e demais variáveis
    tipo_boletim alunos[50];
    int continuar, opcao, numero, alterar, visualizar, e = 0, q = 0, i = 0;

    //estrutura de comando para preencher os 50 boletins, alterá-los, visualizá-los ou sair do programa
    do
    {   
        system("cls");
        
        printf("MENU\n\n1. Preencher novo boletim\n2. Editar boletim\n3. Visualizar Boletim\n4. Sair\n");
        scanf("%d", &opcao);
        
         switch(opcao)
         {
             case 1:  
                     system("cls");
                 
                     q++;
                 
                     printf("Digite o número de matrícula do Aluno %d: ", q);
                     scanf("%d", &alunos[e].matricula);
                 
                     printf("\nDigite o nome do Aluno: ");
                     fflush(stdin);
                     gets(alunos[e].nome);
                 
                     printf("\nDigite o nome da disciplina: ");
                     fflush(stdin);
                     gets(alunos[e].disciplina);
                 
                     printf("\nDigite a média do Aluno: ");
                     scanf("%f", &alunos[e].media);
                     
                     if(alunos[e].media >= 7)
                     {  
                        fflush(stdin);
                         strcpy(alunos[e].situacao, "APROVADO"); 
                     } else
                       {     
                             fflush(stdin);
                                strcpy(alunos[e].situacao, "REPROVADO");
                       }
                     
                     fflush(stdin);
                     
                     e++;
                     break;
            
             case 2:
                     system("cls");
                 
                     printf("Qual boletim você deseja alterar?\n\n");
                 
                     for(i == 0; i < q; i++)
                     {
                          printf("%d.%s\n", i+1, alunos[i].nome);
                     }
                     
                     scanf("%d", &numero);
                     
                     numero = numero - 1;
                 
                     if(numero >= q)
                     {
                          printf("\n\nBoletim Inexistente!");
                     
                     } else
                       {
                                do
                             {
                           
                                    system("cls");
                 
                                 printf("\nO que você deseja alterar no boletim do aluno %s?\n", alunos[numero].nome);
                                 printf("1. Matrícula\n2. Nome\n3. Disciplina\n4. Média\n5. Sair");
                                 scanf("%d", &alterar);                         
                         
                                 switch(alterar)
                                 {
                                      case 1:
                                              system("cls");
                                    
                                              printf("Digite o novo número de matrícula do aluno %s: ", alunos[numero].nome);
                                              scanf("%d", &alunos[numero].matricula);
                                              break;
                             
                                      case 2:
                                              system("cls");
                                    
                                              printf("Digite o novo nome da matrícula %d: ", alunos[numero].matricula);
                                              fflush(stdin);
                                              gets(alunos[numero].nome);
                                              fflush(stdin);
                                              break;
                                    
                                      case 3:
                                              system("cls");
                                    
                                              printf("Digite o novo nome da disciplina do boletim %d: ", numero + 1);
                                              fflush(stdin);
                                              gets(alunos[numero].disciplina);
                                              fflush(stdin);
                                              break;
                                    
                                      case 4:
                                              system("cls");
                                    
                                              printf("Digite a nova média do aluno %s: ", alunos[numero].nome);
                                              scanf("%f", &alunos[numero].media);
                                              break;
                                    
                                     default:
                                             if((alterar != 1) && (alterar != 2) && (alterar != 3) && (alterar != 4) && (alterar != 5))
                                             {
                                                 printf("Comando Incorreto!\n\n");
                                                getche();
                                                
                                             } break;
                                 }
                         
                             } while (alterar != 5);
                   } break;
                   
             case 3:
                     system("cls");
                         
                     printf("Escolha o boletim que deseja visualizar:\n");
                         
                     for(i = 0; i < q; i++)
                     {
                             
                         printf("%d.%s\n", i+1, alunos[i].nome);
                     }
                     
                     scanf("%d", &visualizar);
                     
                     visualizar = visualizar - 1;
                         
                     if(visualizar >= q)
                     {
                         printf("\n\nBoletim Inexistente!");
                     
                     }else
                      {
                        system("cls");
                        printf("ETE GINÁSIO PERNAMBUCANO\n\n\n");
                        printf("BOLETIM\n\n");
                        printf("________________________________________________________________________\n");
                        printf("\nMATRÍCULA   NOME                   DISCIPLINA   MÉDIA   SITUAÇÃO");
                        printf("\n________________________________________________________________________\n");
                        printf("\n%9d   %-20s   %-10s   %5.2f   %-10s", alunos[visualizar].matricula, alunos[visualizar].nome, alunos[visualizar].disciplina, alunos[visualizar].media, alunos[visualizar].situacao);
                        printf("\n______________________________________________________________________\n");
                        printf("\nTecle enter para voltar ao menu principal...\n");
                             
                        getche();
                      } break;                
                         
             default:
                      if((alterar != 1) && (alterar != 2) && (alterar != 3) && (alterar != 4))
                     {
                        printf("Comando Incorreto!\n\n");
                        getche();
                                                
                     } break;                     
                                                                       

}while (opcao != 4);

system("pause");

}
 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...