Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460

Запись больших массивов информации в текстовый файл

28.05.2016, 16:02. Показов 947. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно записывать большие массивы информации в текстовый файл.

При открытии файла, нужно сделать так, чтобы все содержимое в нем при открытии удалялось.
Запись числовых массивов в файл осуществляется в подпрограмме.

в main() открываю файл
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
ofstream filestr; //создали объект класса
 
   filestr.open ("test.txt", ios_base::trunc| ios_base::app  ); //связываем объект с файлом, открываем файл для записи в конец файл, маркер ::app
 
     if(filestr == NULL)
         {
             cout << "error! didn't open the file!"<<endl;
             return -1;
         }
     else cout<<"The file has been opened!"<<endl;

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void compute_u() // вычисляем u[ ][ ][ ] на всей решётке
{
ofstream filestr("test.txt",ios::app); //маркер ::app - для записи в конец файла
    for (int x = 1; x <= Nx; x++){
       for (int y = 1; y <= Ny; y++){
           for (int d = 0; d < 2; d++){
                u[x][y][d] = 0;
                for (int i = 1; i < Nc; i++){
                 u[x][y][d] += n[x][y][i] * c[i][d];
                 u[x][y][d] /= rho;}
            }
        }
 
       //запись в файл
       filestr<<setprecision(5)<<u[x][Ny][0]<<setprecision(5)<<setw(15)<<u[x][Ny-5][0]
       <<setprecision(5)<<setw(15)<<u[x][Ny-10][0]<<setprecision(5)<<setw(15)<<u[x][Ny/2][0]
       <<setprecision(5) <<setw(15)<<u[x][10][0]<<setprecision(5)<<setw(15)<<u[x][5][0]
       <<setprecision(5)<<setw(15)<<u[x][1][0]<<endl;
    }
}
И хочу, чтобы в цикле перед тем, как отрабатывала функция compute_u(), которая записывает данные в файл, печаталась строка, возвещающая о начале нового цикла записи.
Для этого в Main() пишу:
C++ (Qt)
1
2
3
4
5
6
7
8
9
for(int stepTime=1;stepTime<50;++stepTime){
          filestr<<endl<<"stepTime= "<<stepTime<<endl<<endl;
          filestr<<setprecision(5)<<"u[x][Ny][0]"<<setprecision(5)<<setw(15)<<"u[x][Ny-5][0]"
          <<setprecision(5)<<setw(15)<<"u[x][Ny-10][0]"<<setprecision(5)<<setw(15)<<"u[x][Ny/2][0]"
          <<setprecision(5) <<setw(15)<<"u[x][10][0]"<<setprecision(5)<<setw(15)<<"u[x][5][0]"
          <<setprecision(5)<<setw(15)<<"u[x][1][0]"<<endl<<endl;
 
    takeStep();  // шаг по времени с графическим выводом профиля течения
    }
хочу, чтобы в файл записывалось так
stepTime= 1

u[x][Ny][0] u[x][Ny-5][0] u[x][Ny-10][0] u[x][Ny/2][0] u[x][10][0] u[x][5][0] u[x][1][0]

******** данные из функции compute_u*********************

stepTime= 2

u[x][Ny][0] u[x][Ny-5][0] u[x][Ny-10][0] u[x][Ny/2][0] u[x][10][0] u[x][5][0] u[x][1][0]
******** данные из функции compute_u*********************

stepTime= 3

u[x][Ny][0] u[x][Ny-5][0] u[x][Ny-10][0] u[x][Ny/2][0] u[x][10][0] u[x][5][0] u[x][1][0]
******** данные из функции compute_u*********************

и т.д.

Вместо этого, почему то печатается так:
stepTime= 1

u[x][Ny][0] u[x][Ny-5][0] u[x][Ny-10][0] u[x][Ny/2][0] u[x][10][0] u[x][5][0] u[x][1][0]


stepTime= 2

u[x][Ny][0] u[x][Ny-5][0] u[x][Ny-10][0] u[x][Ny/2][0] u[x][10][0] u[x][5][0] u[x][1][0]


stepTime= 3

u[x][Ny][0] u[x][Ny-5][0] u[x][Ny-10][0] u[x][Ny/2][0] u[x][10][0] u[x][5][0] u[x][1][0]


stepTime= 4

u[x][Ny][0] u[x][Ny-5][0] u[x][Ny-10][0] u[x][Ny/2][0] u[x][10][0] u[x][5][0] u[x][1][0]

и т.д.

и лишь потом записывается то, что считается в compute_u...

Почему так ? и как это исправить?
Заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.05.2016, 16:02
Ответы с готовыми решениями:

Запись в текстовый файл информации о студентах, поиск информации, сортировка
Здравствуйте помогите пожалуйста:( 3.1 Для записи в текстовый файл информации о студентах Вашей группы создать КФ WRITE_FD.BAT со...

Запись информации в текстовый файл
программа, которая позволит записывать в текстовый файл информацию (марка, модель, год выпуска). Данные должны вводиться и сохраняться в...

Запись в текстовый файл информации
Здравствуйте! Подскажите, пожалуйста, как можно записывать информацию в текстовый файл, состоящего из записей, имеющих заданную...

14
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
28.05.2016, 17:59
Где вызов compute_u() в цикле?
0
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
28.05.2016, 18:07  [ТС]
В takeStep() она вызывается
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
28.05.2016, 18:18
Ты открываешь один и тот же файл в нескольких местах. Сделай, чтобы файл открывался один раз, а в функции передавай ссылку на ifstream.
0
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
28.05.2016, 18:31  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
чтобы файл открывался один раз
в main() ?
Цитата Сообщение от nmcf Посмотреть сообщение
а в функции передавай ссылку на ifstream.
это в функции compute_u передавать ссылку? на что?
почему на ifstream?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
28.05.2016, 18:44
Цитата Сообщение от Blitzor DDD Посмотреть сообщение
в main() ?
Да.
Цитата Сообщение от Blitzor DDD Посмотреть сообщение
почему на ifstream?
Ну а на что ещё? Ты же через ifstream записываешь.
0
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
28.05.2016, 19:06  [ТС]
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void compute_u(ifstream & filestr) // вычисляем u[ ][ ][ ] на всей решётке
{
    for (int x = 1; x <= Nx; x++){
       for (int y = 1; y <= Ny; y++){
           for (int d = 0; d < 2; d++){
                u[x][y][d] = 0;
                for (int i = 1; i < Nc; i++){
                 u[x][y][d] += n[x][y][i] * c[i][d];
                 u[x][y][d] /= rho;}
            }
        }
 
       //запись в файл
       filestr<<setprecision(5)<<u[x][Ny][0]<<setprecision(5)<<setw(15)<<u[x][Ny-5][0]
       <<setprecision(5)<<setw(15)<<u[x][Ny-10][0]<<setprecision(5)<<setw(15)<<u[x][Ny/2][0]
       <<setprecision(5) <<setw(15)<<u[x][10][0]<<setprecision(5)<<setw(15)<<u[x][5][0]
       <<setprecision(5)<<setw(15)<<u[x][1][0]<<endl;
    }
}
Неужели так?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
28.05.2016, 19:21
Да.
0
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
28.05.2016, 19:29  [ТС]
А как быть с тем, что выдает ошибку на этой строчке
C++ (Qt)
1
 filestr<<setprecision(5)<<u[x][Ny][0]<<setprecision(5)<<setw(15)<<u[x][Ny-5][0]
и говорит, что не понимает оператор << ?

функция compute_u входит в takeStep, я исправил аргумент, который она принимает вот так:
compute_u(ifstream &);
и что-то не получается тут.
Что нужно изменить?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
29.05.2016, 08:33
ifstream сначала передаётся в takeStep(), оттуда уже в compute_u().
0
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
29.05.2016, 15:03  [ТС]
C++ (Qt)
1
takeStep(ifstream & filestr)
C++ (Qt)
1
    compute_u(ifstream &  );
те же ошибки выдает
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
29.05.2016, 17:05
Программу покажи.
0
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
29.05.2016, 17:16  [ТС]
C++ (Qt)
1
2
3
4
5
void takeStep() {
//*** 3 подпрограммы, где нет записи в файл
    compute_u();
//*** 2 подпрограммы, где нет записи в файл 
}
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void compute_u() // вычисляем u[ ][ ][ ] на всей решётке
{
ofstream filestr("test.txt",ios::app); //маркер ::app - для записи в конец файла
   for (int y = 1; y <= Ny; y++){
      for (int x = 1; x <= Nx; x++){
 
           for (int d = 0; d < 2; d++){
                u[x][y][d] = 0;
                for (int i = 1; i < Nc; i++){
                 u[x][y][d] += n[x][y][i] * c[i][d];
                 u[x][y][d] /= rho;}
            }
        }
 
       //запись в файл
       filestr<<"u["<<Nx-20<<"]["<< y<<"] = "<<setprecision(5)<<u[Nx-20][y][0]<<endl;
    }
}
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main() {
 
ofstream filestr; //создали объект класса
 //  filestr.open("test.txt", ios_base::trunc);
   filestr.open ("test.txt", ios_base::app  ); //связываем объект с файлом, открываем файл для записи в конец файл, маркер ::app
 
     if(filestr == NULL)
         {
             cout << "error! didn't open the file!"<<endl;
             return -1;
         }
     else cout<<"The file has been opened!"<<endl;
   for(int stepTime=1;stepTime<100; ++stepTime){
          filestr<<endl<<"stepTime= "<<stepTime<<endl<<endl;
    takeStep();  
    }
 
   filestr.close();
}
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
29.05.2016, 17:28
Ну и где параметр?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void takeStep(ofstream & filestr)
 
compute_u(ofstream & filestr)
 
int main() {
 
ofstream filestr; //создали объект класса
 //  filestr.open("test.txt", ios_base::trunc);
   filestr.open ("test.txt", ios_base::app  ); //связываем объект с файлом, открываем файл для записи в конец файл, маркер ::app
 
     if(filestr == NULL)
         {
             cout << "error! didn't open the file!"<<endl;
             return -1;
         }
     else cout<<"The file has been opened!"<<endl;
   for(int stepTime=1;stepTime<100; ++stepTime){
          filestr<<endl<<"stepTime= "<<stepTime<<endl<<endl;
 
    takeStep(filestr);  
    }
 
   filestr.close();
}
0
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
29.05.2016, 17:42  [ТС]
Ну да, это я просто самую первую версию отправил. Я так и сделал, как вы сказали.
и выводит ошибки
expected primary-expression before & token
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.05.2016, 17:42
Помогаю со студенческими работами здесь

запись информации в текстовый файл
Здравствуйте. Помогите пожалуйста исправить код php-файла, который должен осуществлять запись информации в текстовый файл из Apache...

Запись информации из таблицы бд в текстовый файл
Подскажите, пожалуйста, где у меня ошибка. Нужно записать информацию из таблицы бд в текстовый файл. На форме находится поле, где задается...

vbs. запись информации в текстовый файл
Есть скрипт, который выводит в сообщении имя машины, и его ip адрес, дату и в время. Нужно переделать скрипт, что бы он записывал эту...

Запись нескольких массивов в текстовый файл
Имеется 3 массива одинаковой размерности A, B, C. Как записвать их в файл, чтобы каждый массив располагался в столбец. Например: A ...

Как записывать несколько одномерных массивов, и несколько двумерных массивов в один единственный текстовый файл
Как записывать несколько одномерных массивов, и несколько двумерных массивов в один единственный текстовый файл? Что-то не видел других...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru