Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 06.12.2017
Сообщений: 52

Структура данных. Поиск по заданному значению

16.06.2018, 09:29. Показов 1119. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Неверно работает поиск по заданному интервалу времени. Когда в интервале год один и тот же, то все хорошо. Но когда года разные, неверно выводит.. Что не так

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
 
//Найти начальника отдела, созданного в заданный временной интервал с определенным количеством сотрудников
int main()
{ 
        int m1, y1, m2, y2, w;
        Department a[20];
        int size, i = 0;
        #if DEBUG 
                autoFill(a);
                size = 3;
        #else
                printf("input array size <= 20\n");
                scanf("%d", &size);
                userFill(a, size);
        #endif
        
        printf("interval: year, month, amount of workers\n");
        scanf("%d %d %d %d %d", &y1, &m1, &y2, &m2, &w);
        for(i=0;i<size;i++)
    {
        if(a[i].organise.year==y1 && a[i].organise.year==y2)
 
        {
 
            if(a[i].organise.month>=m1 && a[i].organise.month<=m2)
            {
 
                if(a[i].divisionp.amount==w)
                    printf("%s", a[i].divisionp.surname);
            }
        }
        else if(a[i].organise.year>=y1 && a[i].organise.month>=m1){
            
            if(a[i].organise.year<=y2 && a[i].organise.month<=m2){
    
                                    if(a[i].divisionp.amount==w)
                                       printf("%s\n", a[i].divisionp.surname);
                }
             }
         else if(a[i].organise.year>=y1 && a[i].organise.month>=m1){
            
            if(a[i].organise.year<=y2&&  a[i].organise.month>=m2 ){
                                 if(a[i].divisionp.amount==w)
                                     printf("%s\n", a[i].divisionp.surname);}}
    }
 
 
return 0;
 
}
 
void autoFill(Department * a)
{
        struct name go1 = {"Otdel1"};
        struct division wo1 = {20, "Ivanov"};
        struct date ro1 = {2017,01};
        a[0].fname = go1;
        a[0].divisionp = wo1;
        a[0].organise = ro1;
        
        struct name go = {"Otdel2"};
        struct division wo = {20, "Ivanov1"};
        struct date ro = {2005,05};
        a[1].fname = go;
        a[1].divisionp = wo;
        a[1].organise = ro;
        
        struct name go2 = {"Otdel3"};
        struct division wo2 = {20, "Ivanov2"};
        struct date ro2 = {1999,03};
        a[2].fname = go2;
        a[2].divisionp = wo2;
        a[2].organise = ro2; 
        
        struct name go3 = {"Otdel4"};
        struct division wo3 = {20, "Ivanov3"};
        struct date ro3 = {1999,06};
        a[3].fname = go3;
        a[3].divisionp = wo3;
        a[3].organise = ro3;
        
  }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.06.2018, 09:29
Ответы с готовыми решениями:

Предусмотреть вывод всех данных, поиск элемента двусвязного списка по заданному значению
Help me please!!! В динамической памяти создать двусвязный список из символов латинского алфавита. Предусмотреть вывод всех данных, поиск...

Структура: Разработать программу, которая по заданному значению параметра St находит соответствующий элемент массива
Дан одномерный массив из N элементов, каждый из которых представляет собой запись вида: struct ZAP { unsigned char St ; int Dt; ...

Поиск записей по заданному значению поля
создать файл, содержащий записи данного типа. получить результаты обработки записей файла Запись содержит данные о студенте: фамилию и...

7
Заблокирован
16.06.2018, 10:09
может с помощью mktime получить time_t и пусть комп их сравнивает?
0
1 / 1 / 0
Регистрация: 06.12.2017
Сообщений: 52
16.06.2018, 10:16  [ТС]
Нашла, что не так. Теперь не могу понять, как написать условие, если нет таких людей, удовлетворяющим этим условиям. Если после if написать
C
1
else printf("no such person");
то из за цикла for несколько раз выводит эту фразу. Как организовать, чтоб один раз?
C
1
2
3
4
5
6
7
for(i=0;i<size;i++)
    { 
        
        if(a[i].organise.year>y1||(a[i].organise.year==y1 && a[i].organise.month>=m1)){
        if(a[i].organise.year<y2||(a[i].organise.year==y2 && a[i].organise.month<=m2))
        printf("%s\n", a[i].divisionp.surname);
    }
0
Заблокирован
16.06.2018, 10:26
до цикла флаг допустим find=0;, нашли find=1; после цикла проверяйте
0
1 / 1 / 0
Регистрация: 06.12.2017
Сообщений: 52
16.06.2018, 10:42  [ТС]
Завела такую переменную, но что-то не то
C
1
2
3
4
5
6
7
8
9
10
11
for(i=0;i<size;i++)
    { 
        
        if((a[i].organise.year>y1||(a[i].organise.year==y1 && a[i].organise.month>=m1)) && flag==0){
        if(a[i].organise.year<y2||(a[i].organise.year==y2 && a[i].organise.month<=m2))
        printf("%s\n", a[i].divisionp.surname);
        }
        else flag=1;
     }  
    if(flag==1)
    printf("no such person\n");
0
Заблокирован
16.06.2018, 10:47
C
1
2
3
4
5
6
7
flag=1;
for(i=0;i<size;i++)
    {
       нашли  flag=0;
    }
if(flag)
    printf("no such person\n");
0
1 / 1 / 0
Регистрация: 06.12.2017
Сообщений: 52
16.06.2018, 13:51  [ТС]
Все-таки не понимаю. Вроде сделала все так, но не выводит, если не удовлетворяет условиям if

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
printf("interval: year, month, amount of workers\n");
    scanf("%d %d %d %d %d", &y1, &m1, &y2, &m2, &w);
    for(i=0;i<size;i++)
    { 
        
        if((a[i].organise.year>y1||(a[i].organise.year==y1 && a[i].organise.month>=m1))){
        if(a[i].organise.year<y2||(a[i].organise.year==y2 && a[i].organise.month<=m2)){
        printf("%s\n", a[i].divisionp.surname);
        }
        else flag=0;
        }
    }
        if(flag) 
        printf("no such person\n");
0
Заблокирован
16.06.2018, 13:59
Лучший ответ Сообщение было отмечено krisonly как решение

Решение

почему flag=0; когда не нашли? не должно быть там никакого else
C++
1
2
3
4
5
6
if((a[i].organise.year>y1||(a[i].organise.year==y1 && a[i].organise.month>=m1)))
        if(a[i].organise.year<y2||(a[i].organise.year==y2 && a[i].organise.month<=m2))
       {
        printf("%s\n", a[i].divisionp.surname);
        flag=0;
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.06.2018, 13:59
Помогаю со студенческими работами здесь

Поиск в файле по заданному значению элемента структуры
В консольном приложении мне нужно реализовать поиск по определенному параметру. Допустим есть магазин и по вводу определенной цены...

Реализовать поиск по заданному полю в массиве объектов пользовательского типа (структура Student)
Описать переменную студент, содержащию имя, фамилию, отчество, название учебного заведения и номер группы. Создать список студентов...

Реализовать поиск и сортировку по заданному полю в массиве объектов пользовательского типа (структура Train)
Описать структуру с именем TRAIN, содержащую следующие поля: NAZV - название пункта назначения, NUMR - номер поезда, DATE - дата отправки,...

Реализовать поиск элемента в массиве записей(структур) по заданному значению какого-либо свойства. Значение ввести с кла
Реализовать поиск элемента в массиве записей(структур) по заданному значению какого-либо свойства. Значение ввести с клавиатуры после...

Поиск данных по значению.
Всем привет. У меня есть база созданная Access, подключил вывожу ее в Delphi с помощью ADOConnection, ADOTable, DataSource и DBGrid. ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru