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

Поиск по структуре

06.06.2016, 15:58. Просмотров 510. Ответов 1

Имеется функция поиска сотрудника по имени:
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
void Searchname(video film[], char *name)
{
    int j=0;
    for (int i = 0; i<col; i++) {
        if (_stricmp(name, film[i].name) == 0) {
            j=1;
            cout << "Имя сотрудника: " << film[i].name << "\n";
            cout << "Отчество сотрудника: " << film[i].regis << "\n";
            cout << "Фамилия сотрудника: " << film[i].genre << "\n";
            cout << "Срок службы: " << film[i].rate << "\n";
            cout << "Прибыль: " << film[i].price << " $\n";
            if (film[i].price < 1000 && film[i].rate >= 10 )
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.06 << " $\n";
            }
            if (film[i].price >= 1000 && film[i].rate < 10 )
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.06 << " $\n";
            }
            if (film[i].price < 1000 && film[i].rate < 10 )
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.05 << " $\n";
            }
            if (film[i].price >= 1000 && film[i].rate >= 10)
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.07 << " $\n";
            }
            cout << "___________________________\n\n";
        }
        if (j==0)
            cout << "Сотрудник не найден\n\n";
        break;
    }
    
}
Функция находит только сотрудника, внесенного в структуру первым. Исправьте пожалуйста.

вся программа выглядит так:
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
#include <stdlib.h>
#include "dob.h"
 
using namespace std;
 
int main()
{
    char name[200], genre[200], regis[200], popgenre[200], choice;
    int sum=0;
    video fil[100];
    setlocale(LC_ALL, "rus");
    SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода 
    SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода
    do {
        cout << "Выберите требуемое действие:\n1-Добавить информацию о сотруднике...\n2-Поиск сотрудника по имени...\n";
        cout << "3-Поиск сотрудника по фамилии...\n4-Поиск сотрудника по отчеству...\n5-Показать всех сотрудников...\n6-Вывод в файл\n7-Выход...\n";
        cin >> choice;
        system("cls");
        switch (choice) {
        case '1':
            AddInfo(fil, sum);
            system("cls");
            break;
        case '2':
            cout << "Введите имя\n";
            cin >> name;
            cout << "\n";
            Searchname(fil, name);
            break;
        case '3':
            cout << "Введите фамилию\n";
            cin >> genre;
            cout << "\n";
            Searchgenre(fil, genre);
            break;
        case '4':
            cout << "Введите отчество\n";
            cin >> regis;
            Searchregis(fil, regis);
            cout << "\n";
            break;
        case '5':
            ShowAll(fil, sum);
            break;
        case '6':
            ShowAllFile(fil, sum);
            cout << "Информация выведена в документ 'file.txt'\n\n";
            break;
        case '7':
            exit(0);
            system("cls");
            break;
        default:
            cout << "Неправильный выбор\n\n";
            break;
        }
    } while (choice != '7');
    system("PAUSE");
    return 0;
}
dob.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
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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
#include "dob.h"
 
 
 
void AddInfo(video film[], int& sum)
{
    int k;
    cout << "Введите кол-во записей:\n";
    cin >> k;
    for (int i = sum; i<k+sum; i++) {
        cout << "Введите имя " << i+1 << " сотруника:\n";
        cin >> film[i].name;
        cout << "Введите отчество " << i + 1 << " сотрудника:\n";
        cin >> film[i].regis;
        cout << "Введите фамилия " << i + 1 << " сотрудника:\n";
        cin >> film[i].genre;
        cout << "Введите срок службы " << i + 1 << " сотрудника(годы):\n";
        cin >> film[i].rate;
        cout << "Введите сумму прибыли " << i + 1 << "-го сотрудника(в доллары):\n";
        cin >> film[i].price;
        cout << "\n\n";
    }
    sum = sum + k;
}
 
void Searchname(video film[], char *name)
{
    int j=0;
    for (int i = 0; i<col; i++) {
        if (_stricmp(name, film[i].name) == 0) {
            j=1;
            cout << "Имя сотрудника: " << film[i].name << "\n";
            cout << "Отчество сотрудника: " << film[i].regis << "\n";
            cout << "Фамилия сотрудника: " << film[i].genre << "\n";
            cout << "Срок службы: " << film[i].rate << "\n";
            cout << "Прибыль: " << film[i].price << " $\n";
            if (film[i].price < 1000 && film[i].rate >= 10 )
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.06 << " $\n";
            }
            if (film[i].price >= 1000 && film[i].rate < 10 )
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.06 << " $\n";
            }
            if (film[i].price < 1000 && film[i].rate < 10 )
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.05 << " $\n";
            }
            if (film[i].price >= 1000 && film[i].rate >= 10)
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.07 << " $\n";
            }
            cout << "___________________________\n\n";
        }
        if (j==0)
            cout << "Сотрудник не найден\n\n";
        break;
    }
    
}
 
void Searchgenre(video film[], char *genre)
{
    int j=0;
    for (int i = 0; i<col; i++) {
        if (_stricmp(genre, film[i].genre) == 0) {
            j=1;
            cout << "Имя сотрудника: " << film[i].name << "\n";
            cout << "Отчество сотрудника: " << film[i].regis << "\n";
            cout << "Фамилия сотрудника: " << film[i].genre << "\n";
            cout << "Срок службы: " << film[i].rate << "\n";
            cout << "Прибыль: " << film[i].price << " $\n";
            if (film[i].price < 1000 && film[i].rate >= 10 )
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.06 << " $\n";
            }
            if (film[i].price >= 1000 && film[i].rate < 10 )
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.06 << " $\n";
            }
            if (film[i].price < 1000 && film[i].rate < 10 )
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.05 << " $\n";
            }
            if (film[i].price >= 1000 && film[i].rate >= 10)
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.07 << " $\n";
            }
            cout << "___________________________\n\n";
        }
        if (j==0)
            cout << "Сотрудник не найден\n\n";
        break;
    }
 
}
 
void Searchregis(video film[], char *regis)
{
    int j=0;
    for (int i = 0; i<col; i++) {
        if (_stricmp(regis, film[i].regis) == 0) {
            j=1;
            cout << "Имя сотрудника: " << film[i].name << "\n";
            cout << "Отчество сотрудника: " << film[i].regis << "\n";
            cout << "Фамилия сотрудника: " << film[i].genre << "\n";
            cout << "Срок службы: " << film[i].rate << "\n";
            cout << "Прибыль: " << film[i].price << " $\n";
            if (film[i].price < 1000 && film[i].rate >= 10 )
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.06 << " $\n";
            }
            if (film[i].price >= 1000 && film[i].rate < 10 )
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.06 << " $\n";
            }
            if (film[i].price < 1000 && film[i].rate < 10 )
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.05 << " $\n";
            }
            if (film[i].price >= 1000 && film[i].rate >= 10)
            {
                cout << "Зарплата сотрудника: " << film[i].price * 0.07 << " $\n";
            }
            cout << "___________________________\n\n";
        }
        if (j==0)
            cout << "Сотрудник не найден\n\n";
        break;
    }
 
}
 
void ShowAll(video film[], int& sum)
{
    for (int i = 0; i<sum; i++) {
        cout << "Имя сотрудника: " << film[i].name << "\n";
        cout << "Отчество сотрудника: " << film[i].regis << "\n";
        cout << "Фамилия сотрудника: " << film[i].genre << "\n";
        cout << "Срок службы: " << film[i].rate << "\n";
        cout << "Прибыль: " << film[i].price << " $\n";
        if (film[i].price < 1000 && film[i].rate >= 10 )
        {
            cout << "Зарплата сотрудника: " << film[i].price * 0.06 << " $\n";
        }
        if (film[i].price >= 1000 && film[i].rate < 10 )
        {
            cout << "Зарплата сотрудника: " << film[i].price * 0.06 << " $\n";
        }
        if (film[i].price < 1000 && film[i].rate < 10 )
        {
            cout << "Зарплата сотрудника: " << film[i].price * 0.05 << " $\n";
        }
        if (film[i].price >= 1000 && film[i].rate >= 10)
        {
            cout << "Зарплата сотрудника: " << film[i].price * 0.07 << " $\n";
        }
        cout << "___________________________\n\n";
    }
}
 
 
void ShowAllFile(video film[], int& sum)
{
    ofstream fout;
 
    fout.open("File.txt");
    for (int i = 0; i<sum; i++) {
 
        fout << "Имя сотрудника: " << film[i].name << "\n";
        fout << "Отчество сотрудника: " << film[i].regis << "\n";
        fout << "Фамилия сотрудника: " << film[i].genre << "\n";
        fout << "Срок службы: " << film[i].rate << "\n";
        fout << "Прибыль: " << film[i].price << " $\n";
        if (film[i].price < 1000 && film[i].rate >= 10 )
        {
            fout << "Зарплата сотрудника: " << film[i].price * 0.06 << " $\n";
        }
        if (film[i].price >= 1000 && film[i].rate < 10 )
        {
            fout << "Зарплата сотрудника: " << film[i].price * 0.06 << " $\n";
        }
        if (film[i].price < 1000 && film[i].rate < 10 )
        {
            fout << "Зарплата сотрудника: " << film[i].price * 0.05 << " $\n";
        }
        if (film[i].price >= 1000 && film[i].rate >= 10)
        {
            fout << "Зарплата сотрудника: " << film[i].price * 0.07 << " $\n";
        }
        fout << "___________________________\n\n";
    }
}
dob.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
#include<fstream>
#include<iostream>
#include<windows.h>
#include<string.h>
#include<stdio.h>
#ifndef DOB_H_
#define DOB_H_
 
using namespace std;
 
int const col = 1000;
 
struct video
{
    char name[400];
    char regis[400];
    char genre[400];
    int rate;
    int price;
};
 
void AddInfo(video film[],int& sum);
void Searchname(video film[], char *name);
void Searchgenre(video film[], char *genre);
void Searchregis(video film[], char *regis);
void ShowAll(video film[], int& sum);
void ShowAllFile(video film[], int& sum);
 
 
#endif DOB_H_
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2016, 15:58
Ответы с готовыми решениями:

Поиск в структуре
Подскажите, пожалуйста, как сделать бинарный поиск в структуре?

Не работает поиск в структуре
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstring&gt; #include...

Структура. Поиск по структуре.
Добрый вечер, ув. форумчане. Я новичек в С/C++, в данный момент сам учусь по...

Сделать поиск по структуре
Создать список, в котором хранится информация о абонентов АТС: ФИО, место...

Поиск сотрудника по структуре
Вот работающая программка, она считает квартальную или годовую з/п выбранного...

1
Azazel-San
Mental handicap
123 / 123 / 65
Регистрация: 24.11.2015
Сообщений: 819
Завершенные тесты: 1
06.06.2016, 16:29 #2
Очень много кода, так и не нашел где у тебя проверка, в терии так: создай ещё одну переменную напрмиер poisk для проверки в которую ты будешь вводить нужную тебе фамилию, затем через if делай проверку по твоей базе имен
C++
1
if (poisk == film[i].name)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2016, 16:29

Организовать поиск в структуре
Задача на тему : Структуры. Список сведений о животных в зоопарке. Каждая...

Не могу организовать поиск в структуре
Люди помогите с програмой. Условие: для заданого варинта структуры написать...

Поиск по структуре в бинарном файле
Всем привет! Хотел бы обратиться к более опытным людям.Есть задача &quot;Запись...


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

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

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