It is necessary in the one-dimensional (dynamic) array to replace the last of the zero elements with three zeros. Here is the program, it works. True, if there are two or more zeros in the array, the replacement is performed with the first zero, but with the last one.
#include "stdafx.h" #include<iostream> using namespace std; void input(int *a,int n); void print(int *a,int n); void insert(int *a,int &n,int &i); void Poisk(int *a,int n,int &i); int _tmain(int argc, _TCHAR* argv[]) { int n,i; cin>>n; int *a=new int [n]; input(a,n); Poisk(a,n,i); insert(a,n,i); print(a,n); system("Pause"); return 0; } void input(int *a,int n) { int i; for(i=0;i<n;i++) cin>>a[i]; } void print(int *a,int n) { int i; for(i=0;i<n;i++) cout<<a[i]<<" "; } void Poisk(int *a,int n,int &i) { int j; for(j=n;j>-1;j--) if(a[j]==0) i=j; } void insert(int *a,int &n,int &i) { int j;int k; Poisk(a,n,i); for(j=n-1;j>i;j--) swap(a[j],a[j+1]); ++n; a[i+1]=0; for(k=n-1;k>i+1;k--) swap(a[k],a[k+1]); ++n; a[i+2]=0; }