В файле test.in записана матрица размером N*N.
Найти ее определитель.
Результат записать в test.out.
Для работы с файлами использовать функцию cstdio.
-- 21.11.2012, 23:40 --я написал код для вычисления определителя. Как его переделать, чтобы код работал через файлы (cstdio).
Вот код.
Код:
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
#define NN 6
main()
{
clrscr();
float a[NN][NN],kst;
int i,j,n,p,k=0,t;
char yn;
// <----Ввод размера квадратной матрицы---->
while(k==0)
{
printf("\nВведите размер матрицы (от 2 до %d): N=",NN);
n=getche()-48;
if ((n<2) || (n>NN)) k=0;
else k=1;
}
// <----Ввод матрицы a[NN][NN]---->
k=0;
while(k==0)
{
printf("\n\nЗадать матрицу случайно? y/n: ");
yn=getche();
if ((yn=='y') || (yn=='n')) k=1;
else k=0;
}
switch(yn)
{
case 'y': for(i=0;i<n;i++) for(j=0;j<n;j++) a[i][j]=rand()%100;break;
default:
{
printf("\nВведите матрицу %dx%d\n",n,n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%f",&a[i][j]);
}
break;
}
// <----Выводим введенную матрицу---->
printf("\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++) printf("%6.2f\t",a[i][j]);
printf("\n\n");
}
// <----Считаем определитель---->
p=0;
for (i=0; i<n-1; i++)
{
t=1;
while(a[i][i]==0)
{
for(j=0; j<n; j++)
{
a[i][j]=kst;
a[i][j]=a[i+t][j];
a[i+t][j]=kst;
}
p++;
t++;
}
for (k=i+1; k<n; k++)
{
kst=a[k][i]/a[i][i];
for(j=0; j<n; j++)
a[k][j]-=a[i][j]*kst;
}
}
kst=pow(-1,p);
for(i=0; i<n; i++)
kst*=a[i][i];
printf("Определитель равен: %14.3f",kst);
getch();
}