В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов - C (СИ)
Формулировка задачи:
Решение задачи: «В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов»
#include <stdio.h> main() { int arr[10]={1, 2, 0, 3, 4, 0, 0, 5, 6, 0}; int i, count; int *index; int flag; //to verify, is null count=0; index=(int *)malloc(count*sizeof(int)); //first init, maybe one element flag=0; for(i=0; i<10; i++) { if(arr[i]==0) { count++; index=(int *)realloc(index, count); //change dimension index[count-1]=i; flag=1; } } switch(flag) { case 0: printf("No zero elements\n"); break; case 1: for(i=0; i<count; i++) printf("%d, ", index[i]); break; default: break; } printf("\n"); free(index); system("pause"); }
Объяснение кода листинга программы
В этом коде объявлен массив arr из 10 целых чисел. Переменная count инициализируется как 0 и используется для подсчета нулевых элементов в массиве. Переменная index - это указатель, который будет использоваться для хранения индексов нулевых элементов. В начале index инициализируется как 0.
Затем происходит цикл по всем элементам массива. Если элемент равен 0, то увеличивается значение count, и выделенный ранее массив index изменяется по размеру, чтобы уместить новый элемент. Затем индекс нового элемента добавляется в массив index. Если после цикла флаг остается равным 0, выводится сообщение No zero elements
. Если после цикла flag становится равным 1, выводится сообщение Индексы нулевых элементов:
и все индексы из массива index выводятся через запятую.
После этого выводится сообщение Press any key to continue...
, и программа завершается.