2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 работа с файлами
Сообщение22.11.2012, 00:28 
В файле 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();
}

 
 
 
 Re: работа с файлами
Сообщение22.11.2012, 00:56 
cstdio - это не функция, а стандартный заголовок C++, эквивалент stdio.h из C, который вы уже включили.
Вместо функций printf и scanf надо использовать fprintf и fscanf (посмотрите в документации). Нужный файл открывается и закрывается функциями fopen и fclose (тоже RTFM). Изменений потребуется немного.

 
 
 
 Re: работа с файлами
Сообщение22.11.2012, 17:20 
Что именно нужно добавить ???

 
 
 
 Re: работа с файлами
Сообщение22.11.2012, 18:54 
Всё же написано venco.

Смотрите — консоль C++ за вас открывает и закрывает сам, т. к. понятно, когда это делать. А о файлах вы должны позаботиться явно — открыть файл перед чтением/записью и закрыть после (система закроет файл и сама, но если ваша программа работает долго и открывает разные файлы, то, не закрывая их, когда они не нужны, вы поступаете нехорошо по разным причинам). Функции чтения/записи тоже никак не оставить те же — компилятору надо знать, в какой из 100500 возможных открытых программой файлов вы собираетесь писать или из какого читать — значит, надо передавать в новые функции какой-то параметр, описывающий нужный вам файл. Ну а дальше всё-таки откройте справку или учебник и почитайте конкретно, куда этот параметр ставится, чем он является и прочее.

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group