Четные элементы массива напечатать в одну строку, а индексы массива, где находятся четные элементы - в другую - C (СИ)

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

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

Решил задачу, не могу распечатать, нужно четные элементы массива напечатать в одну строку, а индексы массива, где находятся четные элементы, в другую строку. Пихаю, пихаю '\n', в разные стороны, не выходит, получается коряво в столбик, либо в одну строку. Что-то мысли закончились.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
/*
 *Программа должна получить от пользователя размер массива, заполнить его случайными значениями, 
 после чего:
а) вывести все элементы массива с четными номерами, т.е. a[0]. a[2], a[4] и т.д.
б) вывести все элементы массива, в которых содержатся четные числа, например, генератор случайных чисел 
заполнил массив числами:
2, 7, 1, 4, 9, 8, 5
генератор задает числа от 1 до 10
 */
 
 int  main ()
{
int size = 0;           // размер массива
int i;          // счетчик циклов

    // новая точка отсчета случайного числа
     srand(time(NULL));
 
             /* Просим пользователя  указать размер массива */
    printf("Укажите размер массива, не более 10 элементов:\n");
     while(size < 1 || size > 10)
     {
        scanf("%i", &size);
    }
 
    /* Задаем массив нужного размера */
    int a[size];      
 
    /* Заполняем массив случайными числами от 1 до 10 */
    for(i = 0; i < size ; i++)
    {
        a[i] =  1 + rand() %10;
    }
 
    /* Выводим на печать только четные числа из массива */
    for(i = 0; i < size ; i++)
    {
    if((a[i]%2) == 0 ) 
        {
            printf("%i ", a[i]);
            printf("a[%i] ", i);
        }
    }
    
    printf("\n");
 
     return 0;
}

Решение задачи: «Четные элементы массива напечатать в одну строку, а индексы массива, где находятся четные элементы - в другую»

textual
Листинг программы
for( i = 0; i < size ; i++ )
    if( ( a[ i ] % 2 ) == 0 ) 
       printf( "%i%s", a[ i ], i != size - 1 ? "\t" : "\n" );
for( i = 0; i < size ; i++ )
    if( ( a[ i ] % 2 ) == 0 ) 
       printf( "a[%i]%s", i, i != size - 1 ? "\t" : "\n" );

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

В данном коде реализован алгоритм, который выполняет следующие действия:

  1. Создается цикл for, который перебирает все элементы массива a от индекса 0 до размера массива (size).
  2. Внутри цикла проверяется, является ли текущий элемент массива четным числом (остаток от деления на 2 равен 0).
  3. Если элемент четный, то в консоль выводится значение этого элемента (a[i]), а также его индекс (i).
  4. После вывода значения элемента и его индекса, в консоль выводится символ табуляции (\t), если текущий элемент не является последним в массиве, и символ новой строки (\n), если это последний элемент.
  5. После завершения первого цикла, выполняется второй цикл for, который также перебирает все элементы массива a.
  6. Внутри второго цикла проверяется, является ли текущий элемент массива четным числом.
  7. Если элемент четный, то в консоль выводится надпись a[i], а также его индекс (i).
  8. После вывода надписи и индекса, в консоль выводится символ табуляции, если текущий элемент не является последним в массиве, и символ новой строки, если это последний элемент.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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