gust.php 1 Denunciar post Postado Julho 11, 2016 Senhores, boa tarde. Preciso da ajuda de vcs. Estou fazendo um trabalho para faculdade e tenho que criar um programinha em C para fazer o seguinte. Tenho que cadastrar 3 pessoas com nome, idade, sexo, quantidade de filhos e renda. Depois mostrar quantos homens, quantas mulheres. Tem mais coisa, mais acredito que resolvendo isso, resolvo o resto. Estou com a estrutura montada e compilando sem erro, só que o resultado esta saindo com números absurdos. Tipo: Quantos homens e quantas mulheres cadastradas ? O resultado aparece -321674 homens e 21345 mulheres meu código esta assim: #include <stdio.h> #include <string.h> struct registro { char nome[30]; int idade; char sexo; int nfilhos; float renda; }; int main() { struct registro cadastro [3]; int i, op, totalh, totalm, qhomem, qmulher, j, trenda, cod; char homem = 'M', mulher = 'F'; op = 0; while (op !=6) { printf("======================================================================= \n"); printf("1 - CADASTRAR \n"); printf("2 - PERCENTUAL DE MULHERES E HOMENS \n"); printf("3 - NUMERO DE PESSOAS QUE GANHAM ACIMA DE 500 REAIS \n"); printf("4 - PERCENTUAL DE PESSOAS QUE TEM AO MENOS 1 FILHO \n"); printf("5 - NUMERO DE PESSOAS QUE NASCERAM A PARTIR DO ANO 2000 \n"); printf("6 - SAIR \n"); printf("======================================================================== \n"); printf("DIGITE UMA OPÇAO: "); scanf("%d", &op); if (op == 1) { for (i=0; i<3; i++) { printf("Digite o nome: \n"); scanf("%29s", cadastro[i].nome); printf("Digite a idade: \n"); scanf("%d", &cadastro[i].idade); printf("Qual o sexo - M ou F: \n"); scanf("\n%c", &cadastro[i].sexo); printf("Quntidade de filhos: \n"); scanf("%d", &cadastro[i].nfilhos); printf("Digite sua renda: \n"); scanf("%f", &cadastro[i].renda); } } if (op == 2) { while (j < 3) { if(cadastro[i].sexo == homem) { totalh = (totalh + 1); } else if(cadastro[i].sexo == mulher) { totalm = (totalm + 1); } j++; } printf("%d Total de Homens: \n", totalh); printf("%d Total de Mulheres: \n", totalm); } Alguem pode ajudar? Grato. Compartilhar este post Link para o post Compartilhar em outros sites
gust.php 1 Denunciar post Postado Julho 12, 2016 Senhores, boa tarde. Preciso da ajuda de vcs. Estou fazendo um trabalho para faculdade e tenho que criar um programinha em C para fazer o seguinte. Tenho que cadastrar 3 pessoas com nome, idade, sexo, quantidade de filhos e renda. Depois mostrar quantos homens, quantas mulheres. Tem mais coisa, mais acredito que resolvendo isso, resolvo o resto. Estou com a estrutura montada e compilando sem erro, só que o resultado esta saindo com números absurdos. Tipo: Quantos homens e quantas mulheres cadastradas ? O resultado aparece -321674 homens e 21345 mulheres meu código esta assim: #include <stdio.h> #include <string.h> struct registro { char nome[30]; int idade; char sexo; int nfilhos; float renda; }; int main() { struct registro cadastro [3]; int i, op, totalh, totalm, qhomem, qmulher, j, trenda, cod; char homem = 'M', mulher = 'F'; op = 0; while (op !=6) { printf("======================================================================= \n"); printf("1 - CADASTRAR \n"); printf("2 - PERCENTUAL DE MULHERES E HOMENS \n"); printf("3 - NUMERO DE PESSOAS QUE GANHAM ACIMA DE 500 REAIS \n"); printf("4 - PERCENTUAL DE PESSOAS QUE TEM AO MENOS 1 FILHO \n"); printf("5 - NUMERO DE PESSOAS QUE NASCERAM A PARTIR DO ANO 2000 \n"); printf("6 - SAIR \n"); printf("======================================================================== \n"); printf("DIGITE UMA OPÇAO: "); scanf("%d", &op); if (op == 1) { for (i=0; i<3; i++) { printf("Digite o nome: \n"); scanf("%29s", cadastro[i].nome); printf("Digite a idade: \n"); scanf("%d", &cadastro[i].idade); printf("Qual o sexo - M ou F: \n"); scanf("\n%c", &cadastro[i].sexo); printf("Quntidade de filhos: \n"); scanf("%d", &cadastro[i].nfilhos); printf("Digite sua renda: \n"); scanf("%f", &cadastro[i].renda); } } if (op == 2) { while (j < 3) { if(cadastro[i].sexo == homem) { totalh = (totalh + 1); } else if(cadastro[i].sexo == mulher) { totalm = (totalm + 1); } j++; } printf("%d Total de Homens: \n", totalh); printf("%d Total de Mulheres: \n", totalm); } Alguem pode ajudar? Grato. Fala pessoa, ninguém pode ajudar? Estou com dificuldade nesse trecho do código aqui: if (op == 2) { while (j < 3) { if(cadastro[i].sexo == homem) { totalh = (totalh + 1); } else if(cadastro[i].sexo == mulher) { totalm = (totalm + 1); } j++; } printf("%d Total de Homens: \n", totalh); printf("%d Total de Mulheres: \n", totalm); } o printf esta retornando um valor absurdo: tipo Total de homemns: -261548 Total de mulheres: 326764 Algo assim. O que estou fazendo de errado na comparação do campo sexo? Eu tenho que ler o vetor da struct antes e depois comprar? Se é isso, como fazer? Ajudem, please. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Julho 12, 2016 Cadê a inicialização das variáveis antes de usar?Não fique dando postup... Compartilhar este post Link para o post Compartilhar em outros sites
gust.php 1 Denunciar post Postado Julho 12, 2016 Oi Isis, boa tarde. Vc leu a mensagem para tentar ajudar? Todas as variáveis estão iniciadas, na segunda citação que fiz, só inclui o trecho do código onde eu acho que o problema esta. Pode deixar que não vou mais dar postup. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Julho 13, 2016 Li inclusive o código p/ perguntar isso. int i, op, totalh, totalm, qhomem, qmulher, j, trenda, cod; Primeiro uso de totalm e totalh sem inicialização é justamente a contagem dentro do while. Compartilhar este post Link para o post Compartilhar em outros sites
Wilkyn Fernandes Taborda 0 Denunciar post Postado Novembro 28, 2019 Em 13/07/2016 at 08:40, _Isis_ disse: Li inclusive o código p/ perguntar isso. int i, op, totalh, totalm, qhomem, qmulher, j, trenda, cod; Primeiro uso de totalm e totalh sem inicialização é justamente a contagem dentro do while. É verdade. O programa mostra o valor de variáveis não inicializadas e que também são incrementadas. Quando não damos um valor inicial a uma variável ela irá conter qualquer valor que esteja gravado naquela região de memória que ela usa para armazenar o valor de seu tipo. Isso é lixo de memória. São bytes que ocupam aquela região até que o valor dessa variável seja sobrescrito. No caso desse programa o valor dessa variável é incrementado então pelo motivo anterior e também por esse o programa mostra números absurdos. Compartilhar este post Link para o post Compartilhar em outros sites