Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 18.01.2010
Сообщений: 7

Поиск в массиве структур.

18.01.2010, 14:48. Показов 2541. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
не работает поиск по полю класса ınt, не могу понять в чем ошибка. помогите пожалуйста)
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
#include <iostream.h>
#include <string.h>
struct rab
{
    int nom;
    char dolzhnost[20];
    int stazh;
    int zarplata;
};
void vvod(rab*[],int);
void print(rab*[],int);
void sort(rab*[],int);
void poisk(rab*[],int,int);
void main()
{
int n;
int m;
cout<<"n= ";
cin>>n;
rab**f=new rab*[n];
vvod(f,n);
print(f,n);
sort(f,n);
cout<<"Otsortiravannii massiv"<<endl;
print(f,n);
cout<<"Vvedite nomer dlya poiska: \n";
cin>>m;
poisk(f,m,n);
}
 
void vvod(rab*f[],int n)
{
    for(int i=0;i<n;i++)
    {
        f[i]=new rab;
        cout<<"Vvedite tabelnii nomer "<<i<<"-go rabotnika\n";
        cin>>f[i]->nom;
        cout<<"Vvedite dolzhnost "<<i<<"-go rabotnika\n";
        cin>>f[i]->dolzhnost;
        cout<<"Vvedite stazh "<<i<<"-go rabotnika\n";
        cin>>f[i]->stazh;
        cout<<"Vvedite zarplatu "<<i<<"-go rabotnika\n";
        cin>>f[i]->zarplata;
    }
}
 
void print(rab*f[],int n)
{
    for(int i=0;i<n;i++)
    {
        cout<<f[i]->nom<<" "<<f[i]->dolzhnost<<" "<<f[i]->stazh<<" "<<f[i]->zarplata<<endl;
    }
}
 
void sort(rab*f[],int n)
{
    rab *buf;
    for(int j=1;j<n;j++)
        for(int i=0;i<n-j;i++)
            if(f[i]->nom>f[i+1]->nom)
            {buf=f[i];
            f[i]=f[i+1];
                f[i+1]=buf;
            }
}
 
void poisk(rab*f[],int m, int n)
{
    for(int i=0;i<n;i++)
        if(f[i]->nom=m)
        cout<<f[i]->nom;
        cout<<f[i]->dolzhnost;
        cout<<f[i]->stazh;
        cout<<f[i]->zarplata;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.01.2010, 14:48
Ответы с готовыми решениями:

Поиск в массиве структур
Добрый вечер! у меня есть структура и создан массив из 20 предметов(которые были закуплены в течении определённого времени). они имеют 4...

Поиск в массиве структур.
Кто может,пожалуйста,гляньте. Вот мой массив: #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include...

Поиск в массиве структур
Помогите написать программу на ассемблере! Дана структура Printer с полями: наименование, тип принтера, вид печати (ч/б или цветной),...

14
54 / 50 / 9
Регистрация: 16.05.2008
Сообщений: 162
18.01.2010, 15:24
Цитата Сообщение от Gocher Посмотреть сообщение
void poisk(rab*f[],int m, int n)
{
for(int i=0;i<n;i++)
if(f[i]->nom=m)
.........
должно быть
if(f[i]->nom == m)
1
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
18.01.2010, 15:29
Дам совет:
Не используй больше одного раза, к одному указателю f
вот эту функцию:
void vvod(rab*[],int);
Иначе получишь утечку памяти.

И не забудь сделать в конце
функции main
delete []f;
1
0 / 0 / 0
Регистрация: 18.01.2010
Сообщений: 7
18.01.2010, 15:31  [ТС]
ага, спасибо) но это не главное)) он выдает какуюто ошибку при поиске и врубает дебаг или вааще виндовскую ошибку высвечивает
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
18.01.2010, 15:35
BornLeader:
if(f[i]->nom = m):
Такие моменты мой компилятор сразу обнаруживает,
странно, а что другие компиляторы молчат по этому поводу.

Добавлено через 1 минуту
Ошибка при работе с памятью или какая?

Добавлено через 15 секунд
Ошибка при работе с памятью или какая?
1
0 / 0 / 0
Регистрация: 18.01.2010
Сообщений: 7
18.01.2010, 15:37  [ТС]
высвечивает виндовскую ошибку, типа обнаружена ошибка - приложение будет закрыто
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
18.01.2010, 15:41
А ты что не в курсе что работу с массивом структур можно
провернуть, без указателей, требующих осторожности и внимательности.
0
0 / 0 / 0
Регистрация: 18.01.2010
Сообщений: 7
18.01.2010, 15:42  [ТС]
в курсе, но мне нужно именно с указателями))
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
18.01.2010, 15:47
А что все остальные функции работают.
1
0 / 0 / 0
Регистрация: 18.01.2010
Сообщений: 7
18.01.2010, 15:47  [ТС]
да, не работает только поиск...
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
18.01.2010, 16:04
Методом тыка: попробуй убрать вызов sort(f,n);

Добавлено через 3 минуты
Я подозреваю наверное эту задачу дали, так как сортировка с помощью массива
указателей быстрей, сортировки простого массива

Добавлено через 3 минуты
Сейчас у себя откомпилирую, с отладчиком по коду "пролезу"

Добавлено через 2 минуты
Да действительно ошибка памяти:
1
0 / 0 / 0
Регистрация: 18.01.2010
Сообщений: 7
18.01.2010, 16:08  [ТС]
убрать попрбовал, не помогло... ммм, и как её исправлять?
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
18.01.2010, 16:38
Я тоже убрал однозначно не помогло

Добавлено через 2 минуты
переправь, даже когда найдешь ошибку, нормально не будет работать
C++
1
2
3
4
5
6
7
8
9
  
for(int i=0;i<n;i++)
                if(f[i]->nom==m){
 
                cout<<f[i]->nom;
                cout<<f[i]->dolzhnost;
                cout<<f[i]->stazh;
                cout<<f[i]->zarplata;
}
//Надо использовать блок после условия, если после условия больше 1-го оператора

Добавлено через 1 минуту
А что у тебя примеров, как правильно строить массив указателей на структуры нет?

cout<<f[i]->dolzhnost; //вроде ошибка здесь

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
 for(int i=0;i<n;i++)
 
     if(f[i]->nom==m){
           f[i]->nom;
              
}
//Так запускается?
Добавлено через 1 минуту
А так:

C++
1
2
3
4
5
6
for(int i=0;i<n;i++)
     if(f[i]->nom==m){
         cout<<f[i]->nom;
         cout<<f[i]->stazh;  
         cout<<f[i]->zarplata;
}
Добавлено через 1 минуту
Скорее всего проблема связан с массивом внутри структуры: f[i]->dolzhnost;
Ты попробуй его поэлементно циклом вывести.

Добавлено через 5 минут
//У меня запускается так:
C++
1
2
3
4
5
6
7
for(int i=0;i<n;i++)
     if(f[i]->nom==m){
         cout<<f[i]->nom;
         cout<<f[i]->stazh;  
         cout<<f[i]->zarplata;
         for(int j=0;j<20;j++)cout<<f[i]->dolzhnost[j];
}
1
0 / 0 / 0
Регистрация: 18.01.2010
Сообщений: 7
18.01.2010, 16:38  [ТС]
все, спасибо, заработало) надо было реально просто блоком после условия сделать)
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
18.01.2010, 16:40
И поэлементно вывести массив:
у меня только так запустилась прога.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.01.2010, 16:40
Помогаю со студенческими работами здесь

Поиск данных в массиве структур
Пожалуйста посмотрите код и подскажте в чём ошибка, так как не хочет делать ввод данных в StringGrig2! Очень срочно нужно, помогите! ...

Поиск студента в массиве структур
Объясните пожалуйста где ошибка #define _CRT_SECURE_NO_WARNINGS #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; ...

Поиск в отсортированном массиве структур
Всем привет, пожалуйста помогите с поиском в отсортированном массиве структур. Нужно найти абитуриента со средним баллом 287 ( .ball )....

Поиск и сортировка в массиве структур
Доброго времени суток! Нужна помощь! Уменьшить на 10% стоимость билетов тех рейсов, время в полете которых не превышает 3 часа. Вот...

Реализовать поиск по городам в массиве структур
У меня есть уже готовая структура студента, но возник вопрос: 1)не знаю как реализовать поиск по городам, пытаюсь но никак не выходит четко...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru