Дан массив A[n]. Напишите программу, которая записывает все положительные элементы, следующие за максимальным элементом массива А – в массив B.
И объясните код пожалуйста
C/C++
Написать программу на С++ с применением одномерных массивов, используя указатели.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 15
int main()
{
int *A, *B, n=0, max=-N, imax=-1, count=0;
printf("Enter size of A[n] n: ");
scanf("%d",&n);
A=(int*)malloc(n*sizeof(int));
if(!A) exit(1);
srand(time(NULL));
printf("\nArray A[%d]:\n",n);
for(int i = 0; i < n; i++)
{
if(rand()%2) A[i] = rand()%N;
else A[i] = - (rand()%N);
if(max<A[i])
{max=A[i];imax=i;}
printf(" %d",A[i]);
}
for(int i = imax+1; i < n; i++)
if(A[i] > 0) count++;
B=(int*)malloc(count*sizeof(int));
if(!B) exit(1);
printf("\n\nMaximal element: A[%d] = %d",imax,max);
printf("\n\nResult array B[%d]:\n",count);
for(int i = imax+1; i < n; i++)
if(A[i] > 0)
{
B[i] = A[i];
printf(" %d", B[i]);
}
free(A);
free(B);
system("pause");
return 0;
}

#include<stdlib.h>
#include<time.h>
#define N 15
int main()
{
int *A, *B, n=0, max=-N, imax=-1, count=0;
printf("Enter size of A[n] n: ");
scanf("%d",&n);
A=(int*)malloc(n*sizeof(int));
if(!A) exit(1);
srand(time(NULL));
printf("\nArray A[%d]:\n",n);
for(int i = 0; i < n; i++)
{
if(rand()%2) A[i] = rand()%N;
else A[i] = - (rand()%N);
if(max<A[i])
{max=A[i];imax=i;}
printf(" %d",A[i]);
}
for(int i = imax+1; i < n; i++)
if(A[i] > 0) count++;
B=(int*)malloc(count*sizeof(int));
if(!B) exit(1);
printf("\n\nMaximal element: A[%d] = %d",imax,max);
printf("\n\nResult array B[%d]:\n",count);
for(int i = imax+1; i < n; i++)
if(A[i] > 0)
{
B[i] = A[i];
printf(" %d", B[i]);
}
free(A);
free(B);
system("pause");
return 0;
}

Указатели где используются? Только при объявлении динамических массивов A и B или ещё где-то? Массив А откуда берётся? Максимальный элемент массива А, если он не единственный, какой имеется в виду -первый, последний или ещё какой-то? И что делать, если за максимальным элементом нет других элементов так как он последний? Это Вы всё должны нам объяснять! А вообще можно так:
#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <iostream>
using namespace std;
void print(int *x, int size, char s)
{
int i, j = 0;
cout << "Array " << s << ':' << endl;
for (i = 0; i < size; i++)
{
++j;
cout << setw(4) << x[i];
if (j == 30)
{
j = 0;
cout << endl;
}
}
if (j) cout << endl;
cout << endl;
}
int main()
{
int i, j, n, max, indmax;
cout << "n: ";
cin >> n;
int *A = new int [n];
srand(time(nullptr));
for (i = 0; i < n; i++)
A[i] = rand() % 199 - 99;
max = A[0];
indmax = 0;
for (i = 0; i < n; i++)
if (A[i] > max)
{
max = A[i];
indmax = i;
}
print(A, n, 'A');
cout << "Max = " << max << " (№"
<< indmax + 1 << ')' << endl << endl;
j = n - 1 - indmax;
indmax++;
if (j > 0)
{
int *B = new int [j];
for (i = 0; i < j; i++)
B[i] = A[i + indmax];
print(B, j, 'B');
}
}

#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <iostream>
using namespace std;
void print(int *x, int size, char s)
{
int i, j = 0;
cout << "Array " << s << ':' << endl;
for (i = 0; i < size; i++)
{
++j;
cout << setw(4) << x[i];
if (j == 30)
{
j = 0;
cout << endl;
}
}
if (j) cout << endl;
cout << endl;
}
int main()
{
int i, j, n, max, indmax;
cout << "n: ";
cin >> n;
int *A = new int [n];
srand(time(nullptr));
for (i = 0; i < n; i++)
A[i] = rand() % 199 - 99;
max = A[0];
indmax = 0;
for (i = 0; i < n; i++)
if (A[i] > max)
{
max = A[i];
indmax = i;
}
print(A, n, 'A');
cout << "Max = " << max << " (№"
<< indmax + 1 << ')' << endl << endl;
j = n - 1 - indmax;
indmax++;
if (j > 0)
{
int *B = new int [j];
for (i = 0; i < j; i++)
B[i] = A[i + indmax];
print(B, j, 'B');
}
}

Похожие вопросы
- Написать программу «справочник». Создать два одномерных массива. Один массив хранит номера мобильных телефонов, второй
- Написать код на С++ в одномерном массиве
- Нужна помощь в составлении одномерных массивов С++
- C++\Работа с одномерными массивами: удаление, добавление, перестановка, поиск
- Одномерные массивы. Сортировка
- Создат код с помощью массивов и указателей. с++
- В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива
- Составить программу. В одномерном массиве произвольных чисел вычислить произведения четных и нечетных элементов.
- Динамический массив и указатель Си
- Одномерные массивы на языке си
for (i = 0; i < size; i++)
{
++j;
cout << setw(4) << x[i];
if (j == 30)
{
j = 0;
cout << endl;
}
}
if (j) cout << endl;
cout << endl;
for (i = indmax; i < n; i++) { if (A[i] > 0)
{ B[k] = A[i]; k++; } } print(B, k, 'B'); } }