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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.79
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 99
#1

Считывание чисел из файла и запись их в массив - C++

01.02.2012, 20:11. Просмотров 5578. Ответов 8
Метки нет (Все метки)

Имеется файл txt со следующей строкой:
ght# 1, nkat= 8, str= 1.00000, lmv= 0.5000 0.0001 0.0001 (reduced coord)
ght# 2, nkat= 8, str= 1.00000, lmv= 0.4500 0.0002 0.0002 (reduced coord)
ght# 3, nkat= 8, str= 1.00000, lmv= 0.4000 0.0003 0.0003 (reduced coord)
Требуется считать из этого файла последние три цифры из каждой строки (т.е. из первой 0.5000, 0.0001, 0.0001 и т.д.) и записать их в массив 3 на 3.
Помогите, пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2012, 20:11     Считывание чисел из файла и запись их в массив
Посмотрите здесь:
Считывание файла в массив и запись нового файла C++
C++ Считывание чисел из файла в массив
Считывание из файла чисел, разделенных пробелом, в массив C++
C++ Считывание из файла массив целых чисел и действия над ним
C++ Чтение чисел из файла и запись в массив
C++ пытаюсь сделать реализацию через считывание из файла кол-ва чисел, i,но незнаю как сделать реализацию из файла в массив и сортировки.
Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
01.02.2012, 21:52     Считывание чисел из файла и запись их в массив #2
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
using std::ifstream;
using std::copy;
 
int main()
{
    ifstream In("c:\\temp\\1.txt");//здесь путь к твоему файлу надо указать
 
    typedef char buf [100];
    buf mass [3];
    
    for(int i = 0; i<3; i++)
    {
    In.getline(mass[i],100);
    }
    
    char* p1 = strstr(mass[0],"0.5");
    char* p2= strstr(mass[0],"(");
    copy(p1,p2,mass[0]);
    char* end = strstr(mass[0],"1.0");
        *end = 0; // "отрезаем" лишние значения
 
    p1 = strstr(mass[1],"0.45");
    p2= strstr(mass[1],"(");
    copy(p1,p2,mass[1]);
    end = strstr(mass[1],"1.0");
        *end = 0;
 
    p1 = strstr(mass[2],"0.40");
    p2= strstr(mass[2],"(");
    copy(p1,p2,mass[2]);
    end = strstr(mass[2],"1.0");
        *end = 0;
//теперь в массиве mass находятся 3 строки в каждой последние 3 цифры
 
 
    return 0;
}
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 99
01.02.2012, 22:35  [ТС]     Считывание чисел из файла и запись их в массив #3
А можно ли сделать процедуру записи в массив в виде цикла? Три строчки в файле это приведено условно. Их там намного больше. Не писать же для каждой из сотни строк
C++
1
2
3
4
5
        p1 = strstr(mass[1],"0.45");
        p2= strstr(mass[1],"(");
        copy(p1,p2,mass[1]);
        end = strstr(mass[1],"1.0");
                *end = 0;
..
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
01.02.2012, 23:11     Считывание чисел из файла и запись их в массив #4
pro_mary, так и циферьки разные могут быть. задача стояла конкретная. есть файл там три строчки такого то содержания. на до сделать то то.
Цитата Сообщение от pro_mary Посмотреть сообщение
Имеется файл txt со следующей строкой:
ght# 1, nkat= 8, str= 1.00000, lmv= 0.5000 0.0001 0.0001 (reduced coord)
ght# 2, nkat= 8, str= 1.00000, lmv= 0.4500 0.0002 0.0002 (reduced coord)
ght# 3, nkat= 8, str= 1.00000, lmv= 0.4000 0.0003 0.0003 (reduced coord)
Требуется считать из этого файла последние три цифры из каждой строки (т.е. из первой 0.5000, 0.0001, 0.0001 и т.д.) и записать их в массив 3 на 3.
Помогите, пожалуйста.
какова задача в целом? найти любые данные в любом количестве строк?
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 99
01.02.2012, 23:27  [ТС]     Считывание чисел из файла и запись их в массив #5
В файле все строки идентичны, просто я не стала загромождать сообщение сотней строк, изменяются: ght от 1 до 100, и значения lmv. Нужно записать значения lmv в массив, а тип данных - числа с плавающей точкой.
Том Ардер
Модератор
Эксперт по математике/физике
3736 / 2349 / 293
Регистрация: 15.06.2009
Сообщений: 4,200
02.02.2012, 00:14     Считывание чисел из файла и запись их в массив #6
Примерно так:
(кстати, не три цифры, а три числа, разница есть)

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <float.h>
#include <math.h>
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
 
int main()
{
  char buf[MAX_PATH];
  ifstream inf( "путь к файлу ввода" );
  ofstream outf( "путь к файлу вывода" );
 
  if( !inf.fail() && !outf.fail() )
  {
    double array[3];
    char comma;
    int nDummy;
    double dDummy;
 
    while( !inf.eof() )
    {
       inf >> buf // ght#
           >> nDummy >> comma // 1,
           >> buf // nkat=
           >> nDummy >> comma // 8,
           >> buf // str=
           >> dDummy >> comma // 1.00000,
           >> buf // lmv=
           >> array[0] >> array[1] >> array[2];
       inf.getline( buf, MAX_PATH ); // skip rest of the line
       outf << setw(15) << array[0] << setw(15) << array[1] << setw(15) << array[2];
   }
    inf.close();
    outf.close();
  }
  else
  {
      // files opening error
  }
}
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 99
02.02.2012, 00:28  [ТС]     Считывание чисел из файла и запись их в массив #7
Точно, три числа.. Я об этом подумала тогда, когда уже написала.. Спасибо!!
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 99
14.02.2012, 19:09  [ТС]     Считывание чисел из файла и запись их в массив #8
Компилятор ругается на следующее:
C++
1
char buf[MAX_PATH];
Пишет : error C2065: 'MAX_PATH' : undeclared identifier..

Добавлено через 13 минут
С MAX_PATH разобралась..
А как из файла, имеющего такой вид:
ght# 1, nkat= 8, str= 1.00000, lmv= 0.5000 0.0001 0.0001
-3.78987 -1.16032 4.69394 4.69394 7.38388 9.23579 9.23579 13.45362
ght# 2, nkat= 8, str= 1.00000, lmv= 0.4500 0.0002 0.0002
-6.03831 4.74627 5.70919 5.70919 8.43435 8.74293 8.74293 10.10776
ght# 3, nkat= 8, str= 1.00000, lmv= 0.4000 0.0003 0.0003
-5.89384 4.56875 5.08418 5.08418 7.86175 9.60627 9.60627 10.21287
записать в другой файл следующее:
0.5000 0.0001 0.0001 -3.78987 -1.16032 4.69394 4.69394 7.38388 9.23579 9.23579 13.45362
0.4500 0.0002 0.0002 -6.03831 4.74627 5.70919 5.70919 8.43435 8.74293 8.74293 10.10776
0.4000 0.0003 0.0003 -5.89384 4.56875 5.08418 5.08418 7.86175 9.60627 9.60627 10.21287
т . е из нечетных строк брать последние три числа, а из четных все.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2012, 03:12     Считывание чисел из файла и запись их в массив
Еще ссылки по теме:
C++ Запись и считывание в/из ФАЙЛА
C++ Запись и считывание из файла
Запись и считывание из бинарного файла C++
Построчная запись и считывание из файла C++
Считывание из файла и запись в файл C++

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

Или воспользуйтесь поиском по форуму:
Том Ардер
Модератор
Эксперт по математике/физике
3736 / 2349 / 293
Регистрация: 15.06.2009
Сообщений: 4,200
15.02.2012, 03:12     Считывание чисел из файла и запись их в массив #9
Цитата Сообщение от pro_mary Посмотреть сообщение
из нечетных строк брать последние три числа, а из четных все.
Использовать счётчик строк в цикле чтения, примерно так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int counter = 0;  //
while( !inf.eof() )
{
    counter++;
    if( counter % 2 == 1 )
    {
        // обработка нечётных строк
    }
    else
    {
        // обработка чётных строк
    }
}
Yandex
Объявления
15.02.2012, 03:12     Считывание чисел из файла и запись их в массив
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru