Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Evhene142
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 3
#1

Поиск по структуре - C++

06.06.2016, 15:58. Просмотров 489. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Поиск по структуре (C++):

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

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

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

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

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

Не работает поиск в структуре - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstring&gt; #include &lt;windows.h&gt; #include &lt;limits&gt; using namespace std; ...

1
Azazel-San
Mental handicap
123 / 123 / 31
Регистрация: 24.11.2015
Сообщений: 815
Завершенные тесты: 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
Привет! Вот еще темы с ответами:

Краш программы. Поиск по структуре - C++
Доброго времени суток, уважаемые форумчане! Я столкнулся с такой проблемой... Условие задачи : В записной книжке указаны фамилии и...

Сортировка и поиск данных в структуре - C++
Имеется структура данных: название института, номер корпуса, название кафедры и телефон кафедры. Требуется реализовать поиск по 3-м...

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

Поиск одинаковых значений в структуре - C++
Для 7 человек, среди которых есть мужчины и женщины, хранятся следующие данные: имя, пол (true - мужской, false - женский), рост....


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

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

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