Удалить столбцы, в которых есть хотя бы 1 нулевой элемент - C (СИ)

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

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

удалить столбцы, в которых есть хотя бы 1 нулевой элемент. В чем ошибка. Ниже привел только функцию
Листинг программы
  1. int udalstolb(int n, int m, int (*a)[20])
  2. {int *i,*j,*u;
  3. for(j=*a;j<*a+20*n;j++)
  4. {
  5. for(i=j;i<j+20*n;i+=20)
  6. if(*i==0)
  7. break;
  8. if (i==j+n*20) continue;
  9. for(u=j;u<*a+m-1;u++)
  10. for(i=u;i<u+20*n;i+=20)
  11. *i=*(i+1);
  12. m--;
  13. j--;
  14. }
  15. return m;
  16. }

Решение задачи: «Удалить столбцы, в которых есть хотя бы 1 нулевой элемент»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define N 9
  5. #define M 18
  6. void del_col(int*, int, int, int, int);
  7. int main()
  8. {
  9.     int i, j, A[N][M], count = 0;
  10.     srand(time(NULL));
  11.     for(i = 0; i < N; i++, putchar('\n'))
  12.         for(j = 0; j < M; j++)
  13.             printf("%3d", A[i][j] = rand() % 18);
  14.     for(i = 0; i < N; i++)
  15.         for(j = 0; j < M - count; j++)
  16.             if(A[i][j] == 0){
  17.                 del_col(A[0], N, M, count, j);
  18.                 count++;
  19.                 j--;
  20.             }
  21.     puts("Reduced array:");
  22.     for(i = 0; i < N; i++, putchar('\n'))
  23.         for(j = 0; j < M - count; j++)
  24.             printf("%3d", A[i][j]);
  25.     putchar('\n');
  26.     return 0;
  27. }
  28. void del_col(int* arr, int nRow, int nCol, int count, int k)
  29. {
  30.     for(int i = 0; i < nRow; i++)
  31.         for(int j = k; j < nCol - count - 1; j++)
  32.             *(arr + i * nCol + j) = *(arr + i * nCol + j + 1);
  33. }

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

  1. Включаем необходимые заголовочные файлы
  2. Определяем функцию del_col, которая будет удалять столбцы с нулевыми элементами
  3. Задаем размер массива N и M
  4. Инициализируем массив A случайными значениями от 0 до 18
  5. Считаем количество нулевых элементов в массиве и сохраняем их позиции в отдельный массив count
  6. Используя два вложенных цикла, удаляем нулевые столбцы, вызывая функцию del_col
  7. Выводим уменьшенный массив на экран
  8. Возвращаем 0, чтобы указать, что программа успешно завершилась
  9. В функции del_col используем два вложенных цикла для перебора элементов массива
  10. Заменяем нулевые элементы на следующие элементы в столбце, начиная с элемента с индексом k
  11. Возвращаем 0, чтобы указать, что функция успешно завершилась

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


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

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

8   голосов , оценка 4.125 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы