Francklin Posted March 22, 2012 Report Share Posted March 22, 2012 Boa noite a todos!Bem, estou com um probleminha num código simples que estou fazendo.Não sei como executar uma ação se o usuário digitar 'sim' ou 'não'.#include <stdio.h> int main(){ int selecao; float n1, n2, soma, multiplicacao, divisao, subtracao; char escolha[4]; DE_NOVO: system ("clear"); printf ("Escolha qual calculo deseja realizar: \n\n"); printf ("1 - Soma\n"); printf ("2 - Subtracao\n"); printf ("3 - Multiplicacao\n"); printf ("4 - Divisao\n"); scanf ("%i", &selecao); if (selecao<1 || selecao>4) goto DE_NOVO; printf ("\nInforme um numero: "); scanf ("%f", &n1); ESCOLHA: printf ("\nInforme outro numero: "); scanf ("%f", &n2); switch (selecao) { case 1: soma = n1+n2; [b] printf ("\nA soma dos valores e igual a: %.2f", soma); printf ("\nDeseja realizar outra operacao?"); gets(escolha); if (escolha == 's') { goto DE_NOVO; } else {break;}[/b] case 2: subtracao = n1-n2; printf ("\nA subtracao dos valores e igual a: %.2f", subtracao); break; case 3: multiplicacao = n1*n2; printf ("\nA multiplicacao dos valores e igual a: %.2f", multiplicacao); break; case 4: if (n2==0) {printf ("não pode haver divisao por 0, por favor escolha outro denominador:"); goto ESCOLHA; break; } else { divisao = n1/n2; printf ("\nA divisao dos valores e igual a: %.2f", divisao); break;}} getchar();getchar(); }O problema está no case 1, já pesquisei em outros lugares e o pessoal indicava outros comandos, no entanto nunca deu certo. Quote Link to comment Share on other sites More sharing options...
0 bruce845 Posted March 22, 2012 Report Share Posted March 22, 2012 (edited) bem, você tem que levar em conta a diferença de um caracter só de uma string (palavra) inteira.char escolha[4]; gets(escolha); if (escolha == 's') { goto DE_NOVO; } Não sei se você já ouviu falar de ponteiros, mas quando você declara um vetor de qualquer variável(inclusive char), o nome do vetor retorna não um caractere mas o endereço de memória da posição da 1ª variável do vetor. Você está comparando dois tipos de dados completamente diferentes (escolha == 's'), sendo "escolha" um endereço de uma variável char e 's' um char. Isso NUNCA vai ser igual! Se você quiser comparar a 1ª letra que você digitou na string, você deverá comparar a primeira posição do vetor com o caracter desejado, aí se a primeira letra digitada for o 's'(minúsculo), ele entrará na condição. Veja o exemplo: char escolha[4]; gets(escolha); if (escolha[0] == 's') { goto DE_NOVO; } Note que eu estou comparando a primeira letra da string e se a primeira letra que for digitada for o 's' (minúsculo), ele entrará na condição. Agora se deseja comparar strings em C, use a função da biblioteca string.h que se chama strcmp(). Ela retorna 0 se a string for IGUAL (incluindo comparação minúscula/maiúscula). Veja o exemplo: char escolha[4]; gets(escolha); if (!strcmp(escolha,"Sim")) { goto DE_NOVO; }Se você digitar "SIM" ou "sim", ele não aceitará porque a função é "case sensitive" (sensível a maiúscula/minúscula).Procure saber mais sobre strings,vetores e ponteiros! Edited March 22, 2012 by bruce845 Quote Link to comment Share on other sites More sharing options...
0 Francklin Posted March 22, 2012 Author Report Share Posted March 22, 2012 Obrigado pela ajuda, acho que ainda estou muito "iniciante".Vou estudar mais, me aprofundar sobre vetores/matrizes e tal.Até mais o/ Quote Link to comment Share on other sites More sharing options...
Question
Francklin
Boa noite a todos!
Bem, estou com um probleminha num código simples que estou fazendo.
Não sei como executar uma ação se o usuário digitar 'sim' ou 'não'.
O problema está no case 1, já pesquisei em outros lugares e o pessoal indicava outros comandos, no entanto nunca deu certo.
Link to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.