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

Функции поиска - C++

Восстановить пароль Регистрация
 
Труфольдино
0 / 0 / 0
Регистрация: 10.01.2012
Сообщений: 8
10.01.2012, 15:53     Функции поиска #1
Задача:
В записной книжке указаны: Ф.И.О., адрес, телефон. Определить функции:
1) поиска адреса и телефона по Ф.И.О.
2) поиска Ф.И.О. по адресу и/или телефону

Проблемы:
Как грамотно создать записную книжку, что бы в ней адекватно хранились данные? Как работают сами функции я представляю в принципе, достаточно сравнивать вводимые данные с теми, что в записной книжке, но проблема заключается в том, что эту самую записную книжку создать совершенно не удаётся. Объясните пожалуйста как её делать. (на С++)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
10.01.2012, 15:58     Функции поиска #2
Цитата Сообщение от Труфольдино Посмотреть сообщение
самую записную книжку создать совершенно не удаётся
Почему не удается? Про работу с файлами слышали?
Труфольдино
0 / 0 / 0
Регистрация: 10.01.2012
Сообщений: 8
10.01.2012, 16:00  [ТС]     Функции поиска #3
Цитата Сообщение от dimcoder Посмотреть сообщение
Почему не удается? Про работу с файлами слышали?
не слышали.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
10.01.2012, 16:14     Функции поиска #4
Цитата Сообщение от Труфольдино Посмотреть сообщение
не слышали.
Создаете текстовый файл, желательно где нибудь "поближе". И работаете с ним. Как работать лучше почитайте в учебниках.
Труфольдино
0 / 0 / 0
Регистрация: 10.01.2012
Сообщений: 8
10.01.2012, 16:21  [ТС]     Функции поиска #5
мне не требуется огромная записная книжка. Вполне сгодится 3-4 записи. Делать желательно в 1 файле, типа небольшая лабораторная работа.

Никак не могу понять, почему QtCreator постоянно ругается на char, как сравнивать текстовые строки и всё с ними связанное.

Всё упирается в том, что через перечисляемый тип удаётся создать подобие записной книжки, которая выводится на экран (консоль), но как данные из этого подобия записной книжки сравнивать с вводимыми данными - никак не могу понять.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
10.01.2012, 16:25     Функции поиска #6
Труфольдино, есть хорошая книга, там как-раз всю дорогу записную книжку делают. Крайне рекомендую ознакомиться...
Труфольдино
0 / 0 / 0
Регистрация: 10.01.2012
Сообщений: 8
10.01.2012, 16:28  [ТС]     Функции поиска #7
Цитата Сообщение от easybudda Посмотреть сообщение
Труфольдино, есть хорошая книга, там как-раз всю дорогу записную книжку делают. Крайне рекомендую ознакомиться...
с удовольствием ознакомлюсь, но прочитать её всю я не успею, эту лабу нести надо уже в четверг
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
10.01.2012, 16:59     Функции поиска #8
Труфольдино, тогда создайте структуру, назовём ее zapis. Затем создаёте массив zapis'ей. Примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct zapis
{
    char family[80];
    char name[80];
    char otch[80];
    char tel[80];
    void setAll(const char * f, const char * n, const char * o, const char * tel)
{//Здесь описываете ввод
    cin >> family >> name >> otch;
    cin >> tel;
}
};
 
main ()                 //Примеры использования
{
    zapis z[4];
    z[0].setAll("Pupkin", "Vasya", "Yurich", "555-555-555-555");
    cout << z[0].family;
}
Труфольдино
0 / 0 / 0
Регистрация: 10.01.2012
Сообщений: 8
10.01.2012, 18:52  [ТС]     Функции поиска #9
Попробовал ваш пример и стало лучше, но почему-то приходится самому вводить в консоли данные, а то что написано в скобках setAll() не воспринимается.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
10.01.2012, 19:46     Функции поиска #10
Цитата Сообщение от Труфольдино Посмотреть сообщение
не воспринимается
Да уж, немного накосячил я. Так лучше
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void setAll()
{//Здесь описываете ввод "Диалог с юзером"
    cout << "Family = "
    cin >> family;
    cout << "Name = "
    cin >> name;
    cout << "Otchestvo = ";
    cin >> otch;
    cout << "Tel = ";
    cin >> tel;
}
//и вызывать так:
main ()
{
    //blablabla
    z[0].setAll();
}
Добавлено через 9 минут
Цитата Сообщение от Труфольдино Посмотреть сообщение
самому вводить в консоли данные
Да можно перегрузить setAll с параметрами примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 void setAll(const char * f, const char * n, const char * o, const char * t)
{//Здесь описываете ввод
    for (int i = 0; i <= strlen(f); i++)
         family[i] = f[i];
    for (i = 0; i <= strlen(n); i++)
         name[i] = n[i];
    for (i = 0; i <= strlen(0); i++)
         otch[i] = o[i];
    for (i = 0; i <= strlen(t); i++)
         tel[i] = t[i];
}
//вызывать соответственно 
main ()
{
    //blablabla
    z[0].setAll("Pupkin","Vasya","Urich","555-555-555-555")
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2012, 21:12     Функции поиска
Еще ссылки по теме:

Оптимизация функции поиска C++
C++ Найти ошибку в коде функции поиска
C++ Некоректная работа функции поиска

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

Или воспользуйтесь поиском по форуму:
Труфольдино
0 / 0 / 0
Регистрация: 10.01.2012
Сообщений: 8
10.01.2012, 21:12  [ТС]     Функции поиска #11
спасибо
Yandex
Объявления
10.01.2012, 21:12     Функции поиска
Ответ Создать тему
Опции темы

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