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

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

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

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

01.02.2012, 20:11. Просмотров 5817. Ответов 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.
Помогите, пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2012, 20:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считывание чисел из файла и запись их в массив (C++):

Считывание файла в массив и запись нового файла - C++
Консоль VS C++. Текстовый файл открывается как бинарный, и считывается по 100 байт в массив - и сразу они переписываются в другой файл. В...

Считывание чисел из файла в массив - C++
Делая расчетку, запнулся на считывании данных :cry: Имеется файл вида n m 2 3 2 5 1 5 Например: 3 3

Считывание из файла чисел, разделенных пробелом, в массив - C++
В текстовом файле массив целых чисел записанных через пробел. Затем переход на новую строку и еще один массив через пробел. Пытаюсь считать...

Считывание из файла массив целых чисел и действия над ним - C++
помогите написать программу. Из файла (имя файла вводится с клавиатуры) считывается массив целых чисел. Размер массива заранее...

Чтение чисел из файла и запись в массив - C++
Дан файл с 20 строками типа: "C=219-02,OU=comps,C=su,C=su,C=ru,20111129105801.0Z" необходимо прочитать в каждой строке числа типа:...

Чтение чисел из файла и запись в массив - C++
В общем надо записать числа из файла в массив я написал код, но вот не могу понять почему значения массива остаются равными 0, хелпаните...

8
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;
}
1
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 100
Завершенные тесты: 1
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;
..
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.
Помогите, пожалуйста.
какова задача в целом? найти любые данные в любом количестве строк?
0
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 100
Завершенные тесты: 1
01.02.2012, 23:27  [ТС] #5
В файле все строки идентичны, просто я не стала загромождать сообщение сотней строк, изменяются: ght от 1 до 100, и значения lmv. Нужно записать значения lmv в массив, а тип данных - числа с плавающей точкой.
0
Том Ардер
Модератор
Эксперт по математике/физике
3769 / 2382 / 302
Регистрация: 15.06.2009
Сообщений: 4,276
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
  }
}
1
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 100
Завершенные тесты: 1
02.02.2012, 00:28  [ТС] #7
Точно, три числа.. Я об этом подумала тогда, когда уже написала.. Спасибо!!
0
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 100
Завершенные тесты: 1
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
т . е из нечетных строк брать последние три числа, а из четных все.
0
Том Ардер
Модератор
Эксперт по математике/физике
3769 / 2382 / 302
Регистрация: 15.06.2009
Сообщений: 4,276
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
    {
        // обработка чётных строк
    }
}
0
15.02.2012, 03:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2012, 03:12
Привет! Вот еще темы с ответами:

пытаюсь сделать реализацию через считывание из файла кол-ва чисел, i,но незнаю как сделать реализацию из файла в массив и сортировки. - C++
В файле input.txt находится неизвестное количество вещественных чисел в интервале . Выцапарать их оттуда, отсортировать по убыванию модуля...

Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" - C++
Всем привет. Есть два вопроса. 1. Нужно считать из txt файла числа в массив столбцов и строк. Код вроде правильный, но пишет...

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

Запись и считывание в/из ФАЙЛА - C++
Есть программа По вычислению СЛАУ методом Гаусса. Помогите сделать так, что бы можно было считывать и записывать в ФАЙЛ: СЛАУ и его...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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