Jump to content
Fórum Script Brasil
  • 0

[Dúvida]: if/char


Francklin

Question

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.

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

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 by bruce845
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...