Форум программистов, компьютерный форум CyberForum.ru

Ошибка вывода данных в файл - C++

Восстановить пароль Регистрация
 
illuminates
3 / 3 / 0
Регистрация: 14.06.2012
Сообщений: 98
24.10.2013, 10:10     Ошибка вывода данных в файл #1
Помогите найти ошибку. Есть программа, которая выводит массив f из р=53 строк. В первой колонке х - целые числа от -26 до 26, во второй некоторые данные у(х) (приближенно у(х)-кубическая парабола). В третьей - результат аппроксимации полиномом третьей степени. Создается файл "D:\\new.txt", но в него записывается нечто странное:
-26 2.42703e+200
-6.27744e+066 2.42703e+200
-6.27744e+066 2.42703e+200
...
и так все 53 строки.

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

C++ (Qt)
1
2
3
4
5
  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:
C++ (Qt)
1
2
3
4
5
6
                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 ();
C++ (Qt)
1
2
3
4
5
6
7
//построение 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);
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
calculon
 Аватар для calculon
14 / 14 / 3
Регистрация: 18.07.2012
Сообщений: 79
24.10.2013, 10:34     Ошибка вывода данных в файл #2
А вы уверены, что содержимое файла действительно считывается правильно? Да, и неплохо бы взглянуть на фрагмент кода где выделяется память под f.
illuminates
3 / 3 / 0
Регистрация: 14.06.2012
Сообщений: 98
24.10.2013, 12:04  [ТС]     Ошибка вывода данных в файл #3
Код
//объявление динамического массива p на 3: 1 столбец х, 2 столбец у, 3 столбец для аппроксимации полиномом
		double**f=new double*[p];
		for(i=0; i<p;i++)  
			f[i]=new double[3];
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.10.2013, 13:29     Ошибка вывода данных в файл #4
Цитата Сообщение от illuminates Посмотреть сообщение
второй некоторые данные у(х) (приближенно у(х)-кубическая парабола). В третьей - результат аппроксимации полиномом третьей степени. Создается файл "D:\\new.txt", но в него записывается нечто странное:
-26 2.42703e+200
-6.27744e+066 2.42703e+200
-6.27744e+066 2.42703e+200
Так запись в файле в блокноте выглядит?
illuminates
3 / 3 / 0
Регистрация: 14.06.2012
Сообщений: 98
24.10.2013, 15:22  [ТС]     Ошибка вывода данных в файл #5
Да, и при выводе на экран через cout то же самое.

Этот вывод неправильно работает и в других моих программах, где я его задействовал. Пытаюсь найти ошибку. Возможно она в самом алгоритме.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.10.2013, 15:29     Ошибка вывода данных в файл #6
in.open("D:\\FFF.txt");
Открытие файла нужно проверить. Или проверяли?
illuminates
3 / 3 / 0
Регистрация: 14.06.2012
Сообщений: 98
24.10.2013, 16:07  [ТС]     Ошибка вывода данных в файл #7
Всё закомментировал, остались только строчки объявления, ввода и вывода на экран:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//объявление динамического массива p на 3: 1 столбец х, 2 столбец у, 3 столбец для аппроксимации полиномом
        double**f=new double*[p];
        for(i=0; i<p;i++)  
            f[i]=new double[3]; 
 
//создание потока для ввода чисел из файла
        
        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 ();
 
        //тест введена ли таблица
        for (i=0;i<p;i++)
            cout<<f[i][0]<<"\t"<<f[i][1]<<"\n";
Правильно ли записана процедура освобождения памяти?
C++ (Qt)
1
2
3
4
//освобождение памяти
        for (i=0;i<p;i++)
            delete[]f[i];
        delete[]f;
Работает так же некорректно.
Открытие фаила не проверялось.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.10.2013, 16:13     Ошибка вывода данных в файл #8
Цитата Сообщение от illuminates Посмотреть сообщение
Открытие фаила не проверялось.
Что мешает сделать? Или есть уверенность, что открывается?

Добавлено через 2 минуты
C++
1
2
3
//тест введена ли таблица
        for (i=0;i<p;i++)
            cout<<f[i][0]<<"\t"<<f[i][1]<<"\n";
Нормальный вывод?
illuminates
3 / 3 / 0
Регистрация: 14.06.2012
Сообщений: 98
24.10.2013, 16:16  [ТС]     Ошибка вывода данных в файл #9
Для проверки открыт ли файл написал:
C++ (Qt)
1
2
if (!in)
        cout << "Файл не открыт\n";
Файл открыт, с него списано первое число, остальные ячейки заполняются из ничего)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.10.2013, 16:17     Ошибка вывода данных в файл #10
Что в файле FFF.txt покажите.
illuminates
3 / 3 / 0
Регистрация: 14.06.2012
Сообщений: 98
24.10.2013, 16:20  [ТС]     Ошибка вывода данных в файл #11
Цитата Сообщение от alsav22 Посмотреть сообщение
Нормальный вывод?
Поясните, пожалуйста, в выводе ошибка?

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
Что в файле FFF.txt покажите.
В файле таблица:

-26 -17576,5
-25 -15624,8
-24 -13825
-23 -12167,3
-22 -10648,5
-21 -9260,8
-20 -8001
-19 -6859,3
...

и так далее, всего р=53 строки, столбцы разделены пробелом.
По идее массив f создавался размером р на 3, в третьей колонке записывается результат аппроксимации.
Затем весь массив помещается в новый документ, чтобы взять из него и построить в другой программе.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.10.2013, 16:23     Ошибка вывода данных в файл #12
Цитата Сообщение от illuminates Посмотреть сообщение
В файле таблица:
-26 -17576,5
-25 -15624,8
-24 -13825
-23 -12167,3
-22 -10648,5
-21 -9260,8
-20 -8001
Запятые на точки замените. У вас, на запятой, поток ломается.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2013, 16:26     Ошибка вывода данных в файл
Еще ссылки по теме:

C++ Ошибка вывода данных в массиве строк
ошибка вывода C++
Ошибка вывода на консоль C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
illuminates
3 / 3 / 0
Регистрация: 14.06.2012
Сообщений: 98
24.10.2013, 16:26  [ТС]     Ошибка вывода данных в файл #13
Благодарю!!! Программа работает!
Yandex
Объявления
24.10.2013, 16:26     Ошибка вывода данных в файл
Ответ Создать тему
Опции темы

Текущее время: 08:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru