Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Zhenia
0 / 0 / 0
Регистрация: 27.11.2012
Сообщений: 22
#1

Поиск в файле - C++

13.04.2015, 23:32. Просмотров 410. Ответов 8
Метки нет (Все метки)

Добрый вечер! не подскажите пожалуйста, как правильно нужно считать данные из файла. задача состоит в том, что рассчитывается, например, угол, он от 0 до 180. текстовый файл задан в виде таблицы, строка состоит из номера строки, значения угла, и соответствующее углу число. нужно по получившемуся значению угла(который заранее уже рассчитан), найти в файле этот угол и вывести соответствующее этому углу значение, которое будет в дальнейшем использоваться в формулах для вычисления.
http://www.cyberforum.ru/cpp-beginners/thread1036306.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2015, 23:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Поиск в файле (C++):

Реализовать поиск заданного файла в древе каталогов и поиск указанной информации в этом файле
Имеется много папок в каждой папке есть файл proc.txt, как можно по всем этим...

Поиск в файле
Сведения об автомобиле состоят из его марки, номера и фамилии владельца. Дан...

Поиск в файле
Есть файл, который содержит список учеников и их оценки Выглядит примерно так:...

Поиск в файле
Как организовать поиск в файле по фамилии или studID. Чтобы выводилась полная...

Поиск в файле.
Программный продукт предназначен для работы с текстовыми файлами а)...

8
np2001
24 / 24 / 11
Регистрация: 09.04.2015
Сообщений: 80
14.04.2015, 00:30 #2
Если файл не слишком большой - то лучше сразу считать его в память. Считывание производить в два этапа. Первый этап - считываем одну строку, ориентируемся по символу перевода строки или концу файла. второй этап - в полученной строке разделяем числовые значения (номер строки, угол, значение). Значения разделяются по заданному символу (пробел, запятая и т.п.) Полученные подстроки преобразуем в числа и записываем в std::map например или просто в массив. А оттуда уже легко будет получать необходимое значение по заданому углу.
1
Zhenia
0 / 0 / 0
Регистрация: 27.11.2012
Сообщений: 22
14.04.2015, 00:35  [ТС] #3
да в том то и дело, что большой. он в виде таблицы сделан, в одной строке 5 столбцов ( номер строки, угол, значение, угол, значение; углы эти разные, нужно еще выборку сделать, по какому именно столбцу смотреть и искать нужное значение) строк 180, я понимаю, что нужно это делать посимвольно, но каааак, там не 2 столбца
0
np2001
24 / 24 / 11
Регистрация: 09.04.2015
Сообщений: 80
14.04.2015, 00:46 #4
По словом "большой" я подразумевал такой, который не влазит полностью в память компьютера. И какая разница сколько там столбцов? Главное, что их одинаково в каждой строке и указанные параметры идут в определенном порядке, т.е например номер строки всегда идет первым. Будем считать, что параметры в строке разделены запятыми, значит берешь строку, ищешь первую запятую - все что от начала строки до запятой - это номер строки, далее смотришь от первой запятой до второй запятой - это будет угол и так далее.
0
Zhenia
0 / 0 / 0
Регистрация: 27.11.2012
Сообщений: 22
14.04.2015, 00:56  [ТС] #5
у меня нет разделений запятыми, вот пример первой строки:
"1 1.00 -.2699E+02 -178.00 -.4400E-02"
то есть, просто считать посимвольно, считая пробелы?
0
np2001
24 / 24 / 11
Регистрация: 09.04.2015
Сообщений: 80
14.04.2015, 01:08 #6
Да, в данном случае пробелы являются разделителями. Внутри чисел они не встречаются, поэтому все что между пробелами и есть необходимое число. Единственная загвоздка только в первым и последним числом - первое ищем от начала строки до первого пробела, последнее - от пробела до конца строки или файла. Это все элементарно решается с использованием библиотек высокого уровня, например Qt, а на чистом c++ нужно чуть-чуть помучаться.
0
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
14.04.2015, 06:30 #7
Цитата Сообщение от np2001 Посмотреть сообщение
Единственная загвоздка только в первым и последним числом
В чём там загвоздка?
1 1.00 -.2699E+02 -178.00 -.4400E-02
2 1.02 -.2799E+02 -179.00 -.4401E-02
3 1.03 -.2899E+02 -180.00 -.4403E-02
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
#include <fstream>
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    ifstream ifs("1.txt");
    if (ifs)
    {
        int n;
        double d;
        while (ifs >> n)
        {
            cout << n << ' ';
            for (int i = 0; i < 4; ++i)
            {
                ifs >> d;
                cout << setw(6) << d << ' ';
            }
            cout << endl;
        }
    }
    else
        cout << "Error!" << endl;
    
    system("pause");
    return 0;
}
Или что-то другое нужно?
0
Миниатюры
Поиск в файле  
Zhenia
0 / 0 / 0
Регистрация: 27.11.2012
Сообщений: 22
14.04.2015, 14:31  [ТС] #8
у меня определенное количество точек, для них идет расчет угла отражения, в цикле мне нужно по найденным углам найти соответствующее значение, потом записать в созданный уже конструктор этого объекта, как отдельную переменную, и в дальнейшем использовать для вычислений. то есть найденное значение я должна присвоить типу double и записать. в файл мне выводить все это не нужно
0
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
15.04.2015, 02:01 #9
Цитата Сообщение от Zhenia Посмотреть сообщение
мне выводить все это не нужно
Нетрудно догадаться, что вывод сделан только для проверки правильности чтения из файла. Это же просто пример, как можно организовать чтение, показанных данных, из файла.
Цитата Сообщение от Zhenia Посмотреть сообщение
в цикле мне нужно по найденным углам найти соответствующее значение, потом записать в созданный уже конструктор этого объекта, как отдельную переменную, и в дальнейшем использовать для вычислений. то есть найденное значение я должна присвоить типу double и записать.
И в чём сложность? Как можно читать данные, и присваивать считанные данные переменным, я показал.

Добавлено через 5 минут
Конкретный пример привидите. Например, в файле вот такие данные (или какие?):
1 1.00 -.2699E+02 -178.00 -.4400E-02
2 1.02 -.2799E+02 -179.00 -.4401E-02
3 1.03 -.2899E+02 -180.00 -.4403E-02
Нужно найти, конкретно, вот такие значения, которые расположены в такой-то строке там-то, и записать их туда-то и т.д. Поконкретнее, чтобы понятно было, что, собственно, нужно сделать.
0
15.04.2015, 02:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2015, 02:01
Привет! Вот еще темы с решениями:

Поиск в файле
В файле содержатся фамилии, инициалы и номера телефонов. Вводится шаблон поиска...

поиск в файле
Нужен совет. задача такая,найти нужный элемент в файле и вывести его на экран...

Поиск в файле
Пользователь записывает данные в файл (номер аккаунта, фамилию владельца,...

Поиск в файле.
Собственно, задача такова: Написать программу, которая считывает текст из...


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

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

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