C/C++

Написать Программу на языке C++.

Дан массив А[n]. Напишите программу, которая записывает все отрицательные элементы, предшествующие максимальному элементу массива А - в массив В.
С рандомным динамическим массивом с целыми элементами из диапазона [0;999]. Под максимальным элементом подразумевается последний максимальный элемент, если их несколько:

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
void print_array(int *x, int size_of_array)
{
int i, j = 0;
for (i = 0; i < size_of_array; i++)
{
cout << setw(4) << x[i];
j++;
if (j == 13)
{
j = 0;
cout << endl;
}
}
if (j) cout << endl;
cout << endl;
}
int main()
{
int i, n, max, imax = 0;
cout << "n: ";
cin >> n;
int *A= new int [n];
srand(time(nullptr));
for (i = 1; i < n; i++) A[i] = rand() % 1000;
cout << "\nArray A:\n" << endl;
print_array(A, n);
max = A[0];
imax = 0;
for (i = 1; i < n; i++) if (A[i] >= max)
{
max = A[i];
imax = i;
}
cout << "Max №" << imax + 1
<< " = " << max << endl << endl;
if (imax)
{
int *B = new int [imax];
for (i = 0; i < imax; i++) B[i] = A[i];
cout << "Array B:\n" << endl;
print_array(B, imax);
cout << '(' << imax << " elements)" << endl;
}
}
Сергей Колесников
Сергей Колесников
66 572
Лучший ответ
#include "ctime"
#include "cstdlib"
#include "iostream"
using namespace std;
int main(){
int n; cout<<"n: "; cin>>n; int *a=new int[n],*b,m,k=0; srand(time(NULL));
for(int i=0;i< n;i++)cout<<(a[i]=rand()%1998-999)<<' '; cout<< endl;
m=a[0]; for(int i=0;i< n;i++)if(a[i]>m)m=i; for(int i=0;i< m;i++)k+=a[i]<0;
b=new int[k]; for(int i=0,j=0;i< m;i++)if(a[i]<0)b[j++]=a[i];
for(int i=0;i< k;i++)cout<< b[i]<<' '; cout<< endl;}