Estou há dias preso nesse exercício da lista de Matrizes Heterogêneas, acredito que por um detalhe, que não encontro solução. É o seguinte: o que não funciona bem é as opções de mostrar o grupo de pessoas com determinada altura (opções 2, 3 e 4 do menu). Eu cadastro todos corretamente, mas na hora de exibir só quem tem 1,5m ou menos, ele exibe todos os cadastrados, e assim acontece com quem tem 1,5m e com quem tem entre 1,5m e menos de 2m. Ao invés de filtrar a opção solicitada, ele me mostra tudo que cadastrei, entendeu? Segue abaixo código:
/*
4. Elaborar um programa que armazene o nome e a altura de 15 pessoas com o uso de
registros. O programa deve usar um menu que execute as seguintes etapas:
a) Cadastrar os 15 registros.
b) Apresentar os registros (nome e altura) das pessoas com 1.5m ou menores.
c) Apresentar os registros (nome e altura) das pessoas com mais de 1.5m.
d) Apresentar os registros (nome e altura) das pessoas com mais de 1.5m e menos de
2.0m.
e) Apresentar todos os registros com a média extraída de todas as alturas armazenadas.
f) Sair do programa de cadastro.
*/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<locale.h>int opcao,encontrou=0;typedefstruct cadastro{char nome[41];float altura,media;}Cadastro;Cadastro cad[15];int j=0;float alturas=0;void menu(){
fflush(stdin);
printf("Opções:\n");
printf("1 - cadastrar as pessoas e suas alturas\n");
printf("2 - relação das pessoas com 1,5m ou menores\n");
printf("3 - relação das pessoas com 1,5m\n");
printf("4 - relação das pessoas com mais de 1,5m e menos de 2m\n");
printf("5 - exibir relação completa de todos os cadastrados\n");
printf("6 - sair\n");}void cadastros(){for(j=0;j<3;j++){
printf("Cadastro da %iª pessoa:\n",j+1);
printf("Nome: ");
fflush(stdin);fgets(cad[j].nome,41,stdin);
printf("Altura: ");
scanf("%f",&cad[j].altura);
alturas=alturas+cad[j].altura;
printf("\n");
system("cls");}}void listaalturasmenos15(){if(cad[j].altura<=1,5){
printf("Lista com a relação das pessoas com 1,5m ou menores:\n\n");for(j=0;j<3;j++){if(cad[j].altura!='\0'){
encontrou=1;
printf("Registro %i:\n",j+1);
printf("Nome: %s",cad[j].nome);
printf("Altura: %.2f\n\n",cad[j].altura);}}if(!encontrou){
printf("Não há, cadastradas nesta lista, pessoas com 1,5m ou menores!\n\n");}}}void listaalturascom15(){if(cad[j].altura=1,5){
printf("Lista com a relação das pessoas com 1,5m:\n\n");for(j=0;j<3;j++){if(cad[j].altura!='\0'){
encontrou=1;
printf("Registro %i:\n",j+1);
printf("Nome: %s",cad[j].nome);
printf("Altura: %.2f\n\n",cad[j].altura);}}if(!encontrou){
printf("Não há, cadastradas nesta lista, pessoas com 1,5m!\n\n");}}}void listaalturasmais15(){if(2<=cad[j].altura>1,5){
printf("Lista com a relação das pessoas com mais de 1,5m e menos de 2m:\n\n");for(j=0;j<3;j++){if(cad[j].altura!='\0'){
encontrou=1;
printf("Registro %i:\n",j+1);
printf("Nome: %s",cad[j].nome);
printf("Altura: %.2f\n\n",cad[j].altura);}}if(!encontrou){
printf("Não há, cadastradas nesta lista, pessoas com mais de 1,5m e menos de 2m!\n\n");}}}void exibe(){
printf("Lista com a relação completa de todos os cadastrados e média das alturas:\n");for(j=0;j<3;j++){if(cad[j].nome[0]!='\0'){
encontrou=1;
printf("Registro %i:\n",j+1);
printf("Nome: %s",cad[j].nome);
printf("Altura: %.2f\n\n",cad[j].altura);}}
cad[j].media=alturas/3;
printf("Média: %.2f\n\n",cad[j].media);if(!encontrou){
printf("Nada foi cadastrado ainda. Utilize a opção 1 do Menu e cadastre!\n\n");}}
main(){
setlocale(LC_ALL,"Portuguese");while(opcao!=6){
menu();
printf("Escolha a opcão: ");
scanf("%i",&opcao);
system("cls");switch(opcao){case1:cadastros();break;case2:listaalturasmenos15();break;case3:listaalturascom15();break;case4:listaalturasmais15();break;case5:exibe();break;case6:exit(0);break;default: printf("A opção é inválida. Informe corretamente.\n\n");break;}}
cadastros();
listaalturasmenos15();
listaalturascom15();
listaalturasmais15();
exibe();return0;}
Pergunta
brunnorodrigues
Estou há dias preso nesse exercício da lista de Matrizes Heterogêneas, acredito que por um detalhe, que não encontro solução. É o seguinte: o que não funciona bem é as opções de mostrar o grupo de pessoas com determinada altura (opções 2, 3 e 4 do menu). Eu cadastro todos corretamente, mas na hora de exibir só quem tem 1,5m ou menos, ele exibe todos os cadastrados, e assim acontece com quem tem 1,5m e com quem tem entre 1,5m e menos de 2m. Ao invés de filtrar a opção solicitada, ele me mostra tudo que cadastrei, entendeu? Segue abaixo código:
Link para o comentário
Compartilhar em outros sites
2 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.