Форум программистов, компьютерный форум CyberForum.ru

Не работает поиск в структуре - C++

Восстановить пароль Регистрация
 
bestpalyer1
-1 / 1 / 0
Регистрация: 20.12.2012
Сообщений: 47
20.12.2012, 22:58     Не работает поиск в структуре #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
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
#include <iostream>
#include <string>
#include <cstring>
#include <windows.h>
#include <limits>
using namespace std;
 
 
 
struct employee
{
char *name;
float salary;
int stage;
};
 
 
employee *form(int n)
{
    employee *matr=new employee[n];
    char s[30];
 
    for(int i=0;i<n;i++)
    {
    cout << "Введите имя:";
    cin >> s;
    matr[i].name=new char [strlen(s)+1];
    strcpy(matr[i].name,s);
    cout << "Введите заработную плату:";
    cin >> matr[i].salary;
    cout << "Введите стаж:";
    cin >> matr[i].stage;
    }
 
    return matr;
}
 
 
void Print(employee *matr,int n)
{
    for(int i=0;i<n;i++)
{
    cout<<matr[i].name<<"\t";
    cout<<matr[i].salary<<"\t";
    cout<<matr[i].stage<<"\n";}
}
 
 
 
employee *poisk(employee*matr,int n,int &l)
{
    
    int i=0;
    for(int i=0;i<n;i++)
 
        if(l==0)
        {
            cout << "Таких сотрудников нет\n";
            return matr;
        }
 
        employee*ger=new employee [l];
 
        
 
        for(i=0;i<n;i++)
 
        if(matr[i].stage>10)
{
    ger[l].name=matr[i].name;
 
    ger[l].salary=matr[i].salary;
 
    ger[l].stage=matr[i].stage;
 
    l++;
            }
 
    char d[4];
    cout << " Если вы хотите выполнить печать списка сотрудников со стажем больше 10 лет, то введите yes, если нет, то no";
    cin>>d;
    if
    (strcmp(d,"yes")==0)
    Print(ger,l);
    return ger;
}
 
 
 
 
void power(int n)
{
    int h=0;
 
    employee*ger;
 
    while(h!=4)
{
    
    cout << "1. Формирование массива структур." << endl;
    cout << "2.Печать общего списка рабочих." << endl;
    cout << "3.Поиск сотрудников со стажем более 10 лет." << endl;
    cout << "4.Выход" << endl;
    cout << "Ваш выбор:";
    cin>>h;
 
    int l=0;
 
    switch (h)
   {
    case 1:
        employee*matr;
        matr=form(n);
        break;
    case 2:
        Print(matr,n);
        break;
    case 3:
        ger=poisk(matr,n,l);
        break;
    }
}
}
 
void main()
{
    setlocale(LC_ALL,"RUS");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int n;
    cout <<"Введите кол-во рабочих:";
    cin>>n;
    power(n);
}


ps. Все работает хорошо,но поиск не производится. Посмотрите,кому не не тяжело.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2012, 22:58     Не работает поиск в структуре
Посмотрите здесь:

Не могу организовать поиск в структуре C++
Структура. Поиск по структуре. C++
Поиск одинаковых значений в структуре C++
C++ Поиск по структуре в бинарном файле
Организовать поиск в структуре C++
Поиск сотрудника по структуре C++
Сортировка и поиск данных в структуре C++
Поиск в структуре C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
20.12.2012, 23:10     Не работает поиск в структуре #2
не ну а что вы хотели , вы в начало поставили условия проверки для выхода поместите эту конструкцию в конец метода
C++
1
2
3
4
5
    if(l==0)
        {
            cout << "Таких сотрудников нет\n";
            return matr;
        }
и будет вам добро), хотя нет ее надо переделать, щас я посижу повнимательнее гляну
C++
1
employee*ger=new employee [n];
размер ger должен быть вначале размером всех сотрудников, и заполнятся с начало теми у кого стаж больше 10 лет, а у вас он должен был быть размером l который изначально 0 и цикл перед этой строкой уберите
Yandex
Объявления
20.12.2012, 23:10     Не работает поиск в структуре
Ответ Создать тему
Опции темы

Текущее время: 14:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru