В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов - C (СИ)

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

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

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

Решение задачи: «В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов»

textual
Листинг программы
#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..., и программа завершается.

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

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