Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gust.php

Struct vetor

Recommended Posts

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

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

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

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

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
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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.