Даны натуральные числа N и массив A(N). Продублировать все вхождения положительных элементов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем доброе утро! Помогите, пожалуйста, найти ошибки в работе. Сам я пока не опытный в этом деле, нужно чтобы программа просто продублировала все положительные элементы. А я тут что-то накосячил
#include <stdio.h>
#include <math.h>
 
int PrMs (int*x, int N){
int i;
        printf("Полученный массив\n");
        for (i=0; i<N; i++)
        printf("%d",*(x+i));
}
 
int VvodMs (int *x){
int N;
        do{
        printf("Введите количество элементов N<30\n");
        scanf("%d", &N);
        }while (N<=0 || N>30);
        printf("Введите элементы чисел\n");
        int i,j;
        for (i=0; i<N; i++)
        scanf("%d",(x+N));
return N;
}
void ChMs (int *x, int N)
{int i, j;
        N=0;
        while (i<N)
        {
        if (x+N>0)
           {
               N++;
               for (j=N-1; j>i; j--)
                   *(x+j)=*(x+j-1);
                   i++;
           }
           i++
         }
        return N;
}
int main()
{
      int N, A[30]
      N=VvodMs (A);
      PrMs (A,N);
      ChMs (A,N);
      PrMs (A,N);
}

Решение задачи: «Даны натуральные числа N и массив A(N). Продублировать все вхождения положительных элементов»

textual
Листинг программы
using namespace std;
int PrMs(int* x, int N){
int i;
printf("Poluchennyi massiv:\n");
for(i = 0; i < N; i++)
  printf("%d\n", x[i]);
}
 
int VvodMs(int *x){
int N;
do{
printf("Vvedite kolichestvo elementov N<30\n");
scanf("%d", &N);
}while(N <= 0 || N > 30);
 
printf("Vvedite elementi chisel:\n");
int i,j;
for(i = 0; i < N; i++)
  scanf("%d", (x+i));
return N;
}
 
void ChMs(int *x, int N)
{
int i, j;
i=0;
while(i<N)
{
   if(*(x+i)>0)
   {
       for(j=N-1; j>i; j--)
         *(x+j)=*(x+j-1);
   }
   i++;
}
//return N;
}
 
int main(int argc, char* argv[])
{
int z, n;
/*char str[5] = {5, 6, 3, 7, 2};
cout << "Input number:\n";
cin >> z;
for(n = 0; n <= z; n++)
{
cout << n << "\n";
}*/
/*for(z = 0; z < 5; z++)
  printf("%d ", str[z]);*/
//main
int N, A[30];
N=VvodMs(A);
PrMs(A,N);
ChMs(A,N);
PrMs(A,N);
 
getch();
return 0;
}

Объяснение кода листинга программы

  1. Ввод количества элементов массива и самого массива с помощью функции VvodMs().
  2. Вывод исходного массива с помощью функции PrMs().
  3. Дублирование положительных элементов массива с помощью функции ChMs().
  4. Вывод измененного массива с помощью функции PrMs().

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы