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.
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();
Pergunta
C Rodolfo Gomes
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
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.