Дан массив A[n]. Напишите программу, которая записывает все положительные элементы, следующие за максимальным элементом массива А – в массив B.
И объясните код
C/C++
Напишите программу на С++
// Поиск индекса максимального элемента
int maxIndex = 0;
for(int i = 1; i < n; ++i)
if(A[i] > A[maxIndex]) maxIndex= i;
// Вычисление размера массива В
// Смотрим все элементы А после максимального
// Если элемент положительный, то увеличиваем размер на 1
int bSize = 0;
for(int i = maxIndex + 1; i < n; ++i)
if(A[i] > 0) ++bSize;
int *B = new int[bSize]; // динамически создаем массив В
int bIndex = 0; // Текущий индекс массива В
// Смотрим все элементы А после максимального
for(int i = maxIndex + 1; i < n; ++i)
if(A[i] > 0) // если элемент > 0
{
B[bIndex] = A[i]; // то записываем в В
++bIndex; // и увеличиваем индекс В на 1
}
// Массив В готов, можем делать какие-то действия с ним, например, вывести на экран
// в конце не забываем удалять массив В
delete [] B;
int maxIndex = 0;
for(int i = 1; i < n; ++i)
if(A[i] > A[maxIndex]) maxIndex= i;
// Вычисление размера массива В
// Смотрим все элементы А после максимального
// Если элемент положительный, то увеличиваем размер на 1
int bSize = 0;
for(int i = maxIndex + 1; i < n; ++i)
if(A[i] > 0) ++bSize;
int *B = new int[bSize]; // динамически создаем массив В
int bIndex = 0; // Текущий индекс массива В
// Смотрим все элементы А после максимального
for(int i = maxIndex + 1; i < n; ++i)
if(A[i] > 0) // если элемент > 0
{
B[bIndex] = A[i]; // то записываем в В
++bIndex; // и увеличиваем индекс В на 1
}
// Массив В готов, можем делать какие-то действия с ним, например, вывести на экран
// в конце не забываем удалять массив В
delete [] B;
Акан Манатов
А можешь начало кода написать тоже?
С рандомным массивом типа vector<int>
со значениями из диапазона [-999;999]:
#include <ctime>
#include <vector>
#include <cstdlib>
#include <iomanip>
#include <iostream>
using namespace std;
void print( vector <int> x)
{ int i, j = 0; cout << endl;
for (i = 0; i < x.size(); i++)
{ j++; cout << setw(5) << x[i];
if (j == 24) { j = 0; cout << endl; } }
if (j) cout << endl; cout << endl; }
int main() { int i, m = 0, max, n; cout << "n: ";
cin >> n; vector <int> a(n); srand(time(NULL));
a[0] = max = rand() % 1999 - 999;
for (i = 1; i < n; i++) {
a[i] = rand() % 1999 - 999; if (a[i] > max)
{ m = i; max = a[i]; } } print(a);
cout << max << " (№" << m + 1 << ')' << endl;
vector <int> b; for (i = m + 1; i < n; i++)
if (a[i] > 0) b.push_back(a[i]); print(b); }
Не вижу смысла тут что-то объяснять...

со значениями из диапазона [-999;999]:
#include <ctime>
#include <vector>
#include <cstdlib>
#include <iomanip>
#include <iostream>
using namespace std;
void print( vector <int> x)
{ int i, j = 0; cout << endl;
for (i = 0; i < x.size(); i++)
{ j++; cout << setw(5) << x[i];
if (j == 24) { j = 0; cout << endl; } }
if (j) cout << endl; cout << endl; }
int main() { int i, m = 0, max, n; cout << "n: ";
cin >> n; vector <int> a(n); srand(time(NULL));
a[0] = max = rand() % 1999 - 999;
for (i = 1; i < n; i++) {
a[i] = rand() % 1999 - 999; if (a[i] > max)
{ m = i; max = a[i]; } } print(a);
cout << max << " (№" << m + 1 << ')' << endl;
vector <int> b; for (i = m + 1; i < n; i++)
if (a[i] > 0) b.push_back(a[i]); print(b); }
Не вижу смысла тут что-то объяснять...

Похожие вопросы
- Написать программу на языке Си
- Написать программы на СИ
- Некорректно работает написанная программа
- Помогите написать программу на С++
- Написать программу в С++ (нахождение площади трапеции)
- В LINUX OS Написать программу, которая из командной строки получает целое число N и некоторый текст “Text”.
- Помогите написать программу на С
- Помогите написать программу на C++
- Помогите написать программу на с++
- Помогите написать программу на с++