С++ ! ! ! ! ! ! !

объявить массив целых чисел и заполнить его значениями, введенных с клавиатуры.
диапазон значений его элементов заданы в вашем варианте индивидуального .
в индивидуальных указано также, какую обработку массива следует произвести.

найти значение 3-го по величине элемента и значения всех элементов
массива, которые его превышают, заменить на найденное значение.

дополнительные условия:
размер массива определяется в начале выполнения программы как число в диапазоне 5 - 20;
в тексте программы запрещается применять операцию индексации.

сделать, !

вариант № 0

ivanm29 ivanm29    3   13.11.2019 20:22    13

Ответы
gbn2r56 gbn2r56  05.05.2020 15:15

#include <iostream>

#include <ctime>

#include <algorithm>

using namespace std;

int* input_arr_auto(int* arr, int n) {

for (int i = 0; i < n; i++) {

 arr[i] = rand() % 100;

}

return arr;

}

void print_array(int* arr, int n) {

cout << endl;

for (int i = 0; i < n; i++) {

 cout << arr[i] << "\t";

}

}

int* input_arr(int* arr, int n) {

cout << "Введите элементы массива по одному, или используйте другую функцию для автозаполнения";

for (int i = 0; i < n; i++) {

 cin >> arr[i];

}

return arr;

}

int third_largest(int* arr, int n) {

int first=arr[0], second=arr[0], third=arr[0];

if (n < 3) {

 return -1;

}

for (int i = 0; i < n; i++)

{

 if (arr[i] > first)

 {

  third = second;

  second = first;

  first = arr[i];

 }

 else if (arr[i] > second)

 {

  third = second;

  second = arr[i];

 }

 else if (arr[i] > third)

  third = arr[i];

}

return third;

}

int main() {

srand(time(NULL));

setlocale(LC_ALL, "Russian");

int n, third_elem;

cout << "Введите размерность N: ";

cin >> n;

int* arr = new int[n];

arr = input_arr_auto(arr, n);

print_array(arr, n);

third_elem = third_largest(arr, n);

if (third_elem == -1) {

 cout << "Недостаточно элементов массива";

}

for (int i = 0; i < n; i++) {

 if (arr[i] > third_elem) {

  arr[i] = third_elem;

 }

}

print_array(arr, n);

}

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