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

[Dúvida]: if/char


Francklin

Pergunta

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 para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 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!

Editado por bruce845
Link para o comentário
Compartilhar em outros sites

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...