Найти ненулевые элементы исходного массива и записать их в новый массив - C (СИ)

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

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

Ввести с клавиатуры масcив A[n]. Найти ненулевые элементы массива и записать их в новый массив B[m]

Решение задачи: «Найти ненулевые элементы исходного массива и записать их в новый массив»

textual
Листинг программы
#include <stdio.h>
#define MAX 10
 
int main ( void )
{
    unsigned short yourArray[MAX], zeroArray[MAX];
    unsigned char firstCounter, secondCounter = 0, thirdCounter = 0;
 
    puts( "Enter values of your array" );
    fflush( stdout );
 
    for ( firstCounter = 0; firstCounter < ( MAX * 2 ); ++firstCounter ) {
 
        if ( firstCounter == MAX )
            printf( "\n%s\n", "New array with only zero is: " );
        
        if ( firstCounter < MAX ) {
        printf( "yourArray[%hhu] = ", firstCounter );
        scanf( "%hu", &yourArray[firstCounter] );
        }
        
        else {
            
            if ( yourArray[secondCounter] == 0 )
                printf( "%-2hhu", zeroArray[thirdCounter++] = yourArray[secondCounter++] );
            else
                ++secondCounter;
 
        }
    }
 
    puts( "" );
    return 0;
}

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

В этом коде:

  1. Объявлены две массивы: исходный массив yourArray и массив, содержащий только нули zeroArray.
  2. В цикле for происходит заполнение исходного массива yourArray значениями, которые пользователь вводит с клавиатуры.
  3. Если индекс firstCounter равен MAX, то выводится сообщение о том, что массив zeroArray будет содержать только нули.
  4. В каждой итерации цикла проверяется, достигнут ли предел размера исходного массива. Если да, то увеличивается счетчик secondCounter и проверяется значение элемента yourArray[secondCounter].
  5. Если значение равно нулю, то в массив zeroArray записывается соответствующее значение и увеличиваются счетчики secondCounter и thirdCounter.
  6. Если значение не равно нулю, то только увеличивается счетчик secondCounter.
  7. После окончания цикла выводится пустая строка.
  8. Возвращается ноль, что означает успешное завершение работы программы.

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

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