Программа на C со стеком, имеющим int и char - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть домашнее задание, и вопрос звучит так: Получите от пользователя до 20 целых чисел и поместите их в стек (статический стек), нажав «o» на клавиатуре, всплывающее окно стекачисла в обратном порядке.Подсказка (от моего учителя): вытаскивайте числа один за другим из стека.

Моя проблема в том, что эта программа печатает реверс ввода с помощью 'o' .И если я ввожу двузначное число, он печатает его также в обратном порядке.например: 67 ---> 76.

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

My Main:

int i , x = 0 ,count = 0; 
    stack s1;
    stack_init(&s1);

    printf("Please enter numbers: \n");
    scanf_s("%c", &x);
    while(x != 'o' )
    {
        scanf_s("%c", &x);
        stack_push(&s1, x);
        count++;
    }
    for (i = 0; i < count; i++)
    {
        printf("%c", stack_pop(&s1));
    }

1 Ответ

3 голосов
/ 30 апреля 2019

Ваша проблема в порядке операций: вы всегда помещаете вход в стек сразу после его чтения.Только после этого вы проверяете, введен ли пользователь 'o'.Обратитесь к порядку ваших операций внутри цикла, чтобы исправить это:

for (;;) {
    // read input
    // test if input is "o" and exit loop
    // convert input to number and push onto stack.
}

Кроме того, я предлагаю читать строки , а не символы, из ввода.Таким образом, пользователь может правильно вводить многозначные числа.

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