bool f = false;
for(int i(0);i < n;i++)
{
cin >> a[i];
for(int j(i+1);j <=n;j++)
if(a[i] == a[j])f = true;
if (f) break; cout << "hlo";
}
Он ищет есть ли похожие элементы в массиве. А как он работает?
Другие языки программирования и технологии
КАК РАБОТАЕТ ЭТОТ КОД НА С++?
bool f = false; пока нет схожих элементов, логической переменной f присваивается значение false - нет, тип переменной булева
for(int i(0);i < n;i++) открываем цикл с переменной счётчиком i целого типа integer
{
cin >> a[i];
for(int j(i+1);j <=n;j++) сравниваем все переменные
if(a[i] == a[j])f = true; если сравнение удачное, логической переменнoй f присваем true
if (f) break; cout << "hlo";
}
for(int i(0);i < n;i++) открываем цикл с переменной счётчиком i целого типа integer
{
cin >> a[i];
for(int j(i+1);j <=n;j++) сравниваем все переменные
if(a[i] == a[j])f = true; если сравнение удачное, логической переменнoй f присваем true
if (f) break; cout << "hlo";
}
Сергей Федотов
Вот мне не понятно момент, где я сравниваю все переменные.. Такой шок, сам написал, сам не могу понять: /
Ну ищет не похожие, а одинаковые как-бы и по-любому - он неправильно работает.
Вы вводите в цикле по i значения в массив.
И тут-же ниже крутите цикл по массиву, начиная со следующего. А какое следующее, если оно ещё не введено?. Те там незаполненные ещё значения (либо 0, либо "мусор" ("случайные" значения), смотря что у Вас там выше и как массив объявлен)
+ явный выход за пределы массива (<=n)
Цикл поиска не оптимизирован - Вы нашли что есть совпадение, запомнили, что оно есть. ок. и дальше крутите цикл до конца. А зачем? Нашли, присвоили, break.
Вы вводите в цикле по i значения в массив.
И тут-же ниже крутите цикл по массиву, начиная со следующего. А какое следующее, если оно ещё не введено?. Те там незаполненные ещё значения (либо 0, либо "мусор" ("случайные" значения), смотря что у Вас там выше и как массив объявлен)
+ явный выход за пределы массива (<=n)
Цикл поиска не оптимизирован - Вы нашли что есть совпадение, запомнили, что оно есть. ок. и дальше крутите цикл до конца. А зачем? Нашли, присвоили, break.
Сергей Федотов
Так и есть, вот условие для остановки
Рахымгазы Сахариев
Сдали? =)
Работает перебор, внешний цикл устанавливает позицию i на начальный элемент, внутренний на позицию j = i+1, внутренний цикл по порядку до конца границы массива проверяет число относительно позиции i, если в результате сравнения будет найдено идентичное число - устанавливается флаг в true,после завершения внутреннего цикла, если флаг был установлен произойдет выход из внешнего цикла, программа закончена. Иначе напечатается "hlo", и внешний цикл перейдет на позицию i+1, и т. д пока не будет достигнут конец массива.
ну сравнивает каждый элемент со следующим. если хотя бы одно совпадение - то ставит флаг (bool) и выход из цикла
Похожие вопросы
- Почему работает этот код?
- Написал калькулятор на c++ он не работает вот код
- Вопрос по основам машинного кода и бинарного кода. Как это работает в своей основе?
- Почему казалось бы простой код не работает в Турбо Паскале?
- Некорректно работает код. (C#)
- Помогите исправить код так, чтобы работал! :) (C#)
- [C++] Сравнение векторов. Почему-то работает криво, хотя код простой. Где ошибка?..
- Не работает конструктор в коде C++!
- Почему не работает код?
- Ассемблерная вставка в С .Странный код. Можете расшифровать?