Logo Hardware.com.br
Ana_gds
Ana_gds Novo Membro Registrado
3 Mensagens 0 Curtidas

Ajuda- Programação em C

#1 Por Ana_gds 01/12/2014 - 00:59
Boa Noite, estou com uma dúvida nesse código (aprendendo vetores rs), não está lendo a resposta da enquete, somente a idade e imprimindo duas vezes em determinado momento e não lê, desde já agradeço. =)
[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]
[HASHTAG]#define[/HASHTAG] TAM 5
int main (){
char quest[TAM];
int idade[TAM];
char opcao;
int opcao_o=0;
int opcao_b=0;
int opcao_r=0;
int opcao_p=0;
int i;
int percentual=0;
for (i=0; i=TAM; i++){
printf("\n-Entre com a sua idade");
scanf("%d", &idade[ i ]);
printf("\n1-Informe o se o filme foi otimo (O)");
printf("\n2-Informe b se o filme foi bom (B)");
printf("\n3-Informe r se o filme foi regular (R)");
printf("\n4-Informe p se o filme foi pessimo (P)");
scanf("%c", &quest[ i ]);

if ((quest[ i ] == 'o') || (quest[ i ] == 'O'))
opcao_o=opcao_o+1;



else if ((quest[ i ] == 'b') || (quest[ i ] == 'B'))
opcao_b=opcao_b+1;



else if ((quest[ i ] == 'r') || (quest[ i ] == 'R'))
opcao_r=opcao_r+1;


else if ((quest[ i ] == 'p') || (quest[ i ] == 'P'))
opcao_p=opcao_p+1;



}
percentual= opcao_b-opcao_r;
printf("\nQuantidade de respostas b: %d\n", opcao_b);
printf("\nA diferenca entre bom e regular: %d\n", percentual);
system ("pause");
}
Ana_gds
Ana_gds Novo Membro Registrado
3 Mensagens 0 Curtidas
#3 Por Ana_gds
01/12/2014 - 06:42
screenblack disse:
1) Tente trocar:

scanf("%c", &quest[ i ]);

Por:

scanf(" %c", &quest[ i ]);


2) Tente trocar:

else if ((quest[ i ] == 'p') || (quest[[ i ] == 'P'))

Por:

else if ((quest[ i ] == 'p') || (quest[ i ] == 'P'))


Isso já deve resolver o seu problema.

Bom, creio que não seja isso, pois esses espaços e esse colchete duplicado veio do crtlc+ctrlv do compilador pra cá.
screenblack
screenblack Super Participante Registrado
360 Mensagens 18 Curtidas
#4 Por screenblack
01/12/2014 - 07:35
A expressão está correta com espaço:

scanf(" %c", &quest[ i ]);


Um outro erro que percebi agora, está no "for()":

for (i=0; i < TAM; i++)


Testei o código e funcionou.
Saída:

-Entre com a sua idade12

1-Informe o se o filme foi otimo (O)
2-Informe b se o filme foi bom (B)
3-Informe r se o filme foi regular (R)
4-Informe p se o filme foi pessimo (P)o

-Entre com a sua idade13

1-Informe o se o filme foi otimo (O)
2-Informe b se o filme foi bom (B)
3-Informe r se o filme foi regular (R)
4-Informe p se o filme foi pessimo (P)b

-Entre com a sua idade14

1-Informe o se o filme foi otimo (O)
2-Informe b se o filme foi bom (B)
3-Informe r se o filme foi regular (R)
4-Informe p se o filme foi pessimo (P)r

-Entre com a sua idade15

1-Informe o se o filme foi otimo (O)
2-Informe b se o filme foi bom (B)
3-Informe r se o filme foi regular (R)
4-Informe p se o filme foi pessimo (P)p

-Entre com a sua idade16

1-Informe o se o filme foi otimo (O)
2-Informe b se o filme foi bom (B)
3-Informe r se o filme foi regular (R)
4-Informe p se o filme foi pessimo (P)b

Quantidade de respostas b: 2

A diferenca entre bom e regular: 1

Process returned 0 (0x0) execution time : 12.282 s
Press any key to continue.
Ana_gds
Ana_gds Novo Membro Registrado
3 Mensagens 0 Curtidas
#5 Por Ana_gds
01/12/2014 - 19:49
screenblack disse:
A expressão está correta com espaço:

scanf(" %c", &quest[ i ]);


Um outro erro que percebi agora, está no "for()":

for (i=0; i < TAM; i++)


Testei o código e funcionou.
Saída:

-Entre com a sua idade12

1-Informe o se o filme foi otimo (O)
2-Informe b se o filme foi bom (B)
3-Informe r se o filme foi regular (R)
4-Informe p se o filme foi pessimo (P)o

-Entre com a sua idade13

1-Informe o se o filme foi otimo (O)
2-Informe b se o filme foi bom (B)
3-Informe r se o filme foi regular (R)
4-Informe p se o filme foi pessimo (P)b

-Entre com a sua idade14

1-Informe o se o filme foi otimo (O)
2-Informe b se o filme foi bom (B)
3-Informe r se o filme foi regular (R)
4-Informe p se o filme foi pessimo (P)r

-Entre com a sua idade15

1-Informe o se o filme foi otimo (O)
2-Informe b se o filme foi bom (B)
3-Informe r se o filme foi regular (R)
4-Informe p se o filme foi pessimo (P)p

-Entre com a sua idade16

1-Informe o se o filme foi otimo (O)
2-Informe b se o filme foi bom (B)
3-Informe r se o filme foi regular (R)
4-Informe p se o filme foi pessimo (P)b

Quantidade de respostas b: 2

A diferenca entre bom e regular: 1

Process returned 0 (0x0) execution time : 12.282 s
Press any key to continue.


Nossa, era esse espaço no %c mesmo. Muito Obrigada :*
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal