?>
C++. Одномерные массивы. Задача 2.2Дан одномерный массив, элементы которого — целые числа. Удалите из него все максимальные элементы.Формат входных данныхВ первой строке входного файла дано число N — количество элементов в массиве (1≤N≤100 В следующей строке находится N чисел, по абсолютному значению не превосходящих 1000.Формат выходных данныхВ выходной файл выведите полученный массив. При выводе разделяйте элементы массива пробелом.Примеры:Вход49 8 7 5Выход8 7 5Вход6-5 10 10 -6 -6 3Выход-5 -6 -6 3Одномерные массивы. Задача 2.3Дан одномерный массив, элементы которого — целые числа, и два целых числа L и R. Удалите из массива все элементы x такие, что L≤x≤R.Формат входных данныхВ первой строке входного файла даны три целых числа: N, L и R (−1000≤L≤R≤1000), где N — количество элементов в массиве (1≤N≤100). В следующей строке находится N чисел, по абсолютному значению не превосходящих 1000.Формат выходных данныхВ выходной файл выведите полученный массив. При выводе разделяйте элементы массива пробелом.Примеры:Вход4 7 99 8 7 5Выход5Вход6 -6 0-5 10 13 -6 -6 3Выход10 13 3
Ответы
Задача 2.2:
Для начала, прочитаем данные из входного файла. В первой строке находится число N - количество элементов в массиве, а в следующей строке - сами элементы массива.
Записываем эти значения в переменные:
```cpp
int N;
cin >> N;
int arr[N];
for (int i = 0; i < N; i++)
{
cin >> arr[i];
}
```
Далее, найдем максимальное значение в массиве:
```cpp
int max_val = arr[0];
for (int i = 1; i < N; i++)
{
if (arr[i] > max_val)
{
max_val = arr[i];
}
}
```
Теперь, создадим новый массив, в котором будут храниться только значения, отличные от максимального:
```cpp
int new_arr[N];
int new_size = 0; // размер нового массива
for (int i = 0; i < N; i++)
{
if (arr[i] != max_val)
{
new_arr[new_size] = arr[i];
new_size++;
}
}
```
Выводим полученный массив в выходной файл, разделяя элементы пробелом:
```cpp
for (int i = 0; i < new_size; i++)
{
cout << new_arr[i] << " ";
}
```
Задача 2.3:
Считываем данные из входного файла: количество элементов N, значения L и R, и сами элементы массива.
```cpp
int N, L, R;
cin >> N >> L >> R;
int arr[N];
for (int i = 0; i < N; i++)
{
cin >> arr[i];
}
```
Также, создадим новый массив и переменную для хранения его размера, аналогично предыдущей задаче:
```cpp
int new_arr[N];
int new_size = 0; // размер нового массива
for (int i = 0; i < N; i++)
{
if (arr[i] < L || arr[i] > R)
{
new_arr[new_size] = arr[i];
new_size++;
}
}
```
Выводим полученный массив в выходной файл, разделяя элементы пробелом:
```cpp
for (int i = 0; i < new_size; i++)
{
cout << new_arr[i] << " ";
}
```
Однако, такая реализация будет работать только в случае, если все числа в массиве отличны от значения L и R.
Если элементы L и R также могут присутствовать в массиве, то лучше использовать вектор:
```cpp
#include
// ...
vector
// ...
for (int i = 0; i < N; i++)
{
if (arr[i] < L || arr[i] > R)
{
new_arr.push_back(arr[i]);
}
}
```
Вывод будет аналогичным.