Всем доброго времени суток! Задача состоит в том, что пользователь вводит количество элементов и заполняет сам массив, программа проверяет массив - являются ли все элементы одинаковыми. Моя реализация это конечно ошибка, выводит совершенно не тот результат.
Код:
int main() { int M;// кол-во элементов scanf("%d", &M);// ввод элементов
// ограничение на кол-во элементов if (M < 2 || M > 20) { printf("invalid input data"); return 0; }
int A[20];// массив, который будет заполняться
// заполнение массива for (int i = 0; i < M; i++) { scanf("%d", &A[i]); // ограничение на размер элемента массива if (A[i] < -1000 || A[i] > 1000) { printf("invalid input data"); return 0; } }
int flag = 0;// костыль для проверки // вот это - моя идея, как проверить, что все элементы одинаковые for (int i = 0; i < M; i++) { for (int j = 0; j < M; j++) { //если элемент равен следующему if (A[j] == A[j + 1]) flag = 1; else flag = 0; } }
Member
Статус: Не в сети Регистрация: 23.11.2015 Откуда: Москва
А зачем два цикла for при проверке? For по i не используется. В цикле по j ошибка, выход за границы диапазона (в последний проход j+1 равно М). Условие проверяет только последний элемент с элементом за границей массива... В общем, либо я чего-то не понимаю, либо это двойка...
Код:
for (int j = 1; j < M; j++) // т.к. минимум два элемента, можно начать с 1 { //если элемент не равен предыдущему, выход if (A[j] != A[j - 1]) break; //вариант: if (A[j] != A[0]) break; }
Member
Статус: Не в сети Регистрация: 23.11.2015 Откуда: Москва
Неправильно. У вас условие работает только один раз. Последний проход цикла. Что было в М-1 первые проходы, не учитывается. Одну из рализаций я вам написал.
Пройдите вручную пошагово массив из 4 элементов, поймёте, что не так.
Неправильно. У вас условие работает только один раз. Последний проход цикла. Что было в М-1 первые проходы, не учитывается. Одну из рализаций я вам написал.
Пройдите вручную пошагово массив из 4 элементов, поймёте, что не так.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения