@famousman204

Что не так в #define?

Есть 100 элементов в массиве, все элементы изначально равны нулю. Нужно сделать так, чтобы они начали менять своё значение на 1 или 0 в определённом порядке:
1. Изменить значение всем элементам массива на 1.
2. Поменять значение каждому второму элементу в массиве.
3. поменять значение каждому третьему элементу в массиве.
4. Сделать действие 1-3 ещё 97 раз.
5. Найти все 1 в массиве и показать на экран их индекс.
Задачку взял отсюда
и всё бы ничего, дело делалось и цвело, но как решил запустить получил это
5e506aacbd11d125126407.png
Не важно, комментировал я все printf'ы или нет, всегда на выхлопе получал это. С чем это связано, и почему работает не так, как должно?
p.s. Для полноты истории скажу, что я понимаю define как штуку которая просто подставит вместо человеческого слова какое то значение.
p.p.s. чтобы не возникало вопросов, то исходник был сохранён и скомпилирован заново.
5e507b0aa2864852876862.png
#include <stdio.h>
#define OPEN 1
#define CLOSE 0

void switch_state(int *status)
{
    if(*status == CLOSE)
    {
        *status = OPEN;
        //printf("OPEN");

    }
    else
    {
        *status = CLOSE;
        //printf("CLOSE");
    }
}

int main() 
{
    int state[100] = {CLOSE};
    int i = 0;
    while (i != 100)
    {
        if (i % 2 == 0)
            switch_state(&state[i]);

        else if(i % 3 == 0)
            switch_state(&state[i]);
            
        else
        {
            switch_state(&state[i]);
            //printf("%i\n", state[i]);
        }
        i++;
        
    }    
    return 0;    
}
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
Сама задача странноватая.
Сделать действие 1-3 ещё 97 раз.

так как в п.1 всем элементам устанавливается единица, то результат последнего, 98-го повторения будет такой-же, как и после первого прохода.

Причем п.1 у вас не реализован в коде, как и п.3, и п.5.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Кликнет Санкт-Петербург
До 150 000 ₽
Eltex Новосибирск
от 80 000 ₽
IT Force Краснодар
от 130 000 до 200 000 ₽