2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Поиск по заданному интервалу [C]
Сообщение16.06.2018, 00:16 


17/12/17
14
Добрый вечер. Почему-то не то имя выдает, в указанном интервале. Например, на интервале 1999 05 2005 04 выводит Иванова 1,2 и 3. Хотя Иванов 2 не должен быть
Что изменить?

Найти начальника, созданного в заданный временной интервал с определенным количеством сотрудников
код: [ скачать ] [ спрятать ]
Используется синтаксис C

#include <stdio.h>
#include "my_struct.h"
#include <locale.h>
#define DEBUG 1
#ifndef MY_STRUCT
#define MY_STRUCT
#endif
void autoFill(Department * a);
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.year<y2){
            if(a[i].divisionp.amount==w)
                printf("%s\n", a[i].divisionp.surname);}
                //else printf("no person");
    }


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;
       
  }

 

 Профиль  
                  
 
 Re: Поиск по заданному интервалу
Сообщение16.06.2018, 21:17 
Заслуженный участник


26/05/14
981
Я не уверен, что правильно разобрался, так как у меня нет заголовочного файла со структурами и ваша программа требует пять параметров, а в примере вы задали только четыре. Но попробую подсказать.
Первый if не работает, так как в вашем примере $y1 \ne y2$.
Используется синтаксис C
if(a[i].organise.year==y1 && a[i].organise.year==y2)


Второй if не работает, так как диапазон годов в вашем примере $y1 = 1999, y2=2005$, а годы в данных 2017, 2005, 1999, 1999.
Используется синтаксис C
else if(a[i].organise.year>y1 && a[i].organise.year<y2)


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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group