Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Центр помощи > [С++] [Алгоритм] геокодирование |
Автор: NoviceF 16.3.2012, 17:09 |
Собственно задание следующее: "Напишите программу, принимающую на вход любые почтовые адреса, удовлетворяющие грамматике <полный адрес> = <индекс>, <страна>, [<регион>], [<район>], <населенный пункт>, <адрес>; и выдающая для каждого адреса имя улицы, не включая тип улицы. Например, для адреса «347924, Россия, Ростовская область, Таганрог, 17-Й Квартальный проезд, 25, строение 2, корпус 4, квартира 110» программа должна выдать «17-Й Квартальный». Программа может быть реализована на любом языке программирования и должна принимать список адресов в виде текстового файла. Выдача результата – в выходной поток или файл". Решил обратиться к C++, но моих знаний однозначно недостаточно. Со вводом/выводом я бы ещё мог попробовать разобраться, но какой использовать алгоритм для распознания элементов адреса с последующим выводом нужного сегмента, и как его реализовать, понять не могу. И несколько адресов для примера, которые должна мочь обработать программа: 478545, Россия, Красноярский кр., г. Красноярск, пр-кт Молокова, 72г 658745, Россия, Сахалинская область, поселок Сахалинский, Петропавловское шоссе, 23-1, кв. 23 236544, Россия, Еврейская автономная область, Биробиджан, пр-кт им. Жукова, 32/3, кв 1 Спасибо, кто сможет помочь. |
Автор: NoviceF 16.3.2012, 22:46 |
с просьбой удалять тему я поторопился.. ![]() |
Автор: borisbn 17.3.2012, 11:47 | ||||
вывод:
http://liveworkspace.org/code/4ef422a3e83fe9238a8c671c8377c2ef только у тебя в примерах отсутствует район. я вместо него поставил пустое место, но добавил запятую. Если район не нужен, то поменяй street_pos на 4 |
Автор: NoviceF 17.3.2012, 13:46 |
Спасибо, щас попробую разобраться ![]() upd. что-то не компилируется в нэтбинсе, ошибка такая: main.cpp: In function вЂ�std::string get_street(const std::string&)’: main.cpp:45:4: error: in C++98 вЂ�street_defs’ must be initialized by constructor, not by вЂ�{...}’ main.cpp:45:4: error: could not convert вЂ�{"\37777777763\37777777753", "\37777777763\37777777753.", "\37777777763\37777777753\37777777750\37777777766\37777777740", "\37777777757\37777777760", "\37777777757\37777777760.", "\37777777757\37777777760-\37777777752\37777777762", "\37777777757\37777777760\37777777756\37777777761\37777777757\37777777745\37777777752\37777777762", "\37777777770", "\37777777770.", "\37777777770\37777777756\37777777761\37777777761\37777777745", "\37777777757", "\37777777757.", "\37777777757\37777777745\37777777760", "\37777777757\37777777745\37777777760.", "\37777777757\37777777745\37777777760\37777777745\37777777763\37777777753\37777777756\37777777752", "\37777777757\37777777760\37777777756\37777777745\37777777747\37777777744"}’ to вЂ�string_list’ make[2]: *** [build/Debug/Cygwin_4.x-Windows/main.o] Error 1 make[1]: *** [.build-conf] Error 2 make: *** [.build-impl] Error 2 http://fastpic.ru/view/29/2012/0317/55b128789d16993f842e0e566345cd5f.jpeg.html Подскажите, пожалуйста, как инициализировать эту функцию в конструкторе (если нужно действительно это). |
Автор: borisbn 18.3.2012, 10:13 | ||
нетбинс - это не компилятор. а компилятор у тебя, судя по всему, стааааааренький. не знает initilize_list.... Переделай так:
|
Автор: NoviceF 19.3.2012, 00:10 |
Да, конечно, компилятор был sygwin gcc-g++ 3.4.4-999. Попробовал с MinGW, не могу найти посмотреть версию, но последний, что я нашёл по ссылкам с http://mingw.org.. В общем MinGW тоже не компилирует 1й вариант, выдаёт ту же ошибку, что и sygwin. Может есть другие толковые компиляторы под netbeans или вообще лучше другую среду использовать? 2й же вариант кода работает с обоими компиляторами, спасибо. |
Автор: borisbn 19.3.2012, 06:22 |
Посмотри в сторону qt.nokia.com/downloads/downloads#qt-creator |