C/C++

Помогите исправить и дописать программу с массивами на языке C++. Буду благодарен, т. к. самому уже не понятно.

Задание
1. Удалить из массива все двузначные числа. Элементы, удаляемые из массива поместить во
второй массив. (работает частично, вместо одного элемента удаляются 2-3)
2. Вставить после каждого положительного элемента второго массива максимальный элемент
из первого массива (Это я не понял как оформить, слишком за мудрёно для меня)
Помогите исправить ошибки в программе по массиву. Язык программирования с++.

#include

using namespace std;

void print(int A[], int B[], int n);
void forming(int A[], int n);
int max_m(int A[], int n);
void del_m(int A[], int &n, int x);
void input_m(int A[], int &n, int x, int y);

int main(){
setlocale(LC_ALL, "RUS");
srand(time(0));
const int N=12;
int n = 10;
int x;
int y;
int A[N], B[N];
forming(A, n);
print(A,B, n);

//cout<<endl<<"Max="<<max_m(A, n)<<endl;
cout<<"Введите номер элемента для удаления ";
cin>>x;
del_m(A, n, x);
print(A,B, n);
input_m(A, n, x, y);
print(A,B, n);
return 0;

}

void print(int A[], int B[], int n){
int q,w;
cout<<"Выберите тип вывода массива"<<endl;
cout<<"1- В столбик"<<endl;
cout<<"2- В строчку"<>q;
cout<<"Выберите какой массив вывести"<<endl;
cout<<"1-Массив A"<<endl;
cout<<"2-Массив B"<>w;
if (w == 1){
if (q == 2){
for (int i = 0; i < n; i++){
cout<<A[i]<<" ";
}
}
if (q == 1){
for (int i = 0; i < n; i++){
cout<<i<<"\t"<<A[i]<<endl;
}
}
}

if (w == 2){
if (q == 2){
for (int i = 0; i < n; i++){
cout<<B[i]<<" ";
}

}
if (q == 1){
for (int i = 0; i < n; i++){
cout<<i<<"\t"<<B[i]<<endl;
}
}
}
}

void forming(int A[], int n){
int a, b;
cout<<"Введите диапазон чисел"<<endl;
cout<<"От ";
cin>>a;
cout<<"До ";
cin>>b;
for (int i = 0; i < n; i++){
A[i]=rand()%(b-a)+a;
}
}

int max_m(int A[], int n){
int max=A[0];
for (int i = 1; i < n; i++){
if(A[i]>max){
max=A[i];
}
}

return max;

}

void del_m(int A[], int &n, int x){
for(int i=x; i<(n-1); i++){
A[i]=A[i+1];
n--;
}
}

void input_m(int A[], int &n, int x, int y){
for(int i=n; i>x; i--){
A[i]=A[i-1];
A[x]=y;
n++;
}
}

void task1(int A[], int &n, int B[], int &m){
int i=0, j=0;
do{
if((A[i]>9)&&(A[i]<100)){
B[j]=A[i]; j++;
del_m(A, n, i);
}else i++;
}
while(i<n);{
m=j;
}
}
#include <iostream>
#include <iomanip>
#include <cmath>
#include <ctime>
#include <clocale>
using namespace std;
void fill(int* box, size_t n) {
for (auto i = 0U; i < n; ++i) box[i] = rand() % 301 - 150;
}
void show(int* box, size_t n, const char* msg) {
cout << msg;
for (auto i = 0U; i < n; ++i) cout << setw(5) << box[i];
puts("");
}
int maxel(int* box, size_t n) {
auto mx = box[0];
for (auto i = 1U; i < n; ++i) if (box[i] > mx) mx = box[i];
return mx;
}
size_t transfer(int* src, size_t &n, int* dest) {
auto m = 0U;
auto k = 0U;
auto tmp = new int[n];
for (auto i = 0U; i < n; ++i) {
if (1 == static_cast<int>(log10(abs(src[i])))) dest[m++] = src[i];
else tmp[k++] = src[i];
}
for (auto i = 0U; i < k; ++i) src[i] = tmp[i];
n = k;
delete[] tmp;
return m;
}
size_t insert(int* box, size_t n, int x) {
auto tmp = new int[n << 1];
auto j = 0U;
for (auto i = 0U; i < n; ++i, ++j) {
tmp[j] = box[i];
if (box[i] > 0) tmp[++j] = x;
}
for (auto i = 0U; i < j; ++i) box[i] = tmp[i];
delete[] tmp;
return j;
}
int main() {
srand(unsigned(time(nullptr)));
setlocale(LC_CTYPE, "Russian");
const auto n = 16U;
int a[n];
fill(a, n);
show(a, n, "\tИсходный массив: \n\n");
auto me = maxel(a, n);
cout << "\n\tМаксимальный элемент: " << me << '\n';
int b[n << 1];
auto m = n;
auto k = transfer(a, m, b);
show(a, m, "\n\tПосле удаления двухначных: \n\n");
show(b, k, "\n\tМассив двузначных: \n\n");
k = insert(b, k, me);
show(b, k, "\n\tПосле вставки максимального: \n\n");
while (getchar() != '\n');
}
АС
Алексей Симонов
82 315
Лучший ответ