1 / 1 / 0
Регистрация: 16.06.2016
Сообщений: 6
|
||||||
1 | ||||||
Построчное чтение целых чисел из текстового файла с занесением в массив для анализа16.06.2016, 18:59. Показов 1994. Ответов 5
Метки нет (Все метки)
Доброго всем здравия!Я новичок в С++, и у меня существует большая необходимость в решении следующей задачи: чтение входного текстового (input.txt) файла, содержащего 6 столбцов и не фиксированное количество сток целых чисел, разделенных знаком табуляции с занесением в динамический массив. Чтение и запись в массив должно выполняться построчно. Далее, в полученном исходном массиве ищутся строки, в которых первое число находится в диапазоне от 20 до 29 и 2 числа (из оставшихся 4-х) находятся в диапазоне от 1 до 9. Найденная строка чисел заносится в другой массив, который по окончании работы записывается в выходной файл (output.txt) также построчно, с указанием в конце количества полученных строк. Пример входного файла: 15 2 7 44 8 3 22 15 8 30 2 18 18 3 79 32 28 5 14 44 83 12 6 55 27 3 14 83 55 9 В этом примере 2-я и 5-я строки подпадают под условие анализа, и должны быть занесены в отдельный массив, а затем в файл (output.txt). На данный момент я смог реализовать только чтение из файла и вывод на экран (в качестве средства тестирования). Однако, чтение произвожу в char, и преобразовать в int никак не получается! Была мысль использовать парсер для поиска строк по условию, подключил Boost, но в синтаксисе Spirit-а пока разобраться не могу... Скорее всего это будет оптимальный вариант, но для меня пока сложновато. Вот мой код (пишу в VS2015):
0
|
16.06.2016, 18:59 | |
Ответы с готовыми решениями:
5
Построчное чтение из текстового файла Построчное чтение из текстового файла .txt Построчное чтение текстового файла и работа со строками Из текстового файла считать массив целых чисел |
385 / 279 / 478
Регистрация: 09.05.2014
Сообщений: 769
|
|||||||||||
18.06.2016, 17:14 | 2 | ||||||||||
ну вот как-то так переводим:
Добавлено через 3 часа 47 минут вот, чтоб было понятно что я имел ввиду:
1
|
1 / 1 / 0
Регистрация: 16.06.2016
Сообщений: 6
|
|||||||||||||||||||||
20.06.2016, 09:17 [ТС] | 3 | ||||||||||||||||||||
Искренне благодарю за столь подробное объяснение, lawr!!!
Буду пробовать! Добавлено через 1 час 41 минуту В
И после
Еще раз выражаю огромную благодарность за помощь!!!
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
20.06.2016, 09:29 | 4 |
У вас чтение через поток. Используйте его также как cin. Да, да, вот так прям и пишите fin>>intValue, само все распарсит.
2
|
1 / 1 / 0
Регистрация: 16.06.2016
Сообщений: 6
|
|
20.06.2016, 13:06 [ТС] | 5 |
Благодарю за ценную подсказку! Возможно и придется переделать с учетом перевода в int.
У меня сейчас возник другой вопрос: как организовать возможность использования большого количества "шаблонов" условий поиска строк с использованием все тех же интервалов чисел!
0
|
1 / 1 / 0
Регистрация: 16.06.2016
Сообщений: 6
|
|
21.06.2016, 22:49 [ТС] | 6 |
Уважаемые знатоки и эксперты!!!
Помогите пожалуйста определить направление, в котором двигаться! Задача усложнилась: необходимо в входном массиве чисел найти строки, удовлетворяющие 450 условиям, наподобие того, что было в исходной задаче. Постараюсь описать условия для поиска: Пусть D0 - интервал чисел 0 - 9 D1 - 10 - 19 D2 - 20 - 29 D3 - 30 - 39 D4 - 40 - 49 Далее: P - 2 числа, принадлежащие одному из интервалов D() PP - 4 числа, принадлежащие двум разным интервалам D() PPP - 6 чисел, принадлежащие трем разным интервалам D() Q - 4 числа, принадлежащие одному из интервалов D() QP - 4 числа одного интервала D() и 2 числа другого интервала D() S - 6 чисел, принадлежащие одному из интервалов D() T - 3 числа, принадлежащие одному из интервалов D() TP - 3 числа одного интервала D() и 2 числа другого интервала D() TT - 3 числа одного интервала D() и 3 числа другого интервала D() V - 5 чисел, принадлежащие одному из интервалов D() Самое интересное! Пришлось ввести формальную запись для условий. Например: 1D0PP; 1-первое число в строке принадлежит D0, среди оставшихся 5-ти есть 4 числа, принадлежащие двум разным интервалам D() за исключением D0 (в противном случае это будет уже T) Теперь условия: 1D0PP; 1D0P; 1D0T; 1D0TP; 1D0Q; 1D0V 2D0PP; 2D0TP; 2D0PPP; 2D0P; 2D0QP 3D0TP; 3D0T; 3D0TT 4D0Q; 4D0QP 5D0V 6D0 (это фактически S) Аналогично для D1, D2, D3 и D4. Т.е 1D1PP; 1D1P; 1D1T; 1D1TP; 1D1Q; 1D1V 2D1PP; 2D1TP; 2D1PPP; 2D1P; 2D1QP 3D1TP; 3D1T; 3D1TT 4D1Q; 4D1QP 5D1V 6D1 и т.д. Как мне это видится: D() это фактически лексемы, из которых составлены грамматики в виде вышеописанных условий. Вопрос в том, что я не представляю как это можно описать. Помогите пожалуйста советом! Заранее благодарен!
0
|
21.06.2016, 22:49 | |
21.06.2016, 22:49 | |
Помогаю со студенческими работами здесь
6
Чтение построчное из текстового файла в массив Построчное чтение текстового файла в массив Построчное чтение текстового файла Построчное чтение из текстового файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |