Не видит первый элемент массива в функции

помогите понять, почему функции masivY и masivZ , не видят первый элемент массива, из-за этого дальше не правильно считают. Спасибо

#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>

    //Формирование массива У с положительными
    int masivY(int a[],int n, int b[], int n2)
    {
    int j=0;
    for (int i=0; i<n; i++)
    {
        if (a[i]>0){
            b[j]=a[i]; 
        if (n2!=j) j++;
                    }
    }
    printf("\n\n Массив Y с положительными:\n ");
    for (int i=0; i<j; i++) printf("%d ",b[i]);
    }   
    
    //Формирование массива Z с отрицательными
    int masivZ(int a[],int n, int b[], int n2)
    {
    int j=0;
    for (int i=0; i<n; i++)
        if (a[i]<0){
            b[j]=a[i]; 
        if (n2!=j) j++;
                    }
    printf("\n\n Массив Z с отрицательными:\n ");
    for (int i=0; i<j; i++) printf("%d ",b[i]);
    }

    //ФУНКЦИЯ ПОИСКА МАКС ЭЛЕМЕНТА
    int poiskmax(int a[], int n)
    {
    int max=a[0], i;
    for(i=0;i<n;i++)
    {
    if(abs(a[i])>max)
    max=a[i];
    }
    printf("\n Максимальный по модулю элемент : %d",max);
    }

    //ФУНКЦИЯ УДАЛЕНИЯ 1ого элемента
    int udal1(int a[], int n)
    {
    for(int i=0;i<n-1;i++)
    {
    a[i]=a[i+1];
    }
    n--;
    printf("\n После удаления 1ого элемента ");
    for (int i=0; i<n; i++) printf("%d ",a[i]);
    }

int main()
{
    setlocale (LC_ALL, "RUS");
    
    int n;
    printf("Укажите размер массива:");
    scanf("%d",&n);
    int x[n],m=0, q=0;
    
    //ввод массива
    for (int i=0; i<n; i++) {
    printf("Введите элемент №%d:\n",i+1);
    scanf("%d",&x[i]);
    if (x[i]<0) m++;
    if (x[i]>0) q++;
         }

    int z[m],y[q];  
    //Вывод массива         
    printf("Ваш массив:\n");
    for (int i=0; i<n; i++) 
    printf("%d ",x[i]);
    poiskmax(x,n);
    udal1(x,n);
    
    //Y
    masivY(x,n,y,q);
    poiskmax(y,q);
    udal1(y,q);
    
    //Z
    masivZ(x,n,z,m);
    poiskmax(z,m);
    udal1(z,m);
    //printf("\n");
   
    
    return 0;
}

Результат


Ответы (1 шт):

Автор решения: Harry
printf("Ваш массив:\n");
for (int i=0; i<n; i++) 
printf("%d ",x[i]);
poiskmax(x,n);

Тут массив x со всеми элементами

udal1(x,n);

Тут он без первого элемента

...


//Z
masivZ(x,n,z,m);

Тут z делается из массива x без этой -1...

poiskmax(z,m);
udal1(z,m);

Вот и все.

→ Ссылка