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

Поиск и запись в файл - C++

Восстановить пароль Регистрация
 
bark4ss
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 11
22.04.2012, 13:17     Поиск и запись в файл #1
Подскажите,пожалуйста,в чем ошибка.Неправильно идет поиск.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include <iostream>
#include <conio.h>
#include <locale>
#include <fstream>
using namespace std;
class Hotel
{
    char *country, *name;
    int n_star,n_fplace;
public:
    Hotel(char *country="\0", char *name="\0",int n_star=0, int n_fplace=0);
    Hotel(const Hotel &);
    void set_country (char*);
    void set_name (char*);
    void set_s_fp (int a,int b){n_star=a,n_fplace=b;}
    char* get_country (){return country;}
    char* get_name () {return name;}
    int get_s () {return n_star;}
    int get_fp () {return n_fplace;}
    bool isEqualCountry (char *);
    bool isEqualname (char *);
    void show() {cout<<country<<" , "<<name<<" , "<<n_star<<" звезд"<<"\t"<<n_fplace<<" свободных мест"<<endl;}
    ~Hotel () {delete[]country;delete[]name;}
};
Hotel::Hotel(char *a, char *b, int c, int d)
{
    int n=strlen(a); country=new char[n+1]; if(!country) exit(1);strcpy(country,a);
    int m=strlen(b); name=new char[m+1]; if(!name) exit(1);strcpy(name,b);
    n_star=c;
    n_fplace=d;
}
Hotel::Hotel(const Hotel &ob)
{
    int n=strlen(ob.country); country=new char[n+1]; if(!country) exit(1);strcpy(country,ob.country);
    int m=strlen(ob.name); name=new char[m+1]; if(!name) exit(1);strcpy(name,ob.name);
    n_star=ob.n_star;
    n_fplace=ob.n_fplace;
}
void Hotel::set_country(char *a)
{
    int n=strlen(a); country=new char[n+1]; if(!country) exit(1);strcpy(country,a);
}
void Hotel::set_name(char *b)
{
    int m=strlen(b); name=new char[m+1]; if(!name) exit(1);strcpy(name,b);
}
bool Hotel::isEqualCountry (char *a)
{
    if(strcmp(country,a)==0)
        return true;
            return false;
}
bool Hotel::isEqualname (char *a)
{
    if(strcmp(name,a)==0)
        return true;
            return false;
}
int main()
{
    setlocale(LC_ALL,"Russian");
    const int n=20;
    Hotel ob[n];
    char country[100],name[100],y[100];
    int n_star,n_fplace,s,i=0,f=0,q=0;
    ifstream f1("hotel.txt");
    if(!f1)
    {
        cout<<"Ошибка чтения файла\n";
        return 0;
    }
    while(!f1.eof())
    {
        f1>>country>>name>>n_star>>n_fplace;
        ob[i].set_country(country);ob[i].set_name(name);ob[i].set_s_fp(n_star,n_fplace);
        ob[i].show();
        i++;
    }
    q=i;
    f1.close();
    while( true)
    {
        cout<<"Выберите вариант поиска"<<endl;
        cout<<"Если введете 1:Выбор отелей по стране нахождения"<<endl;
        cout<<"Если введете 2:Выбор отелей по названию"<<endl;
        cout<<"Если введете 0:выход из программы!!!"<<endl;
    cin>>s;
    if(s==0)
    {
    cout<<"Спасибо,что воспользовались нашей программой!"<<endl;
    break;
    }
    switch(s)
    {
case 1:
    {
        cout<<"Введите страну для поиска:"<<endl;
        fflush(stdin);
        gets(y);f=0;
        ofstream f2("country.txt");
    for(int i=0;i<q;i++)
        {
        if(ob[i].isEqualCountry(y))
        {
            f2<<country<<" , "<<name<<" , "<<n_star<<" звезд"<<"\t"<<n_fplace<<" свободных мест"<<endl;f=1;
        }
        }
        if(f==0)
            cout<<"Введенной страны не существует!!!"<<endl;
        f2.close();
        break;
    }
case 2:
    {
        cout<<"Введите название для поиска:"<<endl;
        fflush(stdin);
        gets(y);f=0;
        ofstream f3("name.txt");
    for(int i=0;i<q;i++)
        {
        if(ob[i].isEqualname(y))
        {
            f3<<country<<" , "<<name<<" , "<<n_star<<" звезд"<<"\t"<<n_fplace<<" свободных мест"<<endl;f=1;
        }
        }
        if(f==0)
            cout<<"Введенной страны не существует!!!"<<endl;
        f3.close();
        break;
    }
default:
        cout<<"Неверно ввели вариант сортировки!!!"<<endl;
    }
    }
    return 0;
}
Добавлено через 1 час 0 минут
А вот и содержимое файла hotel.txt
Бразилия Gold_palace 5 23
Англия Crown_palace 4 12
Мексика Cactus_Hotel 2 56
Беларусь Europa 5 22
Россия Moscow_city 5 67
Беларусь Minsk 4 34
Польша Pan_Hotel 3 7
Германия Octoberfest 4 5
ОАЭ Platinum 5 0
Египет Red_sea 4 33
Турция Turkey_plaza 2 1
Мальдивы Bungalow 1 0
Тайланд Phucket_Plaza 5 6
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2012, 13:17     Поиск и запись в файл
Посмотрите здесь:

чтение запись поиск C++
C++ Запись в файл
C++ запись в txt и поиск
C++ Запись в файл
запись в файл. не создается файл C++
Работа со строками, поиск, запись C++
Multimap STL - работает только запись в файл, поиск в файле не работает C++
Поиск уникальных элементов в массиве и запись в другой массив C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 23:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru