Ir para conteúdo
Fórum Script Brasil

lucastt182

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Tudo que lucastt182 postou

  1. Obrigado webpantoja mas não deu certo aqui. Fiz um for simples para verificar qual eram os valores das variáveis, e percebi que o programa está passando para a variável pessoas.sexo , o sexo digitado(M ou F) + a cor dos olhos digitada( C, V ou A) Resultando , por exemplo, MV . Não consegui encontrar uma solução para isso. Agradeço a ajuda do webpantoja , e peço que mais alguém me ajude :D Obrigado novamente :D
  2. Olá, eu queria pedir ajuda dos programadores mais experientes com um exercício de C. Eis o enunciado: "Foi realizada uma pesquisa sobre algumas características físicas de 50 habitantes de certa região. De cada habitante foram coletados os seguintes dados: sexo, altura, idade e cor dos olhos(A- azuis, V- verdes, C-castanhos). Faça um programa que leia os dados armazene-os em um registro tipo vetor e determine: * a média das pessoas com olhos castanhos e altura superior a 1.60 m; * a maior idade dos habitantes; * a quantidade de indivíduos do sexo feminino com idade entre 20 e 45 anos(inclusive) ou que tenham olhos verdes e altura inferior a 1.70m; * percentual de homens;" Estou com problemas nos dois últimos requisitos do programa, aqui está meu código ( utilizei um vetor de tamanho 2 no registro apenas para facilitar no processo de debug). Por enquanto estou apenas exibindo a quantidade de homens. #include <stdio.h> #include <stdlib.h> #include <string.h> // a função strupr necessita desta biblioteca // declarando os registros struct{ char sexo[1], corOlhos[1]; float altura; int idade; } pessoas[2]; int main(){ // declarando as variáveis int i, k, maiorIdade, qtdMulheres, qtdHomens; float somaIdades; char handler[1]; // inserindo os dados no registro for(i=0;i<2;i++){ printf("\nQual o sexo da %da. pessoa? M/F \n", i+1); scanf("%s", handler); // Este loop converte o que handler recebe para maiúsculo. for(k=0;handler[k]!=''; k++){ handler[k] = toupper(handler[k]); } // Fazendo a verificação do que a variável handler recebeu. Se passar na verificação, a variável pessoas[i].sexo recebe o valor de handler. // Se não passar na verificação, exibe mensagem e retorna ao início do loop if((strcmp(handler,"M")== 0) || (strcmp(handler, "F")==0)){ for(k=0;handler[k]!=''; k++) pessoas[i].sexo[k] = handler[k]; } else { printf("\nSexo inválido, digite apenas M ou F !"); i--; continue; } printf("\nDigite a altura: "); scanf("%f", &pessoas[i].altura); printf("\nDigite a idade: "); scanf("%d", &pessoas[i].idade); printf("\nQual a cor dos olhos? C(castanhos)/A(azuis)/V(verdes) : "); scanf("%s", handler); // Passando o que foi digitado para cor dos olhos para MAIÚSCULO e fazendo a verificação do que foi digitado. for(k=0; handler[k]!=''; k++) handler[k] = toupper(handler[k]); // Verificando se o valor digitado para cor dos olhos é igual a C, A ou V if((strcmp(handler,"C")==0) || (strcmp(handler,"A")==0) || (strcmp(handler,"V")==0)) { for(k=0;handler[k]!=''; k++) pessoas[i].corOlhos[k] = handler[k]; } else { printf("\n\nA cor dos olhos digitada é inválida! Utilize: C(castanhos), A(azuis) ou V(verdes!\n"); i--; continue; } } // verificando o registro somaIdades = 0; maiorIdade = 0; for(i=1;i<2;i++){ // soma a idade das pessoas de olhos castanhos e altura superior a 1,60 m // IMPORTANTE : para fazer a comparação entre 2 STRING's utiliza-se o comando STRCMP( string1, string2) => retorna ZERO se forem iguais if((strcmp(pessoas[i].corOlhos,"C")==0) && (pessoas[i].altura>1.60)) { somaIdades += pessoas[i].idade; } // verifica qual a maior idade entre as pessoas cadastradas no registro if(pessoas[i].idade> pessoas[maiorIdade].idade) maiorIdade = i; } qtdMulheres = 0; qtdHomens = 0; // é nesta parte aqui embaixo que estou com problemas V for(i=0;i<2;i++){ // verifica a quantidade de mulheres com idade entre 20 e 45 anos(inclusive). Se a verificação anterior retornar 0(zero), verifica a quantidade de mulheres de olhos verdes e altura //inferior a 1.70 m e salva essa quantidade em uma variável if(strcmp(pessoas[i].sexo,"F")==0){ // #rofl, essa verificação aqui tá pequena hein :P if((pessoas[i].idade>20) && (pessoas[i].idade<=45)) qtdMulheres++; if((strcmp(pessoas[i].corOlhos,"V")==0) && (pessoas[i].altura<1.70)) qtdMulheres++; } // calcula a quantidade de homens existentes no cadastro if(strcmp(pessoas[i].sexo,"M")==0) qtdHomens++; } // exibindo os resultados das verificações printf("\nA media das idades de pessoas de olhos castanhos e altura superior a 1.60 m é : %3.2f", somaIdades/2); printf("\nA maior idade das pessoas cadastradas é : %d", pessoas[maiorIdade].idade); printf("\nA quantidade de mulheres de idade entre 20 e 45 anos(inclusive) ou que tenham olhos verdes e altura inferior a 1.70 m é : %d", qtdMulheres); printf("\nA quantidade de homens é: %d\n", qtdHomens); return 0; }
×
×
  • Criar Novo...