viny3314 Posted May 21, 2020 at 10:20 PM Share Posted May 21, 2020 at 10:20 PM Criei um programa que o usuário informa seu nome, sexo e peso. E o resultado é retornar o nome da mulher com o menor peso e o nome do homem com maior peso, porém preciso de ajuda para que na saída fale o nome tanto dessa mulher quanto o homem, mas não tô conseguindo fazer isso. Só conseguir comparar os pesos. #include <stdio.h> #include <string.h> int main(){ int pessoas, i; float peso; float resultado = 0; float resultado2 = 0; char sexo; char nome[20]; printf("Digite o numero de pessoas: "); // quantas vezes o programa vai rodar para coletar os dados scanf("%i",&pessoas); for(i=0;i<pessoas;i++){ printf("Digite o nome da pessoa: "); scanf("%s", nome); printf("Digite seu peso: "); scanf("%f",&peso); printf("Digite [M] para Sexo Masculino ou [F] para Sexo Feminino: "); scanf("%s",&sexo); if(sexo == 'm' || sexo == 'M'){ while(peso > resultado){ resultado = peso; } } else if(sexo == 'f' || sexo == 'F'){ while(resultado2 == 0){ resultado2 = peso; } if (peso < resultado2){ resultado2 = peso; } } } printf("A Mulher de menor peso: %.2f kg", resultado2); printf("\nO Homem de maior peso: %.2f kg", resultado); printf(" %s ", nome); return 0; } Link to comment Share on other sites More sharing options...
diego.rax Posted May 22, 2020 at 05:38 PM Share Posted May 22, 2020 at 05:38 PM Os nomes das pessoas com maior e menor peso não estão sendo exibidos porque vc não armazenou em nenhum lugar como fez com os pesos. char mulher_menor_peso[21]; char homem_maior_peso[21]; // pra salvar o nome da mulher com menor peso vc pode fazer o seguinte quando encontrar esse menor peso strncpy(mulher_menor_peso, nome, 20); mulher_menor_peso[20] = '\0'; //de forma semelhante, pode fazer o seguinte quando encontrar o homem com maior peso strncpy(homem_maior_peso, nome, 20); homem_maior_peso[20] = '\0'; você pode encontrar os pesos da seguinte forma: #include <float.h> float peso_homem = 0; float peso_mulher = FLT_MAX float temp_peso; //vai armazenar temporiamente o peso inserido pelo usuário, independente do sexo //especificamente para ver o peso, vc poderia fazer desta forma. char sexo; sexo = getchar(); switch(sexo) { case 'm': case 'M': if ( temp_peso < peso_muher) peso_mulher = temp_peso; //mais a rotina pra copiar o nome sugerida anteriormente break; case 'h': case 'H': if (temp_peso > peso_homem) peso_homem = temp_peso; //mais a rotina pra copiar o nome break; default: fprintf(stderr, "não sei de que sexo vc é\n\n"); break; //redundante de certa forma } Adicionalmente, tem esse artigo que fala um pouco sobre entrada de dados em C http://sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html Link to comment Share on other sites More sharing options...
viny3314 Posted May 22, 2020 at 11:41 PM Author Share Posted May 22, 2020 at 11:41 PM 6 horas atrás, diego.rax disse: Os nomes das pessoas com maior e menor peso não estão sendo exibidos porque vc não armazenou em nenhum lugar como fez com os pesos. char mulher_menor_peso[21]; char homem_maior_peso[21]; // pra salvar o nome da mulher com menor peso vc pode fazer o seguinte quando encontrar esse menor peso strncpy(mulher_menor_peso, nome, 20); mulher_menor_peso[20] = '\0'; //de forma semelhante, pode fazer o seguinte quando encontrar o homem com maior peso strncpy(homem_maior_peso, nome, 20); homem_maior_peso[20] = '\0'; você pode encontrar os pesos da seguinte forma: #include <float.h> float peso_homem = 0; float peso_mulher = FLT_MAX float temp_peso; //vai armazenar temporiamente o peso inserido pelo usuário, independente do sexo //especificamente para ver o peso, vc poderia fazer desta forma. char sexo; sexo = getchar(); switch(sexo) { case 'm': case 'M': if ( temp_peso < peso_muher) peso_mulher = temp_peso; //mais a rotina pra copiar o nome sugerida anteriormente break; case 'h': case 'H': if (temp_peso > peso_homem) peso_homem = temp_peso; //mais a rotina pra copiar o nome break; default: fprintf(stderr, "não sei de que sexo vc é\n\n"); break; //redundante de certa forma } Adicionalmente, tem esse artigo que fala um pouco sobre entrada de dados em C http://sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html Adicionei no meu código e ficou assim: #include <stdio.h> #include <string.h> int main(){ int pessoas, i; float peso,altura; float resultado = 0; float resultado2 = 0; char sexo; char nome[20]; char ela[21]; char ele[21]; char novoele[23]; char novoela[23]; printf("Digite o numero de pessoas: "); scanf("%i",&pessoas); for(i=0;i<pessoas;i++){ printf("Digite o nome da pessoa: "); scanf("%s", nome); printf("Digite seu peso: "); scanf("%f",&peso); printf("Digite 'M' para Sexo Masculino ou 'F' para Sexo Feminino: "); scanf("%s",&sexo); if(sexo == 'm' || sexo == 'M'){ while(peso > resultado){ resultado = peso; strncpy(ele, nome, 20); ele[20] = '\0'; } if(peso==resultado){ strncpy(novoele, nome, 20); novoele[20] = '\0'; }} else if(sexo == 'f' || sexo == 'F'){ while (peso > resultado2){ resultado2 = peso; strncpy(ela, nome, 20); ela[20] = '\0'; } if(peso == resultado2){ strncpy(novoela, nome, 20); novoela[20] = '\0'; }}} printf("A(s) Mulher(es) de menor peso: %.2f kg", resultado2); printf(" %s ", ela); printf(" %s ", novoela); printf("\nO(s) Homem(ns) de maior peso: %.2f kg", resultado); printf(" %s ", ele); printf(" %s ", novoele); return 0; } Link to comment Share on other sites More sharing options...
viny3314 Posted May 22, 2020 at 11:45 PM Author Share Posted May 22, 2020 at 11:45 PM Tá quase pronto, mas o nome das pessoas sai repetido, tem como não acontecer isso?? desde já agradeço, você tem me ajudado muito!! Link to comment Share on other sites More sharing options...
diego.rax Posted May 24, 2020 at 01:47 PM Share Posted May 24, 2020 at 01:47 PM sai repetido pq vc está printando 2 vezes ué '-' não tem necessidade desses IFs todos, veja o que sugeri pra parte de comparação e separação dos nomes com maior e menor peso Link to comment Share on other sites More sharing options...
viny3314 Posted May 24, 2020 at 04:58 PM Author Share Posted May 24, 2020 at 04:58 PM 6 horas atrás, diego.rax disse: sai repetido pq vc está printando 2 vezes ué '-' não tem necessidade desses IFs todos, veja o que sugeri pra parte de comparação e separação dos nomes com maior e menor peso O código que você mandou tá dando erro Link to comment Share on other sites More sharing options...
diego.rax Posted May 25, 2020 at 02:12 PM Share Posted May 25, 2020 at 02:12 PM 21 horas atrás, viny3314 disse: O código que você mandou tá dando erro o que sugeri foram pedaços isolados de código apenas para exemplificar o que estava dizendo. Não é pra vc copiar e colar... Mas o problem da duplicidade é simplesmente o fato de vc estar chamando o printf duas vezes... Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.