Разработать программу поиска номеров всех элементов масива, больших чем предыдущие
#define _USE_MATH_DEFINES
#include <iostream>
#include <math.h>
using namespace std;
int main() {
int number = 0;
int size = 0;
int count = 0;
cout << "Rozmer masiva А: ";
cin >> size;
int* arr = new int[size];
cout << "Vvedite chisla masiva A: ";
for (int i = 0; i < size; i++) {
cout << "[" << i + 1 << "]" << ": ";
cin >> arr[i];
arr[i] = number;
}
cout << endl;
for(int i = 0; i < size; i++) {
int b;
if(b > number) {
cout << b << " ";
}
number = b;
}
return 0;
}
Не могу разобраться с цыклом for для вывода элементов больших чем предыдущие. Затея была в том чтобы присвоим переменной b значение number, чтобы иметь возможность сравнивать и далее. Но ничего не вышло
Ответы (2 шт):
Числа могут быть и отрицательными, поэтому нужно сначала иметь для сравнения самое маленькое число, что вместится в int.
int number = std::numeric_limits<int>::min();
for (int i = 0; i < size; i++) {
if (number < arr[i]) {
cout << i << ' ';
number = arr[i];
}
}
Строка int count = 0; лишняя, можете удалить. А присвоение и arr[i] = number; в первом цикле и int number = 0; удалите обязательно.
Для случая, когда нужно сравнивать только с одним предыдущим - логика очень простая. Обратите внимание на старт цикла со второго элемента.
for(int i = 1; i < size; i++) {
if (arr[i] > arr[i-1])
cout << arr[i] << " ";
}
Кстати, в заголовке сказано "поиска номеров всех..." - если нужно именно так, выводите i, а не arr[i]