Возникли проблемы с инструкциями switch

0

Я пытался заставить этот код работать, но почему-то я не могу этого сделать.

#include <iostream.h>
#include <stdio.h>

int main() {

    int a,b,c;
    int y=3;
    int i=2;
    int g[] = {20};
    int m,k;
    int Z;

    printf("Enter a number for a");
    scanf("%d", &a);

    printf("Enter a number for b");
    scanf("%d", &b);

    printf("Enter a number for c");
    scanf("%d", &c);

    m=y;


    do
    {

        Z = a+b-c;

        switch(Z)
        {
        case '0':
        case '1': 
                k=17;
                m+=b;
                break;
        case '2': 
                m+=b;
                m=a;
                break;
        case '3':
                m=a-c;
                m+=b;
                m=a;
                break;
        case '7':
                m+=b;
                break;
        default:
                m=a;
                break;
        }

        g[m] = m%i;
        m--;



    }while(m>b);



}

Это та схема, которую мне пришлось превратить в кодирование. http://ff.tu-sofia.bg/PIK/Izpiti/MidTest07.html

y и я по умолчанию равны 3 и 2, массив g должен содержать 20 целых чисел, и пользователи должны вводить значения для a, b и c.

Теги:
switch-statement

1 ответ

3

Z - целое число, и ваши случаи ищут строки. избавиться от котировок вокруг чисел в случаях.

В этом случае массив g не содержит 20 целых чисел, в этом случае он содержит один элемент 20. Я думаю, что вы имели в виду g[20] = {}

Также как рассчитывается Z? Это (a+ b) -c или a+ (b -c)? Вам нужны скобки, чтобы сделать ваше намерение более ясным

Z = a+b-c;

 switch(Z)
    {
    case 0:
    case 1: 
            k=17;
            m+=b;
            break;
    case 2: 
            m+=b;
            m=a;
            break;
  • 1
    ' окружает символ, а не строку Значение char '0' равно 0.
  • 2
    Вы правы, это символ, но «0» не является десятичным 0, это десятичное 48 или 0x30.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню