Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 14.12.2014
Сообщений: 123

Перечисления enum. Хранение типа телефонного номера

01.02.2015, 19:18. Показов 2412. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ввести в массив структур N записей из телефонной книжки (фамилия, имя, номер телефона, тип номер (домашний, рабочий, мобильный)). Вывести два списка:
- записи с фамилией, начинающейся с заданной буквы,
- записи с определенным типом номера телефона.
Для хранения и выбора типа номера телефона использовать перечислимый тип (каждому типу поставить в соответствие число).

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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    struct phonebook
    {
        string lastname, firstname, type;
        unsigned long long phonenumber;
    };
    phonebook book[100];
    enum perech
    {
        home,
        work,
        mobile
    };
    int i, n, kolvo = 0;
    ifstream f;
    short int temp;
    string tempstr, numtype;
    char letter;
    f.open("phonebook.txt");
    cout << "Введите N: "; cin >> n;
    for (i = 0, i < n; i++;)
    {
        f >> book[i].lastname;
        f >> book[i].firstname;
        f >> book[i].phonenumber;
        f >> temp;
        switch (temp)
        {
        case home: book[i].type = "home"; break;
        case work: book[i].type = "work"; break;
        case mobile: book[i].type = "mobile"; break;
        }
    }
    cout << "Введите букву: "; cin >> letter;
    cout << "Записи с фамилией, начинающейся с буквы " << letter << ":" << endl;
    for (i = 0, i < n; i++;)
    {
        tempstr = book[i].lastname;
        if (tempstr[0] == letter)
        {
            cout << book[i].lastname << " " << book[i].firstname << " " << book[i].phonenumber << " " << book[i].type << endl;
            kolvo++;
        }
    }
    if (kolvo == 0) cout << "Записей, начинающихся с буквы " << letter << " " << "не найдено" << endl;
    cout << "Введите тип номера телефона (home, work или mobile): "; cin >> numtype;
    cout << "Список с типом номера телефона " << numtype << endl;
    for (i = 0, i < n; i++;)
    {
        tempstr = book[i].type;
        if (tempstr == numtype)
            cout << book[i].lastname << " " << book[i].firstname << " " << book[i].phonenumber << " " << book[i].type << endl;
    }
}
не могу разобраться, в чем ошибка
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.02.2015, 19:18
Ответы с готовыми решениями:

Перечисления фиксированного типа ( enum-base ). Ошибка при компиляции
Если я правильно понимаю, следующий enum ( далее — енум ): enum : &lt; type &gt; { &lt; CONST_NAME &gt; }; , где &lt; type &gt; — некий скалярный...

Размер перечисления enum
Добрый день. Где-то я вычитал, что размер перечисления не всегда может быть одинаковый. Из чего вопрос, как зафиксировать размер...

Правильное применение перечисления enum
Дело в том, что не пойму как работать с перечислением. Мне нужно, чтобы программа принимала данные о 3 сотрудниках ( дата найма на работу,...

7
 Аватар для Tordek
58 / 51 / 38
Регистрация: 22.01.2015
Сообщений: 176
02.02.2015, 22:02
Цитата Сообщение от igor_m Посмотреть сообщение
C++
1
short int temp;
Цитата Сообщение от igor_m Посмотреть сообщение
C++
1
switch (temp) { case home: book[i].type = "home"; break; case work: book[i].type = "work"; break; case mobile: book[i].type = "mobile"; break; }
Переменная temp объявлена как short int. Откуда у неё могут взяться значения, объявленные в типе perech ? Объяви её так:
C++
1
perech temp;
0
1 / 1 / 0
Регистрация: 14.12.2014
Сообщений: 123
04.02.2015, 23:55  [ТС]
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    struct phonebook
    {
        string lastname, firstname, type;
        unsigned long long phonenumber;
    };
    phonebook book[100];
    enum perech
    {
        home,
        work,
        mobile
    };
    int i, n, kolvo = 0;
    ifstream f;
    short int temp;
    string tempstr, numtype;
    char letter;
    f.open("phonebook.txt");
    cout << "Введите N: "; cin >> n;
    for (i = 0, i < n; i++;)
    {
        f >> book[i].lastname;
        f >> book[i].firstname;
        f >> book[i].phonenumber;
        f >> temp;
        switch (temp)
        {
        case home: book[i].type = "home"; break;
        case work: book[i].type = "work"; break;
        case mobile: book[i].type = "mobile"; break;
        }
    }
    cout << "Введите букву: "; cin >> letter;
    cout << "Записи с фамилией, начинающейся с буквы " << letter << ":" << endl;
    for (i = 0, i < n; i++;)
    {
        tempstr = book[i].lastname;
        if (tempstr[0] == letter)
        {
            cout << book[i].lastname << " " << book[i].firstname << " " << book[i].phonenumber << " " << book[i].type << endl;
            kolvo++;
        }
    }
    if (kolvo == 0) cout << "Записей, начинающихся с буквы " << letter << " " << "не найдено" << endl;
    cout << "Введите тип номера телефона (home, work или mobile): "; cin >> numtype;
    cout << "Список с типом номера телефона " << numtype << endl;
    for (i = 0, i < n; i++;)
    {
        tempstr = book[i].type;
        if (tempstr == numtype)
            cout << book[i].lastname << " " << book[i].firstname << " " << book[i].phonenumber << " " << book[i].type << endl;
    }
}
Ввести в массив структур N записей из телефонной книжки (фамилия, имя, номер телефона, тип номер (домашний, рабочий, мобильный)). Вывести два списка:
- записи с фамилией, начинающейся с заданной буквы,
- записи с определенным типом номера телефона.
Для хранения и выбора типа номера телефона использовать перечислимый тип (каждому типу поставить в соответствие число).
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
05.02.2015, 00:07
What's the problem?
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
05.02.2015, 00:21
Разбейте код на функции - не возможно читать же ж.

P.S.
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
enum class phoneType
{
NOSET,
MOBILE,
HOME,
WORK
}
...
 
 
struct Foo
{
  int x = 0;
  phoneType type = phoneType::NOSET;
};
 
..
 
int tmp = 0;
cin >> tmp; // choice
 
if( type == static_cast<phoneType>(tmp))
{
...
}
0
1 / 1 / 0
Регистрация: 14.12.2014
Сообщений: 123
05.02.2015, 12:56  [ТС]
в том, что не работает, наверное
0
 Аватар для Tordek
58 / 51 / 38
Регистрация: 22.01.2015
Сообщений: 176
05.02.2015, 19:20
igor_m, я вроде как тебе уже сказал, в чём ошибка, почему-же не переделал код?
0
1 / 1 / 0
Регистрация: 14.12.2014
Сообщений: 123
05.02.2015, 19:22  [ТС]
пробовал, ругается на вывод из файла в temp
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.02.2015, 19:22
Помогаю со студенческими работами здесь

Определение перечисления (enum) в другом файле
Доброго времени суток! :) Вот мой вопрос: в классе A мне необходимо использовать перечисление B, но объявление и определение класса...

Диапазон перечисления enum и его размер.
Объясните,пожалуйста,точный,на Ваш взгляд,смысл диапазона перечисления enum и есть ли связь размера и диапазона? Точнее: Например,есть...

Передача элементов перечисления (enum) в конструктор
Всем добрый день! Заметил некоторые странности при передачи элементов перечисления в конструктор. Вот пример: #include...

Перечисления (enum): для чего они нужны? Как, когда и какими перечислениями уместнее пользоваться?
Предположим есть такой код: #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;Windows.h&gt; enum airplanes {SU6, SU29, SU34}; //...

Генератор слов для телефонного номера
Вот такая вот интересная задачка у Дейтела есть: 17.13. (Генератор слов для телефонного номера) Стандартный набор кнопок телефона ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru