МИНИСТЕРСТВО ОБРАЗОВАНИЯ РФ
НГТУ
КАФЕДРА ПРИКЛАДНОЙ МАТЕМАТИКИ
ЛАБОРАТОРНАЯ РАБОТА № 3
ПО ДИСЦИПЛИНЕ:
ЛАБОРАТОРНЫЕ МЕТОДЫ ПРОГРАММИРОВАНИЯ
«ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ МАССИВОВ»
ГРУППА: ПМ-21
СТУДЕНТ: Воронов А.С.
ПРЕПОДАВАТЕЛЬ: Хиценко В. П.
НОВОСИБИРСК 2002 г.
В данной действительной квадратной матрице n*n найти максимальный по модулю элемент и получить квадратную матрицу (n-1)*(n-1) убрав столбец и строку содержащие этот элемент.
Дано: Матрица n*n, где aij элемент матрицы i, j Î [1..n]
Результат: Матрица (n-1)*(n-1) где aij элемент матрицы i, j Î [1..n-1]
Метод решения:
Сравнивая модуль элемента aij с каким-то максимальным элементом max, найдем максимальный по модулю элемент и запишем max=aij b=i c=j (присвоив перед выполнением max = -1). Сдвинем элементы столбцов следующих за столбцом с максимальным элементом влево. Сдвинем элементы строк следующих за строкой с максимальным элементом вверх.
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define n 5
void main()
{
float A[n][n],c,max;
int i,j,np,a,b;
clrscr();
printf ("Введите порядок матрицы n*n n<=%d",n);
scanf ("%d",&np);
if (np>n) printf ("Указан неверный параметр");
else
{ // 2
i=0;
j=0;
max=-1;
while (i<=np-1)
{ // 3
while (j<=np-1)
{scanf ("%f",&A[i][j]);
if (max<fabs(A[i][j])) {
max=fabs(A[i][j]);
a=i; b=j;}
j++;}
i++;
j=0;
} // 3
i=0;
while (i<=np-1)
{ // 4
j=b;
while (j<np-1)
{ // 5
A[i][j]=A[i][j+1];
j++;
} // 5
i++;
} // 4
j=0;
while (j<=np-1)
{ // 4
i=a;
while (i<np-1)
{ // 5
A[i][j]=A[i+1][j];
i++;
} // 5
j++;
} // 4
i=0;
j=0;
while (i<=np-2)
{ // 4
while (j<=np-2)
{printf (" %f",A[i][j]);
j++;}
i++;
j=0;
printf ("\n");
} // 4
} // 2
getch();
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.