2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 работа с файлами
Сообщение22.11.2012, 00:28 


22/11/12
3
В файле 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 
Заслуженный участник


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

 Профиль  
                  
 
 Re: работа с файлами
Сообщение22.11.2012, 17:20 


22/11/12
3
Что именно нужно добавить ???

 Профиль  
                  
 
 Re: работа с файлами
Сообщение22.11.2012, 18:54 
Заслуженный участник


27/04/09
28128
Всё же написано venco.

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group