Найти ненулевые элементы исходного массива и записать их в новый массив - 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;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены две массивы: исходный массив
yourArrayи массив, содержащий только нулиzeroArray. - В цикле
forпроисходит заполнение исходного массиваyourArrayзначениями, которые пользователь вводит с клавиатуры. - Если индекс
firstCounterравенMAX, то выводится сообщение о том, что массивzeroArrayбудет содержать только нули. - В каждой итерации цикла проверяется, достигнут ли предел размера исходного массива. Если да, то увеличивается счетчик
secondCounterи проверяется значение элементаyourArray[secondCounter]. - Если значение равно нулю, то в массив
zeroArrayзаписывается соответствующее значение и увеличиваются счетчикиsecondCounterиthirdCounter. - Если значение не равно нулю, то только увеличивается счетчик
secondCounter. - После окончания цикла выводится пустая строка.
- Возвращается ноль, что означает успешное завершение работы программы.