Компилятор Codeforces показывает другой результат, чем Code :: Blocks (вопрос 282A - Bit ++) - PullRequest
0 голосов
/ 21 июня 2020

Я пробовал разные компиляторы, доступные на странице отправки Codeforces, но ни один из разных компиляторов не дает таких результатов, как Code :: Block

Ссылка на проблему: https://codeforces.com/problemset/problem/282/A

Вот мой код:

#include <stdio.h>
#include <string.h>

int main() {
int count = 0, i = 0, final;
int x = 0;
char strg[3];

scanf("%d", &count);

for (i = 0; i < count; i++){
    scanf("%s", &strg[0], &strg[1], &strg[2]);
    if ((strcmp(strg,"x++") == 0) || (strcmp(strg,"++x") == 0)){
        x = x+1;
    } if ((strcmp(strg,"x--") == 0) || (strcmp(strg,"--x") == 0)){
        x = x-1;
    }
}
printf("%d", x);

}

Вывод страницы отправки: «Неправильный ответ, 1-е числа отличаются - ожидалось: '1', найдено: '0'» Однако Code :: Blocks печатает правильное значение, равное «1».

Отправка Codeforces:

Codeforces compiler output

Program running output:

Запуск кода из кодовых блоков

1 Ответ

1 голос
/ 21 июня 2020

strg[3] слишком короткое, чтобы вместить двухсимвольную строку. Это неопределенное поведение.

Поскольку оно не определено, оно работает в одной среде и не работает в другой.

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