Удалить столбцы, в которых есть хотя бы 1 нулевой элемент - C (СИ)
Формулировка задачи:
удалить столбцы, в которых есть хотя бы 1 нулевой элемент. В чем ошибка. Ниже привел только функцию
Листинг программы
- int udalstolb(int n, int m, int (*a)[20])
- {int *i,*j,*u;
- for(j=*a;j<*a+20*n;j++)
- {
- for(i=j;i<j+20*n;i+=20)
- if(*i==0)
- break;
- if (i==j+n*20) continue;
- for(u=j;u<*a+m-1;u++)
- for(i=u;i<u+20*n;i+=20)
- *i=*(i+1);
- m--;
- j--;
- }
- return m;
- }
Решение задачи: «Удалить столбцы, в которых есть хотя бы 1 нулевой элемент»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #define N 9
- #define M 18
- void del_col(int*, int, int, int, int);
- int main()
- {
- int i, j, A[N][M], count = 0;
- srand(time(NULL));
- for(i = 0; i < N; i++, putchar('\n'))
- for(j = 0; j < M; j++)
- printf("%3d", A[i][j] = rand() % 18);
- for(i = 0; i < N; i++)
- for(j = 0; j < M - count; j++)
- if(A[i][j] == 0){
- del_col(A[0], N, M, count, j);
- count++;
- j--;
- }
- puts("Reduced array:");
- for(i = 0; i < N; i++, putchar('\n'))
- for(j = 0; j < M - count; j++)
- printf("%3d", A[i][j]);
- putchar('\n');
- return 0;
- }
- void del_col(int* arr, int nRow, int nCol, int count, int k)
- {
- for(int i = 0; i < nRow; i++)
- for(int j = k; j < nCol - count - 1; j++)
- *(arr + i * nCol + j) = *(arr + i * nCol + j + 1);
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем функцию
del_col
, которая будет удалять столбцы с нулевыми элементами - Задаем размер массива
N
иM
- Инициализируем массив
A
случайными значениями от 0 до 18 - Считаем количество нулевых элементов в массиве и сохраняем их позиции в отдельный массив
count
- Используя два вложенных цикла, удаляем нулевые столбцы, вызывая функцию
del_col
- Выводим уменьшенный массив на экран
- Возвращаем 0, чтобы указать, что программа успешно завершилась
- В функции
del_col
используем два вложенных цикла для перебора элементов массива - Заменяем нулевые элементы на следующие элементы в столбце, начиная с элемента с индексом
k
- Возвращаем 0, чтобы указать, что функция успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д