Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2009, 13:17   #1
ciaonataha
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 150
По умолчанию 4-я матрица и 6-я матрица

У меня проблемма, не знаю, восможно ли записать значения из текстового файла в 4-ую матрицу, в 6-ую матритцу!!!!!
Если да, то как?
Спасибо большое!
ciaonataha вне форума Ответить с цитированием
Старый 27.03.2009, 14:19   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Возможно. Способ зависит от структуры этого файла. Код писать не буду. Приводите свои наработки сюда и что именно не получается, помогу чем могу, иначе - в помощь студентам или фриланс.
pu4koff вне форума Ответить с цитированием
Старый 27.03.2009, 15:05   #3
ciaonataha
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 150
По умолчанию

Вот код.
Таблица записивается, а вот матрица не записивается. Одни нули выдает..
Код:
void Gibbs::readtable(Array <double,1> &A)
{
 for(int n = 0; n < NMAX; n++){
 fscanf(fp,"%lf",&A(n));}
}

void Gibbs::readmatrixGHSER(Array <double,4> &B)
{
 int t, l, i , j;

 for (t = 0; t < LMAX; t++)
  for (l = 0; l < CMAX; l++){
   for (i = 0; i < NMAX; i++)
    for (j = 0; j < KMAX; j++){
         fscanf(fp,"%lf",&B(t,i,j,l));}}
}

void Gibbs::readmatrixL(Array <double,6> &B)
{
}

void Gibbs::readmatrix1(Array <double,2> &B)
{
 int i,j;
 for (i = 0; i < LMAX; i++){
  for (j = 0; j < CMAX; j++){
  fscanf(fp,"%lf",&B(i,j));}}
}

void Gibbs::read(char *file_name)
{
  int n=800; char szbuff[n];

  Array <double,1> Tr(NMAX);
  Array <double,4> GHSERp(LMAX,NMAX,KMAX,CMAX);

  Array <double,6> L1ini(NMAX,IMAX,CMAX,LMAX,FMAX,KMAX);
  Array <double,6> L2ini(NMAX,IIMAX,JJMAX,KKMAX,FMAX,KMAX);

  Array <double,2> TabGHSER(LMAX,CMAX);
  Array <double,2> TabL1(LMAX,CMAX);
  Array <double,2> TabL2(LMAX,CMAX);
 
//=========================================================================================================
 fp=fopen(file_name,"r");
 if (fp==NULL){cout<<"ne peut lire le fichier '"<<file_name<<"'"<<endl;exit(-1);}

 while (!feof(fp)){
 fgets(szbuff,n,fp);printf("%s",szbuff);
 readtable(Tr);
 fgets(szbuff,n,fp);printf("%s",szbuff);
// readmatrix1(TabGHSER); 
 readmatrixGHSER(GHSERp);
 fgets(szbuff,n,fp);
 readmatrix1(TabL1);
 fgets(szbuff,n,fp);
 readmatrix1(TabL2);}
 fclose(fp);

 cout<<Tr<<endl;
// cout<<GHSERp<<endl;
// cout<<TabL1<<endl;
// cout<<TabL2<<endl;
//cout<<TabGHSER<<endl;
}
Вложения
Тип файла: txt ferrite.txt (1.6 Кб, 163 просмотров)

Последний раз редактировалось MaTBeu; 27.03.2009 в 23:49.
ciaonataha вне форума Ответить с цитированием
Старый 27.03.2009, 15:22   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

1. Используйте тэг code.
2. Раз таблица считывается из файла, значит и матрица должна. Пошагово смотрите что и как работает. Может перед матрицей строку не той длины считываете и в итоге позиция в файле не на числе устанавливается. А может класс Array Вы сами написали и там что-то с индексацией не так. Так вот сразу не скажешь что тут не так.
pu4koff вне форума Ответить с цитированием
Старый 27.03.2009, 15:32   #5
ciaonataha
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 150
По умолчанию

Класс я сама не писала. Использую библиотеку blitz++.
Что такое тэг code?
ciaonataha вне форума Ответить с цитированием
Старый 27.03.2009, 15:59   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от ciaonataha Посмотреть сообщение
Класс я сама не писала. Использую библиотеку blitz++.
Что такое тэг code?
Над текстом вашего сообщения есть кнопка со значком решетки, она добавляет тэк code. Просто код удобнее читать, если его "обернуть" в этот тэг.
Если я правильно понял, то чтение таблицы выполняется посредством вызова readtable(Tr); и таблица считывается из файла корректно. Чтение же матрицы - readmatrixGHSER(GHSERp); и в матрице в результате одни нули. Если всё так, то ошибка между этими строками, т.е. gets(szbuff,n,fp);printf("%s",szbuf f); считывает из файла что-то не то. Смотрите в отладчике что в результате находится в szbuff и что там должно находиться
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица Artimbulidor Помощь студентам 5 07.01.2009 21:25
Матрица BlonDino4Ka Паскаль, Turbo Pascal, PascalABC.NET 3 07.01.2009 00:04
Матрица =( Gwynbleidd Помощь студентам 3 16.12.2007 23:20
Матрица Cartman18 Помощь студентам 4 13.12.2007 19:49
Матрица Lima Паскаль, Turbo Pascal, PascalABC.NET 3 08.12.2006 01:01