Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите з iterator-ом / 1 сообщений из 1, страница 1 из 1
18.05.2006, 23:56
    #33737159
cruse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите з iterator-ом
У меня есть два файла Reis.txt и Vart.txt.Мне надо считать дание с файла и их асоциировать. Поиск осуществляєтса по имен-ключу. Почему если я считиваю дание в масив то при поиске мне кажет что такой записи нет, а когда записиваю но не с файла а поочередно типа:(m.insert(pair <reis, vart>
(reis("Lv-Kiev"),vart("10$")))- то поиск осусчествляєтса.
Как здалать стоб вариант з файлом работал!!
#include <iostream>
#include <map>
#include <cstring>
#include <conio.h>
using namespace std;
const int size=5;
// клас для сохранения имен-ключей
class reis {
char str[20];
public:
reis() {strcpy(str, "");}
reis(char *s) {strcpy(str, s);}
char *get() {return str;}
};
// для объектів класу name треба
// визначити оператор < (менше)
bool operator<(reis a, reis b) {
return strcmp(a.get(), b.get()) < 0;
}
// клас для сохранения номерів-значень
class vart {
char str[20];
public:
vart() {strcmp(str, "");}
vart(char *s) {strcpy(str, s);}
char *get() {return str;}
};
typedef map<reis, vart, less<reis> > psevdo;
// друк одной пари ключ/значення
template <class First, class Second> ostream&
operator<<(ostream& out, const pair<First,Second>
&pp){
cout <<"Reis: "<< pp.first.get() << " Vartist: "
<< pp.second.get();
return out;
}
int main() {
int i=0;
FILE *R,*V;
char rs[size][20],vs[size][20];
R=fopen("Reis.txt","r");
V=fopen("Vart.txt","r");
map<reis, vart, less<reis> > m;
//НЕ РАБОТАЕТ
/*do
{
fgets (rs ,20,R);
fgets (vs,20,V);
if(feof(R)) break;
if(feof(V)) break;
rs[strlen(rs)-1]='\0';
vs[strlen(vs)-1]='\0';
m.insert(pair <reis, vart>
(reis(rs),vart(vs)));
i++;
}
while(true);
fclose(R);
fclose(V);*/
// инициализация асоциативного списку
// именами і номерами
//РАБОТАЕТ
m.insert(pair <reis, vart>
(reis("Lv-Kiev"),vart("10$")));
m.insert(pair <reis, vart>
(reis("Lv-London"), vart("100$")));
m.insert(pair <reis, vart>
(reis("Lv-Odessa"), vart("50$")));
m.insert(pair<reis, vart>
(reis("Lv-Greece"), vart("200")));
//ввод имени ключа
char str[20];
cout << "Input name: ";
cin >> str;
map <reis, vart, less<reis> >::iterator p;
// поиск номера за именем-ключем
p = m.find (reis(str));
if (p != m.end())
cout << "Znachennia: " << *p;
else
cout << "Imeni v asociatuvnomy spisky nemae\n";
getch();
return 0;
}
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите з iterator-ом / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]