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

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

Войти
Регистрация
Восстановить пароль
 
Excogit8er
2 / 2 / 0
Регистрация: 23.10.2012
Сообщений: 66
#1

Алгоритм по типу экселевского vlookup. Посоветуйте, как скомпоновать 2 файлика - C++

25.12.2012, 20:28. Просмотров 334. Ответов 2
Метки нет (Все метки)

Hi all.

Думаю, как лучше сделать следующее (понятно, что можно в Excel'е через vlookup, а как программно?)
в общем, есть колонка данных в одном файле:

101 : name1
102 : name2
103 : name3
104 : name4
105 : name5
106 : name6

И есть второй файл, где идентификаторы те же (но, разумеется, не в таком же порядке, как в первом файле),
а вторая колонка текста другая:

106 : street6
102 : street2
104 : street4
101 : street1
105 : street5
103 : street6

Как проще всего совместить информацию из этих 2х файлов?
чтобы получить следующее:

101 name1 street1
102 name2 street2
103 name3 street3
104 name4 street4
105 name5 street5
106 name6 street6

Какой способ самый простой? Создать массив структур? Из серии:
C++
1
2
3
4
5
6
7
struct person {
string num;
string name;
string street;
};
 
person people[100];
И потом туда считывать построчно? Как-то корявенько...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2012, 20:28     Алгоритм по типу экселевского vlookup. Посоветуйте, как скомпоновать 2 файлика
Посмотрите здесь:

Как скомпоновать модуль с кодом C++ с Си? - C++
Такое дело: имеется один модуль на C++, там чисто внутри используется STL, std::string, структуры применяются в стиле C++ и другое....

Как скомпоновать объектные файлы в Code Blocks? - C++
Здравствуйте. Я - новичёк в С++, самообучаюсь по книжке "Как программироватьс на C++", автор Х.М. Дейтел. Поэтому, не пинайте,...

Как определить конверсию к типу? - C++
Заранее извиняюсь за ужасное название темы, но ничего другого придумать не смог. У меня есть свой класс(пусть зовется MY), который...

Как адрес IP перевели к типу int 32 - C++
Добрый день. Прошу помощи во следующему вопросу: Изучаю программу по передачи данных клиент-сервис. Для настройки пересылки в...

Как узнать расширение по типу MIME? - C++
Народ, есть ли стандартная функция или какой способ узнавания расширеня по типу MIME. Например, если в заголовке ответа сервера тип ...

как в c++ проверить пренадлежит ли переменная определенному типу? - C++
Например, что бы если пользователь ввел не число а символ, то в консоль выводилось сообщение об ошибке.

Как привести объект пользовательского типа к заданному встроенному типу? - C++
Добрый вечер, у меня есть класс: ref class MessageClass { public: char *senderName; short sizeMessage; char *message;

Как в условии поставить проверку принадлежности к тому или иному типу? - C++
Как в условии поставить проверку принадлежности к тому или иному типу? Например: if (переменная принадлежит к целочисленном...

Посоветуйте, как лучше сделать - C++
Для шифрования текста выбираем n и перестановку чисел от 1 до n. Текст разбиваем на группы по n и в каждой группе переставляем символы в...

Посоветуйте как написать калькулятор - C++
Как применить знания на практике? Есть ли такие учебники с не сложными задачи? Как написать калькулятор? И Где лучше всего учить С++?


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
Эксперт С++
7115 / 5292 / 273
Регистрация: 10.12.2010
Сообщений: 23,401
Записей в блоге: 17
26.12.2012, 13:04     Алгоритм по типу экселевского vlookup. Посоветуйте, как скомпоновать 2 файлика #2
Можно через map если id уникален

C++
1
std::map<size_t,std::pair<std::string,std::string> >  people;
Excogit8er
2 / 2 / 0
Регистрация: 23.10.2012
Сообщений: 66
26.12.2012, 15:26  [ТС]     Алгоритм по типу экселевского vlookup. Посоветуйте, как скомпоновать 2 файлика #3
Цитата Сообщение от Avazart Посмотреть сообщение
Можно через map если id уникален

C++
1
std::map<size_t,std::pair<std::string,std::string> >  people;
Почитал про std::map, круто, но интересен алгоритм - а как это работает? Предположим, есть несколько текстовых файлов, связанных ключевым полем (ну, тот же айдишник). Создается структура для всех нужных полей с несколькими элементами string, считывается 1й файл, парсится первая строка из первого файла, заполняется, скажем, string1, string2 и string3 (допустим, это айдишник, имя и номер телефона). Далее нужно заполнить поле "адрес" в первой структуре, адрес - уже во втором файле. Для этого парсится 1 строка 2го файла, извлекается айдишник (он во всех файлах один и тот же), сравнивается, считывается следующая строка, извлекается айдишник, опять сравнивается и когда ID совпадет - из этой же строки извлекается адрес. Затем из 3го файла из каждой строки извлекается айдишник, сравнивается с тем, который в структуре, и если совпадает - считываем следующее искомое поле (ну, не знаю, любимый сорт сыра). В итоге получается что методом перебора заполнили 1 структуру, вывели полученную строку из всех строк в консоль (ну допустим). Затем эту же структуру заполняем следующими значениями и так далее?

Интересно, насколько долгими будут такие вычисления, если размер каждого файла, скажем, 10 000 строк...
Ответ Создать тему
Опции темы

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