Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Ctourist
1 / 1 / 0
Регистрация: 10.03.2017
Сообщений: 10
1

Организовать поиск записей по имени и по номеру телефона

20.04.2017, 14:38. Просмотров 906. Ответов 6
Метки нет (Все метки)

Кто может, помогите пожалуйста! Дана задача: Создать динамический массив, что хранит имя и телефон N студентов.
Организуйте поиск по имени и по номеру телефона и возможность введения и смены данных. Решить нужно без шаблонныч классов. Ничего больше не могу придумать, да и это не работает.
0
Вложения
Тип файла: docx Не решаемая задача..docx (11.0 Кб, 14 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2017, 14:38
Ответы с готовыми решениями:

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

Поиск по имени и номеру телефона
Нужно написать программу, которая будет запоминать имена и номера телефонов, а затем выводить их....

Организовать поиск по номеру телефона
Добрый вечер! по условию задачи я реализовал ввод данных телефонной книги (скрин). они...

Структура: Поиск студента по номеру телефона
Список содержит фамилии студентов и номер телефона в виде0-00-00.предусмотреть правильноть...

Поиск в коллекции по одному из полей (номеру телефона)
C#, WPF. Есть коллекция, которая храниться в датагриде. Есть пукнт коллекции, который в классе...

6
Ctourist
1 / 1 / 0
Регистрация: 10.03.2017
Сообщений: 10
20.04.2017, 14:47  [ТС] 2
Сам код
.
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include<string.h>
 
using namespace std;
 
void found_st(char**,char*,int r);
 
int main()
{
 
char stud[][20]={"336493 Sydorov.T.I","765432 Petrov.M.E","234567 Ivanov.N.A"};
int r=3,len=20;
 
char**bd=new char*[r];
for(int i=0;i<r;i++)
bd[i]=new char[len];
 
strcpy(bd[0],"336493 Sydorov.T.I ");
strcpy(bd[1],"765432 Petrov.M.E");
strcpy(bd[2],"234567 Ivanov.N.A ");
 
char*serth=new char[25];
cout<<"Enter tex to found: ";
gets(serth);
 
found_st(bd,serth,r);
 
delete[]bd;
return 0;
}
void found_st(char**bd,char*s,int r)
{
    int i=0;
    char*p=0;
        
    for( i=0;i<r;i++)
        p=strstr(bd[i],s);
    cout<<p;
    
 
    }
0
MrGluck
Форумчанин
Эксперт CЭксперт С++
8136 / 4987 / 1436
Регистрация: 29.11.2010
Сообщений: 13,460
20.04.2017, 15:07 3
Заготовка:
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
#include <iostream>
#include <string>
 
struct Student
{
    std::string name, telephone;
};
 
class Students
{
public:
    explicit Students(const size_t size) :
        m_data(new Student[size]),
        m_size(size),
        m_curRecords(0)
    {}
    Students(const Students &st) :
        Students(st.m_size)
    {
        m_curRecords = st.m_curRecords;
        for (size_t i = 0; i < m_curRecords; i++)
            m_data[i] = st.m_data[i];
    }
    Students& operator= (const Students &st)
    {
        if (this != &st)
        {
            m_size = st.m_size;
            m_curRecords = st.m_curRecords;
            delete[] m_data;
            m_data = new Student[m_size];
            for (size_t i = 0; i < m_curRecords; i++)
                m_data[i] = st.m_data[i];
        }
        return *this;
    }
    ~Students()
    {
        delete[] m_data;
    }
    bool AddStudent(const Student &st)
    {
        if (m_curRecords == m_size)
            return false;
        m_data[m_curRecords++] = st;
        return true;
    }
    void PrintAll() const
    {
        for (size_t i = 0; i < m_curRecords; i++)
            std::cout << m_data[i].name << " " << m_data[i].telephone << std::endl;
    }
 
private:
    Student *m_data;
    size_t m_size;
    size_t m_curRecords;
};
 
int main()
{
    Students st(42);
    st.AddStudent({ "ABCD", "100" });
    Students st2 = st;
    st2.AddStudent({ "IDDQD", "777" });
    Students st3(st2);
    st3.AddStudent({ "Eniki", "123" });
    st3.PrintAll();
}
0
Ctourist
1 / 1 / 0
Регистрация: 10.03.2017
Сообщений: 10
20.04.2017, 15:28  [ТС] 4
Спасибо,конечно огромное! Но, скажите на милость , что мне с этим кодом делать? Ни преподавателю показать, ни самому разобраться. На занятиях, только-только закончили динамические массивы и строки, до такого "шаманства" мне еще топать и топать. Если еще не забыли, то по примитивней, пожалуйста, как для приматов.
0
LightDays
10 / 10 / 8
Регистрация: 19.02.2017
Сообщений: 42
Завершенные тесты: 1
20.04.2017, 15:44 5
Привет.
Написал класс с методами под твою задачу.
Думаю будет удобно пользоваться, и интуитивно всё понятно

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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include <iostream>
using namespace std;
 
class student
{
    int number;
    char *name;
 
public:
 
    // Конструктор по умолчанию (выделяем память для имени)
    student()
    {
        name = new char[100];
    }
 
    // Метод поиска по имени
    bool Search_name(char* s)
    {
        if (name == s)
            return true;
        else false;
    }
 
    // Метод поиска по номеру
    bool Search_number(int n)
    {
        if (number == n)
            return true;
        else false;
    }
 
    // Метод инициализации студента
    void ini()
    {
        cout << "Name: ";
        cin >> name;
        cout << "Number: ";
        cin >> number;
        cout << endl;
    }
 
    // Этот метод показывает на экран информацию о студенте (Имя, номер телефона)
    void Show_info()
    {
        cout << name << ", " << number << endl;
    }
 
    // Деструктор
    ~student()
    {
        delete[] name;
    }
};
 
void menu()
{
    cout << "1. Add student" << endl;
    cout << "2. Change student information" << endl;
    cout << "3. Show all students info" << endl;
    cout << "4. Find a student by phone number" << endl;
    cout << "5. Find a student by name" << endl;
    cout << "6. Clear the screen" << endl;
    cout << "7. Show menu" << endl;
    cout << "8. Exit" << endl;
    cout << endl;
}
 
int main()
{
    student s[50];
    int i = 1, k;
    int number;
    int chose;
    bool check;
    char *name = new char[100];
 
    menu();
    // Цыкл будет крутится вечно, пока пользователь не выберет "Выход"
    while (true)
    {
        cin >> chose;
        check = false;
        switch (chose)
        {
            // Если выбрали первый пункт меню
            case 1:
                s[i].ini();
                i++;
                break;
 
            // Если выбрали второй пункт меню и т.д...
            case 2:
                cout << "Enter the number of student which you want to change: ";
                cin >> k;
                s[k].ini();
                break;
 
            // Show all students info
            case 3:
                for (k = 1; k < i; k++)
                {
                    cout << k << ": ";
                    s[k].Show_info();
                }
                break;
 
            // Find a student by phone number
            case 4:
                cout << "Enter the phone number: ";
                cin >> number;
                for (k = 1; k < i; k++)
                {
                    if (s[k].Search_number(number) == true)
                    {
                        s[k].Show_info();
                        check = true;
                    }
                }
                if (check == false) cout << "Not found" << endl;
                cout << endl;
                break;
 
            // Find a student by name
            case 5:
                cout << "Enter the name: ";\
                cin >> name;
                for (k = 1; k < i; k++)
                {
                    if (s[k].Search_name(name) == true)
                        s[k].Show_info();
                }
                if (check == false) cout << "Not found" << endl;
                cout << endl;
                break;
 
            // Clear the screen
            case 6:
                system("CLS");
                menu();
                break;
 
            // Show menu
            case 7:
                menu();
                break;
 
            // Exit
            case 8:
                return 0;
 
            default:
                cout << "Error: enter a number from 1 to 8";
        }
    }
 
    system("PAUSE");
    return 0;
}
0
Ctourist
1 / 1 / 0
Регистрация: 10.03.2017
Сообщений: 10
20.04.2017, 16:30  [ТС] 6
Спасибо! Попробую разобраться.
0
MrGluck
Форумчанин
Эксперт CЭксперт С++
8136 / 4987 / 1436
Регистрация: 29.11.2010
Сообщений: 13,460
20.04.2017, 16:42 7
Цитата Сообщение от Ctourist Посмотреть сообщение
Если еще не забыли, то по примитивней, пожалуйста, как для приматов.
Здесь итак всё максимально просто. Если нужно работать с динамической памятью, кроме как определяя явно специальные функции члены (по правилу трёх) вы это не сделаете.
Я бы, конечно, использовал std::vector, но у вас по ТЗ это нельзя.
0
20.04.2017, 16:42
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2017, 16:42

Поиск по номеру телефона с выводом информации со всех таблиц
Всем привет! подскажите как сделать поиск: 1. Вводишь номер телефона человека 2. Тебе выводится...

Осуществить поиск по категории, удаление по номеру телефона абонента
Здравствуйте! У меня есть программа, но она работает не так как нужно. Требуется организовать...

Поиск дублей контрагентов по номеру телефона. (УТП для украины)
Доброго времени суток Всем.) Простите за поэму. Но я хотел полностью выложить проблему и ее...


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

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

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