Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
6 / 6 / 1
Регистрация: 22.12.2012
Сообщений: 173
Завершенные тесты: 1
1

Найти телефон сотрудника по фамилии и инициалах (работа с файлами С++)

28.03.2013, 22:04. Просмотров 858. Ответов 5
Метки нет (Все метки)

Задан файл, который содержит номера телефонов сотрудников: указывается фамилия и инициалы, номер телефона. Найти телефон сотрудника по его фамилии и инициалах.
Как это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2013, 22:04
Ответы с готовыми решениями:

Найти телефон сотрудника по фамилии и инициалам
#include "stdafx.h" #include <iostream> #include <fstream> #include <string> #include...

Найти в записной книжке телефон по фамилии
5 В записной книжке указаны фамилии и номера телефонов 30-ти человек. Составить программу которая...

Найти фамилии и адреса людей,чей телефон начинается с цифры 3
Здравствуйте! Подскажите как реализовать эту задачу?! Известны фамилии,адреса и телефоны 25-ти...

Найти телефон сотрудника по его фамилии и инициалам
дан файл f1 fкоторый содержит номера телефонов сотрудников учреждения:указывается фамилия...

5
3167 / 1926 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
28.03.2013, 23:12 2
Я предполагаю, что формат файла: одна строка - одна запись.

Кроме того, фамилия и инициалы не должны содержать цифр, а номер телефона - букв. Считаем однобуквенные и небуквенные фамилии недопустимыми. Вероятно, дополнительно, следует договориться о порядке следования инициалов: первый - имя, второй - отчество, остальное несущественно.

Тогда так: считываете файл построчно, разбираете строку на слова. Если слово содержит только цифры - это номер телефона, если только одну букву - это инициал, если две и больше букв - фамилия.

Заполняете массив структур вида:

C++
1
2
3
4
5
6
7
struct PHONE_BOOK_RECORD
{
   char        pszPhone  [MAX_PHONE_NUM_LEN + 1];
   char        pszSurname[MAX_SURNAME_LEN   + 1];
   char        cName;
   char        cPatronymic;
}
Сортируете массив по фамилии, первому и второму инициалу (Multikey sort). Ищете бинарным поиском. Учтите, возможны полные тезки!
0
5467 / 4862 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2013, 06:35 3
Данные в файле:

Иванов И.В. 1234563
Петров С.Е. 4567890
Сидоров А.А. 2345676
Иванов И.В. 5678954

В строке три слова, разделённых любым количеством пробелов. Вводятся два слова: фамилия и инициалы, разделённые одним пробелом.

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
#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    ifstream fin("file.txt");
    if (fin.is_open()) 
    {
        char ch;
        do
        {
            string name;
            cout << "Enter the name: ";
            getline(cin, name);
 
            string name_f;
            string number;
            int flag = 0;
            
            while (true)
            {
                string temp;
                
                fin >> temp;
                name_f = temp + ' ';
                
                fin >> temp;
                if (fin.eof()) break;
                name_f.append(temp);
                
                fin >> number;
                
                if (name_f == name) 
                {
                    cout << name << ' ' << number << endl;
                    flag = 1;
                }
            }
            if (flag == 0) cout << "Not is found!" << endl;
            
            cout << "Continue? (y/n): ";
            (cin >> ch).get();
            if (ch != 'y') 
            {
                fin.close();
                break;
            }
            
            flag = 0;
            fin.clear();
            fin.seekg(0);
        
        } while (true);
    }
    else cout << "Error!" << endl;
    
    system("pause");
    return 0;
}
2
6 / 6 / 1
Регистрация: 22.12.2012
Сообщений: 173
Завершенные тесты: 1
29.03.2013, 20:25  [ТС] 4
спасибо большое)
вот только еще одна маленькая проблема...
в консоле при вводе и выводе иероглифы
если писать setlocale (LC_ALL, ""); то в консоли с символами все нормально, но тогда оно не хочет сравнивать введенную строку и строку из файла.
0
5467 / 4862 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2013, 20:34 5
Правой кнопкой по окну запущенной консоли, и настроить шрифт консоли, как здесь показано.
Англо русский переводчик

Добавлено через 2 минуты
Цитата Сообщение от gorus95 Посмотреть сообщение
если писать setlocale (LC_ALL, ""); то в консоли с символами все нормально
Нормально только на вывод, а нужно и на ввод, поэтому нужно сделать, как в коде.
0
6 / 6 / 1
Регистрация: 22.12.2012
Сообщений: 173
Завершенные тесты: 1
29.03.2013, 21:24  [ТС] 6
alsav22, теперь все отлично работает. круто, спасибо еще раз)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2013, 21:24

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Найти телефон сотрудника по его фамилии и инициалам
Создать файл , содержащий номера телефонов сотрудников учреждения . Указывается фамилия сотрудника...

Найти телефон сотрудника по его фамилии и инициалам.
Дан файл f, содержащий различные даты. Каждая дата - это число, месяц и год. Найти: а) год...

Найти телефон сотрудника по его фамилии и инициалам
Сижу в кабинете и не могу решить эту задачу так как тему ету почти не знаю (знаю только основное),...

Чтение из файла: Найти телефон сотрудника по его фамилии и инициалам
Помогите пожалуйста решить задачку в Delphi 7. Дан файл F, что содержит номера телефонов...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.