1. Условие
Дана вещественная квадратная матрица порядка n . Удалить из неё i-ю строку и j-й столбец. Для поиска нужной строки и столбца, а также для сжатия матрицы использовать подпрограмму.
2. Решение
Задаем порядок матрицы n. Выделяем блок оперативной памяти под двумерный массив a размерностью n*n. Производим инициализацию массива. Вызываем функцию funk_1() для удаления указанной строки и столбца. В функции производится копирование исходной матрицы a в новый массив b, имеющий размерность (n-1)*(n-1). Элементы удаляемой строки и столбца в матрицу не копируются. На экран выводится массив b.
3. Алгоритм решения

4. Текст программы
1 : #include <stdio.h>
2 : #include <stdlib.h>
3 : #include <conio.h>
4 : void funk_1 (float *a, float *b, int n, int it, int jt)
5 : {
6 : int i, j, l=0;
7 : for (i=0; i<n; i++)
8 : for (j=0; j<n; j++)
9 : {
10: if(it!=(i+1) && jt!=(j+1))
11: { b[l]=a[i*n+j];
12: l++;
13: }
14: }
15:
16: }
17: void main()
18: {
19: int i, j, n, it, jt;
20: float *a,*b;
21: clrscr();
22: printf("\n Введите натуральное число n ");
23: scanf("%d",&n);
24: a=(float*)malloc(n*n*sizeof(float));
25: b=(float*)malloc((n-1 )*(n-1 )*sizeof(float));
26: for(i=0; i<=(n-1); i++)
27: for(j=0; j<=(n-1); j++)
28: {
29: printf("\n Введите a[%d][%d] = ", i+1, j+1);
30: scanf("%f",&a[i*n+j]);
31: }
32: printf("\n Введите номер строки i,которую Вы хотите удалить");
33: scanf("%d",&it);
34: printf("\n Введите номер столбца j,который Вы хотите удалить");
35: scanf("%d",&jt);
36: printf ("\n Исходная матрица\n");
37: for(i=0; i<n; i++)
38: {
39: for(j=0; j<n; j++)
40: printf("%2.f ",a[i*n+j]);
41: printf("\n");
42: }
43: printf("\n %d-я строка,%d-й столбец удалены \n",it, jt);
44: printf(" Новая матрица: \n");
45: funk_1(a,b,n,it,jt);
46: for(i=0; i<n-1; i++)
47: {
48: for(j=0; j<n-1; j++)
49: printf("%2.f ",b[i*(n-1)+j]);
50: printf("\n");
51: }
52: free(a);
53: free(b);
54: printf("\n \n \n Для завершения программы введите любой символ.");
55: getch();
56: }
5. Работа программы
Введите натуральное число n 3
Введите a[1][1] = 1
Введите a[1][2] = 2
Введите a[1][3] = 3
Введите a[2][1] = 4
Введите a[2][2] = 5
Введите a[2][3] = 6
Введите a[3][1] = 7
Введите a[3][2] = 8
Введите a[3][3] = 9
Введите номер строки i,которую Вы хотите удалить 2
Введите номер столбца j,который Вы хотите удалить 3
Исходная матрица
1 2 3
4 5 6
7 8 9
2-я строка 3-й столбец удалены
Новая матрица
1 2
7 8
Для завершения программы введите любой символ.
6. Проверка
Программа работает корректно.