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

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

06.06.2016, 15:58. Просмотров 3262. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2016, 15:58
Ответы с готовыми решениями:

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

Поиск по структуре
создать ведомость группы детского сада, в которой указано ФИО полностью, рост, вес, родители....

Поиск в структуре
Есть программа с информацией о работниках. Как реализовать возможность поиска по фамилии, имени,...

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

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
1
Mental handicap
1243 / 621 / 171
Регистрация: 24.11.2015
Сообщений: 2,426
06.06.2016, 16:29 2
Очень много кода, так и не нашел где у тебя проверка, в терии так: создай ещё одну переменную напрмиер poisk для проверки в которую ты будешь вводить нужную тебе фамилию, затем через if делай проверку по твоей базе имен
C++
1
if (poisk == film[i].name)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2016, 16:29

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

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

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

Поиск по полю в структуре
Помогите пожалуйста!! Как добавить поиск, что-бы выводило структуры по определённому году?? ...

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


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

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

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