Задание
Оформить в виде функций:
1. Заполнение массива с клавиатуры
2. Поиск первого минимального элемента и его номера
3. Поиск последнего максимального элемента и его номера
4. Замена элементов массива (в нужном промежутке индексов) нулями
5. Вывод массива на экран
В функции main() оставить следующее:
-объявление указателя на массив
-ввод количества элементов
-динамическое выделение памяти под массив
-вызов функции заполнения массива с клавиатуры
-вызов функции вывода исходного массива на экран
-объявление переменных для поиска максимума и минимума
-вызов функции Поиска минимального элемента и его номера
-вызов функции Поиска максимального элемента и его номера
-вызов функции замены элементов нулями (согласно заданию)
-вызов функции вывода полученного массива на экран
#include
using namespace std;
int main()
{
setlocale(0,"");
int* mas;
cout<<"Введите количество эдементов массива:";
int n;
cin>>n;
mas=new int[n];
cout<<"Введите значения элементов массива: \n";
for (int i=0; i<n; i++) { cout<<i+1<<"->"; cin>>mas[i];}
// вывод исходного массива:
for (int i=0; i<n; i++) cout<<mas[i]<<'\t';
// поиск минимального и максимального элементов
int imax=0, imin=0, maxMas=mas[0], minMas=mas[0];
for (int i=0; i=maxMas) {imax=i; maxMas=mas[i];}
if (mas[i]<minMas) {imin=i; minMas=mas[i];}
}
cout<<"\nПервый минимальный - под номером "<<imin+1<<" со значением "<< minMas<<endl;
cout<<"Последний максимальный - под номером "<<imax+1<<" со значением "<< maxMas<<endl;
// замена элементов нулями:
for (int i=imin+1; i<imax; i++) mas[i]=0;
// вывод полученного массива:
for (int i=0; i<n; i++) cout<<mas[i]<<'\t';
return 0;
}
Ниже дан пример оформления функции поиска последнего максимального элемента и его номера
void lastMax( int A[], int razm, int &numb, int &maximum)
{
numb=0;
maximum=A[0];
for (int i=0; i=maximum) {numb=i; maximum=A[i];}
}
Тогда в функции main() вызов этой функции будет выглядеть так:
lastMax(mas, n,imax,maxMas);
C/C++
Заменить нулями элементы массива, которые расположены между первым минимальным и последним максимальным элементами масси
#include <iostream>
using namespace std;
void fill(int* box, size_t n) {
cout << "Elements: ";
for (auto i = 0U; i < n; ++i) cin >> box[i];
}
pair<int, size_t> first_min_index(int* box, size_t n) {
auto index = 0U;
auto min = box[index];
for (auto i = 1U; i < n; ++i) {
if (box[i] < min) {
min = box[i];
index = i;
}
}
return { min, index };
}
pair<int, size_t> last_max_index(int* box, int n) {
auto index = n - 1;
auto max = box[index];
for (auto i = index - 1; i >= 0; --i) {
if (box[i] > max) {
max = box[i];
index = i;
}
}
return { max, index };
}
void replace(int* begin, int* end, int x = 0) {
while (++begin < end) *begin = 0;
}
void show(int* box, size_t n) {
cout << "Elements: ";
for (auto i = 0U; i < n; ++i) cout << box[i] << ' ';
puts("");
}
int main() {
cout << "n: ";
size_t n;
cin >> n;
auto box = new int[n];
fill(box, n);
auto [min_value, min_index] = first_min_index(box, n);
auto [max_value, max_index] = last_max_index(box, n);
replace(box + min_index, box + max_index);
show(box, n);
delete[] box;
system("pause > nul");
}
using namespace std;
void fill(int* box, size_t n) {
cout << "Elements: ";
for (auto i = 0U; i < n; ++i) cin >> box[i];
}
pair<int, size_t> first_min_index(int* box, size_t n) {
auto index = 0U;
auto min = box[index];
for (auto i = 1U; i < n; ++i) {
if (box[i] < min) {
min = box[i];
index = i;
}
}
return { min, index };
}
pair<int, size_t> last_max_index(int* box, int n) {
auto index = n - 1;
auto max = box[index];
for (auto i = index - 1; i >= 0; --i) {
if (box[i] > max) {
max = box[i];
index = i;
}
}
return { max, index };
}
void replace(int* begin, int* end, int x = 0) {
while (++begin < end) *begin = 0;
}
void show(int* box, size_t n) {
cout << "Elements: ";
for (auto i = 0U; i < n; ++i) cout << box[i] << ' ';
puts("");
}
int main() {
cout << "n: ";
size_t n;
cin >> n;
auto box = new int[n];
fill(box, n);
auto [min_value, min_index] = first_min_index(box, n);
auto [max_value, max_index] = last_max_index(box, n);
replace(box + min_index, box + max_index);
show(box, n);
delete[] box;
system("pause > nul");
}
Похожие вопросы
- С++ | Как заменить макс. элементы (могут быть введены любые) массива на нули и вывести изменённый массив уже с нолями?!
- Вывести сумму тех элементов каждой строки, которые расположены правее максимального и левее минимального.
- Дана непустая последовательность целых чисел, среди которых есть два нуля. Найти сумму чисел, расположенных между ними.
- Подсчитайте количество столбцов массива, которые не содержат отрицательных значений.
- Написал функцию, которая добавляет элемент в конец массива, как можно улучшить? Нули не учитываются.
- Поменять местами максимальный и последний отрицатель- ный элементы массива А (40)
- Создать одномерный массив, состоящий из n вещественных элементов. Элементы массива определить при помощи случайных чисел
- Заполнить двумерный массив 5*3 и найти строку с максимальным произведением элементов. C++
- Дан массив из N элементов (N < 1000), причем N - четное. Вставить в середину массива сумму всех элементов.
- Как работать с элементами динамического массива из функции?