Не видит первый элемент массива в функции
помогите понять, почему функции 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);
Вот и все.
