viny3314 Postado Maio 21, 2020 em 22:20 Compartilhar Postado Maio 21, 2020 em 22:20 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 para o comentário Compartilhar em outros sites More sharing options...
diego.rax Postado Maio 22, 2020 em 17:38 Compartilhar Postado Maio 22, 2020 em 17:38 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 para o comentário Compartilhar em outros sites More sharing options...
viny3314 Postado Maio 22, 2020 em 23:41 Autor Compartilhar Postado Maio 22, 2020 em 23:41 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 para o comentário Compartilhar em outros sites More sharing options...
viny3314 Postado Maio 22, 2020 em 23:45 Autor Compartilhar Postado Maio 22, 2020 em 23:45 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 para o comentário Compartilhar em outros sites More sharing options...
diego.rax Postado Maio 24, 2020 em 13:47 Compartilhar Postado Maio 24, 2020 em 13:47 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 para o comentário Compartilhar em outros sites More sharing options...
viny3314 Postado Maio 24, 2020 em 16:58 Autor Compartilhar Postado Maio 24, 2020 em 16:58 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 para o comentário Compartilhar em outros sites More sharing options...
diego.rax Postado Maio 25, 2020 em 14:12 Compartilhar Postado Maio 25, 2020 em 14:12 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 para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Arquivado
Este tópico foi arquivado e está fechado para novas respostas.