Ir para conteúdo
Fórum Script Brasil
  • 0

Estou com uma função que não executa dentro do meu while. Alguém poderia me ajudar por favor?


C Rodolfo Gomes

Pergunta

Estou iniciando, ainda sei muito pouco e estou travando bastante, por isso procurei um fórum pra que boas almas possam me ajudar quando estiver travado sem conseguir sair de determinado problema, desde já agradeço.

Quando chamo a função calc_dados no meu while ela não executa, o compilador pula a função e pede novamente o cpf. 

 

#include<stdio.h>
#include<stdlib.h>
#include<locale.h>
#include<string.h>

typedef struct {
    char cpf[11], nome[30], sexo, profissao[30];
    int idade;
    float valordoacao;
}ficha_inscricao;        //Primeiro o nome da struct
 ficha_inscricao ficha;    //Segundo nome da struct seguido do nome da variavel tipo struct
 
int totH = 0, totM = 0, tot60 = 0, tot1000 = 0;      //Terceiro Declaração das variaveis globais, todas elas nessa questão são variaveis Contadoras.
float valorarrecadado = 0;

//Fazer a função pra calcular dados solicitados, errei por que declarei a função do tipo inteiro e nesse caso o certo é void. Por que não vai ser 
//necessario retornar um valor.

void calc_dados(char pSexo, int pIdade, float pValordoacao){   //Vamos utilizar os parametros dentro do if, e as variaveis globais de contador.
    if(pSexo == 'm' || pSexo == 'M')
        totH++;
    else if(pSexo == 'f' || pSexo == 'F')
        totM++;
    if(pIdade > 60)
        tot60++;
    if(pValordoacao > 1000)
        tot1000++;
    
    valorarrecadado += pValordoacao;    
}

void exibe_resultados(void) {
    printf("\nA quantidade de homens incritos é: %d\n", totH);
    printf("\nA quantidade de mulheres incritas é: %d", totM);
    printf("\nA quantidade de pessoas com mais de 60 anos incritos é: %d", tot60);
    printf("\nA quantidade de pessoas que doou mais de 1000 reais é: %d", tot1000);
    printf("\nO valor arrecadado é: %.1f", valorarrecadado);
}

main () {
    setlocale(LC_ALL, "Portuguese");
    
    printf("Informe o cpf:");
    scanf("%s", &ficha.cpf);
    
    while(strcmp(ficha.cpf, "0") != 0){  //Vai comparar a string digitada com 0, caso não seja 0 vai executar o while.
        printf("Digite nome:\n");
        scanf("%s", &ficha.nome);
        
        printf("Informe o sexo: [M]-Masculino ou [F]-Feminino\n");
        scanf("%s", &ficha.sexo);
    
        printf("Informe a profissão:\n");
        scanf("%s", &ficha.profissao);
        
        printf("Digite a idade:\n");
        scanf("%d", &ficha.idade);
        
        printf("Informe o valor doado:\n");
        scanf("%f", &ficha.valordoacao);    
        //Depois de pedir manualmente os valores necessarios chama-se a função e passa os parametros associados a string.
         
        calc_dados(ficha.sexo, ficha.idade, ficha.valordoacao);
        //Agora se pede o item que faz a condição de parada do laço pra que seja executado novamente ou saia.
        
        printf("Digite o cpf:\n");
        scanf("%s", &ficha.cpf);
    }
    
    //Terminado o laço, se chama a função pra mostrar os resultados que a questão pede.
    exibe_resultados();
    
    system("PAUSE");
    
}

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...