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).
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");
Pergunta
Lyudmila Pavlichenko
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
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.