0 / 0 / 1
Регистрация: 11.10.2021
Сообщений: 62
1

Ввести список, в котором указаны фамилии, инициалы, адрес и номера телефонов абонентов

09.11.2021, 12:49. Показов 1261. Ответов 15
Метки c++ (Все метки)

Author24 — интернет-сервис помощи студентам
Введите список, в котором указаны фамилии, инициалы, адреса и номера телефонов абонентов. Вывести по указанию пользователя или фамилию абонента по заданному адресу и номеру телефона, или сообщение об абонентах, имеющих заданную фамилию и инициалы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2021, 12:49
Ответы с готовыми решениями:

Ввести список, в котором указаны фамилии, инициалы, адрес и номера телефонов абонентов
Никак не могу понять, в чем ошибка. Все работает идеально до функции strcmp() Текст задачи: ...

Ввести список, в котором указаны фамилии, инициалы, адрес и номера телефонов абонентов
Введите список, в котором указаны фамилии, инициалы, адреса и номера телефонов абонентов. Вывести...

Известны фамилии сотрудников, инициалы, номера телефонов. Найти номер телефона по фамилии и инициалам владельца
помогите с Исходником. Известны фамилии сотрудников, инициалы, номера телефонов. Найти номер...

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

Даны фамилии абонентов, номера телефонов, суммы и сроки платежа
.Даны фамилии абонентов, номера телефонов, суммы и сроки платежа. Вывести два списка:1-й -...

15
0 / 0 / 1
Регистрация: 11.10.2021
Сообщений: 62
10.11.2021, 15:28  [ТС] 2
Если есть наброски, буду рад если скинете, поможете
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.11.2021, 15:42 3
Gent1e, объявите структуру Phone, объявите динамический массив, затем организуйте ввод данных и поиск.
пишите и показывайте что получается
1
0 / 0 / 1
Регистрация: 11.10.2021
Сообщений: 62
10.11.2021, 16:13  [ТС] 4
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
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <string.h>
#define ka 1
 
int main()
{
    setlocale(LC_ALL, "rus");
    struct
    {
          char name[255],fam[255],pb[255];
          char city[255],street[255],home[255];
          long phone;
          }p[ka];
    int i,oper,n=0,m=0;
    char town[255],*s1=town,avenue[255],*s2=avenue,build[255],*s3=build;
    long phonenum;
    char priz[255],*f=priz;
    printf("\t\t\tВведите данный про абонента\n\n");
    for (i=0;i<ka;i++)
    {
        printf("%i  Введите прозвище- ",i+1);
        scanf("%s",&p[i].fam);
        printf("\tИмя- ");
        scanf("%s",&p[i].name);
        printf("   За отчеством- ");
        scanf("%s",&p[i].pb);
        printf("\n        Город- ");
        scanf("%s",&p[i].city);
        printf("      Улица- ");
        scanf("%s",&p[i].street);
        printf("      Дом- ");
        scanf("%s",&p[i].home);
        printf("\n      Телефон- ");
        scanf("%li",&p[i].phone);
        }
    onemore:
    printf("\nВыбирете операцию\n1-Найти абонента\n2-Информация про абонента\n\n");
    printf("\nСделайте выбор- ");
    scanf("%i",&oper);
    if(oper==1||oper==2)
    {
         if(oper==1)
         {
                    system("cls");
                    printf("\tПоиск\n\n");
                    printf("Город- ");
                    scanf("%s",&s1);
                    printf("Улица- ");
                    scanf("%s",&s2);
                    printf("Дом- ");
                    scanf("%s",&s3);
                    printf("Телефон- ");
                    scanf("%li",&phonenum);
                    printf("Вы искали:\n");
                    for(i=0;i<ka;i++)
                    {                 
                                     if(strcmp(s1,(p[i].city))==0||strcmp(s2,(p[i].street))==0||strcmp(s3,(p[i].home))==0||phonenum==(p[i].phone))
                                        printf("%s %s \n",p[i].fam,p[i].name);
                                        else n++;
                                     }
                                     if(n!=0)
                                     printf("   ---Никого не нашло---\n");
                                     twomore:
                                     printf("\n\n1-Вернуться'\n2-Выйти\n");
                                     printf("Ваш выбор- ");
                                     scanf("%i",&n);
                                     if(n==1||n==2)
                                     {
                                                   if(n==1){
                                                   system("cls");
                                                   goto onemore;}
                                                   else return 0;
                                                   }
                                                   else 
                                                   {printf("Повторите попытку");
                                                   system("cls");
                                                   goto twomore;}
                    }
                    else 
                    {
                         system("cls");
                         printf("\tПоиск\n\n");
                         printf("Введите прозвище- ");
                         scanf("%s",&f);
                         printf("Вы искали:\n");
                         for(i=0;i<ka;i++)
                         {
                                          if(strcmp(f,p[i].fam)==0)
                                          printf("\n%s %s %s m%s vul%s bud#%s tel%li ",p[i].fam,p[i].name,p[i].pb,p[i].city,p[i].street,p[i].home,p[i].phone);
                                          else m++;
                                          }
                                          if(m!=0)
                                          printf("\n---Никого не найдено---\n");
                                          threetimemore:
                                          printf("\n\n1-Вернуться'\n2-Выйти\n");
                                          printf("Ваш выбор- ");
                                          scanf("%i",&m);
                                          if(n==1||n==2)
                                          {
                                                   if(m==1){
                                                   system("cls");
                                                   goto onemore;}
                                                   else return 0;
                                                   }
                                                   else 
                                                   {printf("Повторите попытку");
                                                   system("cls");
                                                   goto threetimemore;}
                         }               
                        }
    else
    { 
    printf("Повторите попытку");
    system("cls");
    goto onemore;
    }  
    getch();
    }
не работает функция strcmp()
0
Yetty
10.11.2021, 16:27
  #5

Не по теме:

Gent1e, у Вас задание написать код на языке С или языке С++ ?

0
0 / 0 / 1
Регистрация: 11.10.2021
Сообщений: 62
10.11.2021, 16:30  [ТС] 6
Yettyна с++
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.11.2021, 16:43 7
Gent1e, можете за основу взять программу из сообщения#6 темы:
Сортировка строк по алфавиту

Цитата Сообщение от Gent1e Посмотреть сообщение
Вывести по указанию пользователя или фамилию абонента по заданному адресу ИЛИ номеру телефона
0
0 / 0 / 1
Регистрация: 11.10.2021
Сообщений: 62
10.11.2021, 16:45  [ТС] 8
Yetty, В примере не хочет видеть getline
Но спасибо, ближе к истине меня направили
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.11.2021, 16:57 9
Gent1e, добавьте
C++
1
#include <string>
0
0 / 0 / 1
Регистрация: 11.10.2021
Сообщений: 62
10.11.2021, 19:28  [ТС] 10
Yetty, Да, спасибо, разобрался)
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <string>
 
using namespace std;
 
struct Directory
{
    string phone_number;
    string surname;
    string adress;
    string familiua_imua;
};
 
void DataInput(Directory* data, int n)
{
    for (int i = 0; i < n; i++)
    {
        cout << " " << i + 1 << " Абонент:\n";
        cout << "Номер телефону: ";
        getline(cin, data[i].phone_number);
        cout << "Прiзвище: ";
        getline(cin, data[i].surname);
        cout << "И.Ф: ";
        getline(cin, data[i].familiua_imua);
        cout << "Адресса: ";
        getline(cin, data[i].adress);
    }
}
 
void DataPrint(Directory* data, int n)
{
    for (int i = 0; i < n; i++)
        cout << setw(20) << left << data[i].phone_number << setw(12) << left << data[i].surname << setw(20) << left << data[i].familiua_imua << data[i].adress << "\n";
}
 
void Print(Directory* a, int k)
{
    for (int i = 0; i < k; i++)
        cout << setw(10) << left << a[i].surname << setw(20) << left << a[i].familiua_imua << setw(20) << left << a[i].adress << "\n";
}
 
void DataFind(Directory* data, Directory* a, int n, int& k)
 
{
    string find_phone_number;
 
    cout << "Пошук за номером: ";
    getline(cin, find_phone_number);
 
    for (int i = 0; i < n; i++)
        if (data[i].phone_number == find_phone_number) a[k++] = data[i];
}
 
 
void Sort(Directory* a, int k)
{
    for (int i = 0; i < k - 1; i++)
        for (int j = 0; j < k - i - 1; j++)
            if (a[j].adress > a[j + 1].adress)
                swap(a[j], a[j + 1]);
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    int n, k = 0;
    cout << "n="; cin >> n;
    cin.ignore();
 
    Directory* data = new Directory[n];
    Directory* a = new Directory[n];
 
    DataInput(data, n);
    DataPrint(data, n);
    DataFind(data, a, n, k);
    if (k)
    {
        Sort(a, k);
        cout << "Пошук:\n";
        Print(a, k);
    }
    else cout << "Не має\n";
 
    delete[]data;
    delete[]a;
    system("pause");
    return 0;
}
Нормально?
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.11.2021, 19:57 11
Gent1e, я вот ещё раз посмотрел условие, может Вам нужна реализация с помощью list(список) ? структура
необязательна, если данные однотипны

если будете оставлять вариант со структурой:
1) не меняйте порядок данных
Цитата Сообщение от Gent1e Посмотреть сообщение
фамилии, инициалы, адреса и номера телефонов
2) для фамилии и инициалов сделайте одно поле и вводите их тоже вместе
3) уберите функцию Sort - в этой задаче она не нужна
4) введите меню - поиск фамилии по адресу ИЛИ по номеру телефона
5) массив при поиске не нужен - зачем его добавили ?
6) если требуется вывести только фамилию, берите подстроку
7) добавьте отдельную функцию для последней части задачи:
Цитата Сообщение от Gent1e Посмотреть сообщение
сообщение об абонентах, имеющих заданную фамилию и инициалы
0
0 / 0 / 1
Регистрация: 11.10.2021
Сообщений: 62
11.11.2021, 12:53  [ТС] 12
Не знаю и из этого не могу подобраться к этим пунктам:
1)Нужно сделать так, чтобы был выбор между поиском фамилии за номером телефона или адреса.
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
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <string>
#include <stdio.h>
#include <stdlib.h>
 
using namespace std;
 
struct Directory
{
    string phone_number;
    string surname;
    string adress;
};
 
void DataInput(Directory* data, int n)
{
    for (int i = 0; i < n; i++)
    {
        cout << " " << i + 1 << " Абонент:\n";
        cout << "Прiзвище та I.Б: ";
        getline(cin, data[i].surname);
        cout << "Адресса: ";
        getline(cin, data[i].adress);
        cout << "Номер телефону: ";
        getline(cin, data[i].phone_number);
    }
}
 
void DataPrint(Directory* data, int n)
{
    for (int i = 0; i < n; i++)
        cout << setw(20) << left << data[i].phone_number << setw(20) << left << data[i].surname << setw(20) << left  << data[i].adress << "\n";
}
 
void Print(Directory* a, int k)
{
    for (int i = 0; i < k; i++)
        cout << setw(20) << left << a[i].surname << setw(20) << left <<  a[i].adress << "\n";
}
 
void DataFind(Directory* data, Directory* a, int n, int& k)
 
{
    string find_phone_number;
    cout << "Пошук за номером: ";
    getline(cin, find_phone_number);
 
    for (int i = 0; i < n; i++)
        if (data[i].phone_number == find_phone_number) a[k++] = data[i];
}
void DataFind2(Directory* data, Directory* a, int n, int& k)
 
{
    string find_adress;
    cout << "Пошук за адресом: ";
    getline(cin, find_adress);
 
    for (int i = 0; i < n; i++)
        if (data[i].adress == find_adress) a[k++] = data[i];
}
 
int main()
{
 
 
    setlocale(LC_ALL, "rus");
    int n, k = 0;
    cout << "n="; cin >> n;
    cin.ignore();
 
    Directory* data = new Directory[n];
    Directory* a = new Directory[n];
    DataInput(data, n);
    DataPrint(data, n);
    DataFind(data, a, n, k);
    DataFind2(data, a, n, k);
 
            if (k)
            {
                cout << "Пошук:\n";
                Print(a, k);
            }
            else cout << "Не має\n";
 
    delete[]data;
    delete[]a;
    system("pause");
    return 0;
}
0
0 / 0 / 1
Регистрация: 11.10.2021
Сообщений: 62
11.11.2021, 21:49  [ТС] 13
Так и не могу сделать, помогите
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
12.11.2021, 00:47 14
Gent1e, повторяю ещё раз:
Цитата Сообщение от Yetty Посмотреть сообщение
4) введите меню - поиск фамилии по адресу ИЛИ по номеру телефона
5) массив при поиске не нужен - зачем его добавили ?
6) если требуется вывести только фамилию, берите подстроку
7) добавьте отдельную функцию для последней части задачи
уберите массив 'a' - он не нужен. сначала исправьте это и восстановите функцию DataFind которая по ссылке - зачем её испортили ? потом продолжим
0
0 / 0 / 1
Регистрация: 11.10.2021
Сообщений: 62
12.11.2021, 13:05  [ТС] 15
Всё что смог, то и намудрил.
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <string>
#include <stdio.h>
#include <stdlib.h>
 
using namespace std;
 
struct Directory
{
    string phone_number;
    string surname;
    string adress;
};
 
void DataInput(Directory* data, int n)
{
    for (int i = 0; i < n; i++)
    {
        cout << " " << i + 1 << " Абонент:\n";
        cout << "Прiзвище та I.Б: ";
        getline(cin, data[i].surname);
        cout << "Адресса: ";
        getline(cin, data[i].adress);
        cout << "Номер телефону: ";
        getline(cin, data[i].phone_number);
    }
}
 
void DataPrint(Directory* data, int n)
{
    for (int i = 0; i < n; i++)
        cout << setw(20) << left << data[i].phone_number << setw(20) << left << data[i].surname << setw(20) << left << data[i].adress << "\n";
}
 
void Print(Directory* a, int k)
{
    for (int i = 0; i < k; i++)
        cout << setw(20) << left << a[i].surname << setw(20) << left << a[i].adress << "\n";
}
void NamPrint(Directory* a, int k)
{
    for (int i = 0; i < k; i++)
        cout << setw(20) << left << a[i].adress << setw(20) << left << a[i].phone_number << "\n";
}
void AdresPrint(Directory* a, int k)
{
    for (int i = 0; i < k; i++)
        cout << setw(20) << left << a[i].surname << setw(20) << left << a[i].phone_number << "\n";
}
void NamePrint(Directory* a, int k)
{
    for (int i = 0; i < k; i++)
        cout << setw(20) << left << a[i].surname << setw(20) << left << a[i].adress << setw(20) << left << a[i].phone_number << "\n";
}
void AdressPrint(Directory* a, int k)
{
    for (int i = 0; i < k; i++)
        cout << setw(20) << left << a[i].adress << setw(20) << left << a[i].surname << setw(20) << left << a[i].phone_number << "\n";
}
void DataFind(Directory* data, Directory* a, int n, int& k)
 
{
    string find_phone_number;
    cout << "Пошук за номером: ";
    getline(cin, find_phone_number);
 
    for (int i = 0; i < n; i++)
        if (data[i].phone_number == find_phone_number) a[k++] = data[i];
}
void NameFind(Directory* name, Directory* a, int n, int& k)
 
{
    string find_name;
    cout << "Пошук за Прiзвищем: ";
    getline(cin, find_name);
 
    for (int i = 0; i < n; i++)
        if (name[i].surname == find_name) a[k++] = name[i];
}
void AdressFind(Directory* adress, Directory* a, int n, int& k)
 
{
    string find_adress;
    cout << "Пошук за адресою: ";
    getline(cin, find_adress);
 
    for (int i = 0; i < n; i++)
        if (adress[i].adress == find_adress) a[k++] = adress[i];
}
int main()
{
 
 
    setlocale(LC_ALL, "rus");
    int n, k = 0, z;
    cout << "Выберите поиск, (1. номер)(2. имя)(3. адрес): ";
    cin >> z;
    cout << "n="; cin >> n;
    cin.ignore();
 
    if (z == 1)
    {
        Directory* data = new Directory[n];
        Directory* a = new Directory[n];
        DataInput(data, n);
        DataPrint(data, n);
        DataFind(data, a, n, k);
        cout << "Пошук:\n";
        Print(a, k);
    }
    else if (z == 2)
    {
        Directory* name = new Directory[n];
        Directory* a = new Directory[n];
        DataInput(name, n);
        NamePrint(name, n);
        NameFind(name, a, n, k);
        cout << "Пошук:\n";
        NamPrint(a, n);
    }
    else if (z == 3)
    {
        Directory* adress = new Directory[n];
        Directory* a = new Directory[n];
        DataInput(adress, n);
        AdressPrint(adress, n);
        AdressFind(adress, a, n, k);
        cout << "Пошук:\n";
        AdresPrint(a, n);
    }
 
   else cout << "Не має\n";
 
    system("pause");
    return 0;
}
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
12.11.2021, 18:50 16
Gent1e, не так. повторяю третий раз:
уберите массив 'a' возвратитесь к варианту кода из своего сообщения#12 и замените функции поиска по примеру функции поиска из сообщения#6 по ссылке Сортировка строк по алфавиту
0
12.11.2021, 18:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2021, 18:50
Помогаю со студенческими работами здесь

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

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

Имеется список абонентов телефонной станции:Фамилия, адрес, телефон. Вывести на экран список абонентов проживающих на улице Бородина
Имеется список абонентов телефонной станции:Фамилия, адрес, телефон. Вывести на экран список...

Дан двумерный массив, содержащий фамилии учащихся и номера их телефонов. По фамилии учащегося найдите номер его телефона
Дан двумерный массив, содержащий фамилии учащихся и номера их телефонов. По фамилии учащегося...

В текстовом файле хранится список служащих. Для каждого служащего указаны фамилия и инициалы
В текстовом файле хранится список служащих. Для каждого служащего указаны фамилия и инициалы,...

Записи с вариантами. Опишите телефонную книгу, содержащую номера телефонов городских и иногородних абонентов
Опишите, используя записи с вариантами, телефонную книгу, содержащую номера телефонов городских...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru