2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Ошибка вывода данных в файл
Сообщение24.10.2013, 09:13 


22/06/12
417
Помогите найти ошибку. Есть программа, которая выводит массив f из р=53 строк. В первой колонке х - целые числа от -26 до 26, во второй некоторые данные у(х) (приближенно у(х)-кубическая парабола). В третьей - результат аппроксимации полиномом третьей степени. Создается файл "D:\\new.txt", но в него записывается нечто странное:
-26 2.42703e+200
-6.27744e+066 2.42703e+200
-6.27744e+066 2.42703e+200
...
и так все 53 строки.

Вывод в блокнот:

Код:
  ofstream fout;
  fout.open("D:\\new.txt");
    for(int k=0;k<p;k++)
     fout<<f[k][0]<<"\t"<<f[k][2]<<"\n";
  fout.close();


Остальные фрагменты, где что-либо записывалось в f:

Код:
                ifstream in;
      in.open("D:\\FFF.txt");
      for (i=0;i<p;i++)
         for(j=0;j<2;j++)
            in>>f[i][j];
      in.close ();


Код:
//построение 3-го столбца таблицы f
   for (i=0;i<p;i++)
   {
      f[i][2]=0;
      for(j=0;j<n;j++)
         f[i][2]+=Ak[j]*pow(f[i][0],j);
   }

 Профиль  
                  
 
 Re: Ошибка вывода данных в файл
Сообщение24.10.2013, 09:36 
Заслуженный участник
Аватара пользователя


13/08/08
14495
По-моему, у Вас в файл и выводится по программе ровно два столбца. А на этапе ввода данных что-то поехало. Первое число ввелось правильно, а потом увы. Бывает. Я бы с помощью промежуточного вывода сначала проконтролировал правильность ввода, потом вывода с фиктивной (например, нулевой) аппроксимацией, а уж потом стал проверять сам метод аппроксимации.

Правило: интерфейс вначале. Некоторые предпочитают вначале отладить математику, но вот часто не получается.

 Профиль  
                  
 
 Re: Ошибка вывода данных в файл
Сообщение24.10.2013, 11:03 


22/06/12
417
Код:
//объявление динамического массива p на 3: 1 столбец х, 2 столбец у, 3 столбец для аппроксимации полиномом
      double**f=new double*[p];
      for(i=0; i<p;i++) 
         f[i]=new double[3];

 Профиль  
                  
 
 Re: Ошибка вывода данных в файл
Сообщение24.10.2013, 15:14 
Заслуженный участник
Аватара пользователя


13/08/08
14495
Никто не пишет.
Я, если честно, по вашему не понимаю, в смысле синтаксиса, чем написано, но вижу, что выводятся в файл первый и третий столбецы. Причём первый столбец не меняется после ввода, но в нём совсем не то, за исключением первой строки. Надо проверять ввод и вывод.

 Профиль  
                  
 
 Re: Ошибка вывода данных в файл
Сообщение26.10.2013, 23:26 
Аватара пользователя


30/05/09
121
Киев
Лучше объявить структуру
Используется синтаксис C++
struct ApprRecod
{
   double arg, func, appr;   //аргумент, значение функции, аппроксимация (соответственно)
};

int record_count = 53;
ApprRecord *Table = new ApprRecord[record_count];
//и так далее

 Профиль  
                  
 
 Re: Ошибка вывода данных в файл
Сообщение27.10.2013, 00:34 
Заслуженный участник


09/09/10
3729
Alhimik в сообщении #780580 писал(а):
Код:
int record_count = 53;
ApprRecord *Table = new ApprRecord[record_count];

Код:
const int record_count = 53;
std::vector<ApprRecord> table(record_count);

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

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



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

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


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

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