Как установить символ, символ как условие для цикла - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь зациклить мой код (простой калькулятор), где он перезапускается, если вы пытаетесь разделить некоторое число на 0. Я здесь часами, но не могу увидеть проблему. Кстати, я новичок.

Пробовал использовать do while, использовать while и use if, каждый раз, когда программа просто игнорирует мое состояние. Теперь он зацикливается каждый раз, даже если условия, которые я установил, не выполняются.

Как мне установить "N2 = 0 и операция, являющаяся '/'" как условие?

#include <stdio.h>
#include <stdlib.h>

int main() {

    float N1, N2, resultado;
    char operacao;

    printf("Ola usuario! \n");
    printf("Para comecar, por favor digite o primeiro numero: ");
    scanf_s("%f", &N1);
    printf("Digite o segundo numero: ");
    scanf_s("%f", &N2);

    printf("\n Qual operacao aritmetica deseja realizar hoje? \n");
    printf("Escolha um dos 4 simbolos'+,-,* ou /': ");
    scanf_s(" %c", &operacao);
    printf("\n");

    while ((N2 = 0) || (operacao == '/')); {
        printf("Operacao nao suportada! \n");
        printf("Digite novamente o segundo numero: \n");
        scanf_s("%f", &N2);
        printf("Escolha um dos 4 simbolos'+,-,* ou /': ");
        scanf_s(" %c ", &operacao);
    }

    switch (operacao)
    {
    case '+':
        resultado = N1 + N2;
        break;
    case '-':
        resultado = N1 - N2;
        break;
    case '*':
        resultado = N1 * N2;
        break;
    case '/':
        resultado = N1 / N2;
        break;

    }

    printf("\n O resultado da operacao escolhida e: %.1f", resultado);
    printf("\n\n");

    system("pause");
    return 0;
}

1 Ответ

0 голосов
/ 21 июня 2019

Измените цикл while следующим образом

 while (N2 == 0 && operacao == '/') {
    printf("Operacao nao suportada! \n");
    printf("Digite novamente o segundo numero: \n");
    scanf("%f", &N2);
    printf("Escolha um dos 4 simbolos'+,-,* ou /': ");
    scanf("%c", &operacao);
}

Удалил паразит;в конце while (N2 == 0 && operacao == '/') Это вызвало бесконечный цикл, не позволяющий ему перейти к реальному телу, которое мы хотели выполнить.Изменено условие цикла while, так как мы хотим, чтобы оно выполнялось только в том случае, если N2 равно нулю 'И' operacao is '/' в любом другом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...