С клавиатуры ввести массив целых чисел

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define N 25

int main()
{
system("chcp 1251");
int arr[N];
int* p1,
* p2,
* pel;

p1 = &arr[0],
p2 = p1 + N - 1;
int k = 0;

int arr2[N],
    * parr2,
    * parr3;

printf("\nВведіть елементи (не більше %d), кінець введення – "
    "довільний символ \n", N);
while (k < N) {
    if (scanf("%d", arr + k) == 0)
        break;
    k++;
}


parr2 = &arr2[0];
parr3 = parr2 + N - 1;

    for (pel = arr+1; pel < p2; pel++) 

        pel % p1 == 0;
        parr2 = pel;
    
for (; parr2 < parr3; parr2++)
    printf("%4d", *parr2);
return 0;

}

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

Не очень понимаю как делать но что-то попытался сделать


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

Автор решения: Павел Ериков
  1. Если у вас цикл идет строго до p2, то должно быть так p2 = p1 + N без добавления единицы.
  2. Вот пример кода, после введения чисел, с комментариями:
    //Указатель на начало массива arr2
    parr2 = &arr2[0];
    //Указатель на k элемент, т.к. k - кол-во введенных чисел (< N)
    parr3 = parr2 + k;
    //указатель на начало массива arr
    p1 = &arr[0];
    //Указатель на k элемент
    p2 = p1 + k;
    //Кол-во элементов целочисленно делящихся на первый элемент
    int count = 0;
    
    //Проходим по всем введенным элементам
    for (pel = p1; pel < p2; pel++) {
        if (*pel % arr[0] == 0) {
            //Если делится, то вносим элемент в массив arr2
            *parr2 = *pel;
            ++parr2;
            ++count;
        }
    }
    
    //И выводим элементы массива arr2
    parr2 = &arr2[0];
    parr3 = parr2 + count;
    
    for (; parr2 < parr3; parr2++)
        printf("%4d", *parr2);
    
→ Ссылка