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

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

Восстановить пароль Регистрация
 
Kattri
 Аватар для Kattri
0 / 0 / 0
Регистрация: 28.03.2012
Сообщений: 7
28.03.2012, 08:29     Текстовый файл, который содержит номера телефонов сотрудников #1
A. Сформировать текстовый файл, который содержит номера телефонов сотрудников учреждения: указываются фамилия, инициалы и номер телефона.
B. Используя данные из этого файла, напечатать номер телефона сотрудника по его фамилии и инициалам.
2. Заполнить файл последовательного доступа N действительными числами, полученными с помощью датчика случайных чисел. Найти сумму минимального и максимального элементов этого файла.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2012, 08:29     Текстовый файл, который содержит номера телефонов сотрудников
Посмотрите здесь:

C++ номера телефонов,прoблема с while
C++ Файл содержит информацию о фамилиях и номерах телефонов 10 человек
C++ Ввести массив записей, который содержит фамилии сотрудников и адреса. Записи упорядочить по адресам.
C++ Добавить запись в файл, который уже содержит данные
Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки C++
Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки C++
C++ Для 10 сотрудников отдела: выполнить сортировку по убыванию номеров телефонов
Создать типированный файл записей, который содержит данные о квартирах, которые продаются C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
28.03.2012, 11:32     Текстовый файл, который содержит номера телефонов сотрудников #2
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
Код
"johnson" "b.j." "+7 918 123 45 67"
"anderson" "t.n." "555 31 24"
Yandex
Объявления
28.03.2012, 11:32     Текстовый файл, который содержит номера телефонов сотрудников
Ответ Создать тему
Опции темы

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