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

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

Войти
Регистрация
Восстановить пароль
 
garkeP91
49 / 49 / 5
Регистрация: 24.10.2010
Сообщений: 131
24.10.2010, 17:46     Поиск в txt файле #1
Есть программа Телефонная книга. Программа со структурой. Информация сохраняется в txt и считавыется оттуда же. Присутствуют функции поиска записи по полям Фамилия, Имя, Телефон.

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
************************В файле описания функций:
//найти по фамилии
int* searchFam(char *fam, PhBook *PhB, int size)
{
    for(int i=0; i<size; i++)
        if (stricmp(PhB[i].fam, fam)==0)
            return i;
    return -1;
}
 
 
//найти по имени
int searchName(char *name, PhBook *PhB, int size)
{
    for(int i=0; i<size; i++)
        if (stricmp(PhB[i].name, name)==0)
            return i;
    return -1;
}
 
 
//найти по номеру
int searchPhone(char *phone, PhBook *PhB, int size)
{
    for(int i=0; i<size; i++)
        if(stricmp(PhB[i].phone, phone) == 0)
            return i;
        return -1;
}
 
************************В файле функции main:
case 3: //Search family
            cout<<"BBEDuTE qoAMuJluIO"<<endl;
            cin>>fam;
            num = searchFam(fam, PhB, size);
            if(num != -1)
            {
                cout<<"uCKOMA9l 3AnuCb: #"<<num+1<<endl;
                print(num+1, PhB, size);
            }
            else
                cout<<"nOuCK HE DAJl PE3yJlbTATOB"<<endl;*/
            break;
 
        case 4: //Search name
            cout<<"BBEDuTE uM9l"<<endl;
            cin>>name;
            num = searchName(name, PhB, size);
            if(num != -1)
            {
                cout<<"uCKOMA9l 3AnuCb: #"<<num+1<<endl;
                print(num+1, PhB, size);
            }
            else
                cout<<"nOuCK HE DAJl PE3yJlbTATOB"<<endl;
            break;
        case 5: //Search phone number
            cout<<"BBEDuTE HOMEP"<<endl;
            cin>>phone;
            num = searchPhone(phone, PhB, size);
            if(num != -1)
            {
                cout<<"uCKOMA9l 3AnuCb: #"<<num+1<<endl;
                print(num+1, PhB, size);
            }
            else
                cout<<"nOuCK HE DAJl PE3yJlbTATOB"<<endl;
            break;
Функции поиска возвращают индекс записи i. При поиске выводится только первая найденная запись. Т.е. если есть несколько записей с одинаковыми значениемя полей (фамилия, имя или телефон), будет выведена только одна запись. Я хочу, чтобы это работало иначе, чтобы выводились все записи, удовлетворяющие условиям поиска. Подскажите, что да как лучше сделать, переделать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2010, 17:46     Поиск в txt файле
Посмотрите здесь:

C++ В файле input.txt содержатся сведения о группе студентов. переписать данные файла в файл output.txt, отсортировав их по возрастанию
C++ Поиск, сортировка и удаление строки в txt файле
Посчитать сколько в файле input.txt символов и записать их количество в output.txt C++
C++ Хранение данных в txt файле
C++ Поиск и замена слов в файле txt
Конец строки в txt файле C++
C++ Написать программу- вводная информация в файле in.txt, выходная информация в out.txt
C++ Поиск в текстовом файле всех слов, заданных в другом текстом файле
C++ Удаление последнего символа в файле txt
Реализовать поиск заданного файла в древе каталогов и поиск указанной информации в этом файле C++
C++ Удалить в текстовом файле 1.txt все строки, которые встречаются в текстовом файле 2.txt
C++ Поиск в .txt файле и вывод на экран

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
24.10.2010, 17:51     Поиск в txt файле #2
garkeP91, Либо пробегать в цикле, либо сами функции сделать без возврата, а чтобы они пробегали в цикле сравнивая и выводили значения.
garkeP91
49 / 49 / 5
Регистрация: 24.10.2010
Сообщений: 131
24.10.2010, 18:52  [ТС]     Поиск в txt файле #3
Как связать одно с другим? То, что нужен цикл, понятно. Я пробовал, чтобы в функциях в цикле было сравнение, заполнение массива и его последующий возврат. Или вы имеете ввиду, что в цикле нужно писать именно return i? Привидете пример хотя бы для одной из функций.. Я пока не совсм понимаю. Спасибо
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
24.10.2010, 18:57     Поиск в txt файле #4
garkeP91, Что-то вроде.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void searchPhone(char *phone, PhBook *PhB, int size)
{
        int cnt=0;
        for(int i=0; i<size; i++)
        {
                if(stricmp(PhB[i].phone, phone) == 0)
                {
                       ++cnt;
                       cout<<"uCKOMA9l 3AnuCb: #"<<num+1<<endl;
                       print(i+1, PhB, size);
                }
        }
        if(cnt==0)
            cout<<"There is no peoples with such tel. number\n";
}
Yandex
Объявления
24.10.2010, 18:57     Поиск в txt файле
Ответ Создать тему
Опции темы

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