C++. Одномерные массивы. Задача 2.2

Дан одномерный массив, элементы которого — целые числа. Удалите из него все максимальные элементы.

Формат входных данных
В первой строке входного файла дано число N — количество элементов в массиве (1≤N≤100). В следующей строке находится N чисел, по абсолютному значению не превосходящих 1000.

Формат выходных данных
В выходной файл выведите полученный массив. При выводе разделяйте элементы массива пробелом.

Примеры:
Вход
4
9 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 9
9 8 7 5
Выход
5
Вход
6 -6 0
-5 10 13 -6 -6 3
Выход
10 13 3

AnToNoVa13 AnToNoVa13    3   16.10.2020 09:33    34

Ответы
alena536 alena536  08.01.2024 08:53
Добрый день! Рассмотрим каждую задачу по очереди.

Задача 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 new_arr;

// ...

for (int i = 0; i < N; i++)
{
if (arr[i] < L || arr[i] > R)
{
new_arr.push_back(arr[i]);
}
}
```

Вывод будет аналогичным.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика