2014 dxdy logo

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

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




 
 Поиск по заданному интервалу [C]
Сообщение16.06.2018, 00:16 
Добрый вечер. Почему-то не то имя выдает, в указанном интервале. Например, на интервале 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 
Я не уверен, что правильно разобрался, так как у меня нет заголовочного файла со структурами и ваша программа требует пять параметров, а в примере вы задали только четыре. Но попробую подсказать.
Первый 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 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group