Задача: Составить алгоритм увеличения всех трех, введённых с клавиатуры, переменных на 5,если среди них есть хотя бы две равные. В противном случае выдать ответ «равных нет».
Проблема: При вводе не равных чисел не срабатывает блок if(!equalnumshere)
P.S: Я знаю решение этой задачки без использование массивов, но я поставил себе цель решить эту задачу с использованием массива.
#include <iostream>
using std::cout;
using std::cin;
int main() {
setlocale(LC_ALL, "ru");
const int SIZE = 3;
int arr[SIZE];
bool equalnumshere = false;
cout << "Введите первое число:";
cin >> arr[0];
cout << "Введите второе число:";
cin >> arr[1];
cout << "Введите третье число:";
cin >> arr[2];
for (int i = 1; i <= SIZE - 1; i++) {
for (int j = 0; j <= SIZE - 1; j++) {
if (arr[j] == arr[i]) {
equalnumshere = true;
break;
}
}
}
if (!equalnumshere) {
cout << "Нет равных чисел!";
}
else if (equalnumshere) {
int i = 0;
while (i <= SIZE - 1) {
cout << arr[i] + 5 << std::endl;
i++;
}
}
}
Очевидно, что у вас сравнивается и число само с собой, а это всегда истинно :)
Попробуйте так:
for (int i = 0; i < SIZE - 1; i++) {
for (int j = i+1; j < SIZE ; j++) {
if (arr[j] == arr[i]) {
equalnumshere = true;
break;
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня есть последовательность чисел, которая разбивается на строкиКол-во строк зависит от кол-ва чисел(выбирается рандомно в диапазоне...
Допустим имеется слово "элемент"(слово может быть любым), нужно циклически сдвинуть слово вправо на "n" символовНапример, на 3 символа...
Есть вот такой кодНемного непонятно, что делает второй цикл while
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском