Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для Kattri
0 / 0 / 0
Регистрация: 28.03.2012
Сообщений: 7

Текстовый файл, который содержит номера телефонов сотрудников

28.03.2012, 08:29. Показов 1847. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
A. Сформировать текстовый файл, который содержит номера телефонов сотрудников учреждения: указываются фамилия, инициалы и номер телефона.
B. Используя данные из этого файла, напечатать номер телефона сотрудника по его фамилии и инициалам.
2. Заполнить файл последовательного доступа N действительными числами, полученными с помощью датчика случайных чисел. Найти сумму минимального и максимального элементов этого файла.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.03.2012, 08:29
Ответы с готовыми решениями:

Сформировать текстовый файл, который содержит номера телефонов сотрудников учреждения
Сформировать текстовый файл, который содержит номера телефонов сотрудников учреждения: указываются фамилия, инициалы и номер телефона. ...

Дан файл Т, который содержит номера телефонов сотрудников учреждения
Дан файл Т, который содержит номера телефонов сотрудников учреждения: 1) ФИО сотрудника 2) номер телефона. Найти номер телефона...

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

1
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
28.03.2012, 11:32
Лучший ответ Сообщение было отмечено Kattri как решение

Решение

main.cpp
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
//
//main.cpp
//
 
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>
 
#include "employee.h"
 
typedef std::vector< employee_t > employee_base_t;
typedef std::istream_iterator< employee_t > employee_input_it;
 
int main()
{    
    employee_base_t employees;
    
    std::ifstream ifs( "data.txt" );
    
    if( !ifs.good() )
    {
        std::cout << "Не могу открыть базу\n";
        return 1;
    }
    
    // вводим информацию из файла
    
    try
    {
        std::copy( employee_input_it( ifs ), employee_input_it(), std::back_inserter( employees ) );
    }
    catch( std::istream::failure &e )
    {
        if( !ifs.eof() )
        {
            std::cout << e.what() << '\n';
            return 1;
        }
    }
    catch( employee_t::empty_string_exception &e )
    {
        std::cout << e.what() << " - возможны ошибки ввода. Прерываю.";
        return 1;
    }
    catch( std::exception &e )
    {
        std::cout << e.what();
        return 1;
    }
    
    if( !employees.size() )
    {
        std::cout << "Не было загружено ни одной записи";
        return 1;
    }
    
    // меню
    std::string input;
    
    while( std::cout << ">>> " && std::getline( std::cin, input ) && input != std::string( "quit" ) )
    {
        if( input == std::string( "find by last_name" ) )
        {
            std::cout << " last_name = ";
            std::getline( std::cin, input );
            
            std::cout << '\n';
            
            for( employee_base_t::const_iterator it ( employees.begin() );
                 it != employees.end(); it++ )
            {
                if( it->last_name == input )
                    std::cout << "  " << *it;
            }
            
            std::cout << '\n';
        }
        else if( input == std::string( "find by initials" ) )
        {
            std::cout << " initials = ";
            std::getline( std::cin, input );
            
            std::cout << '\n';
            
            for( employee_base_t::const_iterator it ( employees.begin() );
                 it != employees.end(); it++ )
            {
                if( it->initials == input )
                    std::cout << *it;
            }
            
            std::cout << '\n';
        }
        else if( input == std::string( "find by phone_n" ) )
        {
            std::cout << " phone_n = ";
            std::getline( std::cin, input );
            
            std::cout << '\n';
            
            for( employee_base_t::const_iterator it ( employees.begin() );
                 it != employees.end(); it++ )
            {                
                if( it->phone_n == input )
                    std::cout << *it;
            }
            
            std::cout << '\n';
        }
        else if( input == std::string( "help" ) )
        {
            std::cout << "find by last_name\nfind by initials\nfind by phone_n\n";
        }
        else
            std::cout << "Нераспознанная комманда. Попробуйте help.\n";
    }
    
    return 0;
}

employee.h
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
//
// employee.h
//
 
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
 
#include <iostream>
#include <fstream>
#include <string>
#include <stdexcept>
 
struct employee_t
{
    class empty_string_exception : public std::runtime_error
    {
    public:
        explicit empty_string_exception ( const std::string& );
    };
    
    std::string last_name;
    std::string initials;
    std::string phone_n;
    
    employee_t();
    employee_t( const employee_t & );
};
 
std::ostream & operator<<( std::ostream &out, const employee_t &obj );
std::ofstream & operator<<( std::ofstream &out, const employee_t &obj );
std::istream & operator>>( std::istream &in, employee_t &obj );
 
#endif

employee.cpp
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
//
//employee.cpp
//
 
#include "employee.h"
 
employee_t::employee_t()
: last_name(), initials(), phone_n()
{
}
 
employee_t::employee_t( const employee_t &other )
: last_name( other.last_name ),
  initials( other.initials ),
  phone_n( other.phone_n )
{
}
 
employee_t::empty_string_exception::empty_string_exception( const std::string &what )
: runtime_error( what )
{
}
 
 
std::ostream & operator<<( std::ostream &out, const employee_t &obj )
{
    out << obj.initials << ' ' << obj.last_name << " - " << obj.phone_n
        << '\n';
    
    return out;
}
 
std::ofstream & operator<<( std::ofstream &out, const employee_t &obj )
{
    out << '"' << obj.last_name << "\" \""
        << obj.initials << "\" \""
        << obj.phone_n << "\"\n";
        
    return out;
}
 
std::istream & operator>>( std::istream &in, employee_t &obj )
{
    if( in.eof() )
        throw std::istream::failure( "EOF" );
    
    std::string line;
    size_t last_name_end,
           initials_start,
           initials_end,
           phone_start,
           phone_end;
    
    std::getline( in, line, '\n' );
    
    if( !line.length() )
        throw employee_t::empty_string_exception( "Ошибка ввода: пустая строка" );
    
    if( *(line.begin()) != '"' )
        throw std::runtime_error( "Ошибка ввода: перед фамилией ожидается кавычка\n  " + line );
    
    if( std::string::npos == ( last_name_end = line.find( '\"', 1 ) ) )
        throw std::runtime_error( "Ошибка ввода: после фамилии ожидается кавычка\n  " + line );
    
    if( std::string::npos == ( initials_start = line.find( '\"', last_name_end + 1 ) ) )
        throw std::runtime_error( "Ошибка ввода: перед инициалами ожидается кавычка\n  " + line );
    
    if( std::string::npos == ( initials_end = line.find( '\"', initials_start + 1 ) ) )
        throw std::runtime_error( "Ошибка ввода: после инициалов ожидается кавычка\n  " + line );
    
    if( std::string::npos == ( phone_start = line.find( '\"', initials_end + 1 ) ) )
        throw std::runtime_error( "Ошибка ввода: перед телефоном ожидается кавычка\n  " + line );
    
    if( std::string::npos == ( phone_end = line.find( '\"', phone_start + 1 ) ) )
        throw std::runtime_error( "Ошибка ввода: после телефона ожидается кавычка\n  " + line );
    
    obj.last_name = line.substr( 1, last_name_end - 1 );
    obj.initials = line.substr( initials_start + 1, initials_end - initials_start - 1 );
    obj.phone_n = line.substr( phone_start + 1, phone_end - phone_start - 1 );
 
    return in;
}

data.txt
Code
1
2
"johnson" "b.j." "+7 918 123 45 67"
"anderson" "t.n." "555 31 24"
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2012, 11:32
Помогаю со студенческими работами здесь

Типизированные файлы. Файл содержит номера телефонов сотрудников учреждения
Дан файл t, который содержит номера телефонов сотрудников учреждения: указываются фамилия, инициалы и номер телефона. Найти номер телефона...

Организовать файл, который содержит номера телефонов...
Организовать файл, который содержит номера телефонов сотрудников учреждения: указываются фамилия, инициалы и номер телефона. Организовать...

Текстовый файл содержит список фамилий и должность сотрудников. Сформировать текстовый файл, содержащий фамил
Текстовый файл содержит список фамилий и должность сотрудников. Сформировать текстовый файл, содержащий фамилии сотрудников, работающих ...

ПУСТЬ это текстовый файл, который содержит НЕСКОЛЬКО ЦЕЛЫХ ЧИСЕЛ. ОТКРЫТЬ этот текстовый файл и КАЖДЫЙ С ЧИСЕЛ вознести В КУБ.
ПУСТЬ это текстовый файл, который содержит НЕСКОЛЬКО ЦЕЛЫХ ЧИСЕЛ. ОТКРЫТЬ этот текстовый файл и КАЖДЫЙ С ЧИСЕЛ вознести В КУБ.

Пусть имеется текстовый файл, который содержит несколько целых чисел. Открыть этот текстовый файл и каждое из чисел вознести в квадрат.
Пусть имеется текстовый файл, который содержит несколько целых чисел. Открыть этот текстовый файл и каждое из чисел вознести в квадрат. ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru