Подсчет дней в структуре - C (СИ)
Формулировка задачи:
Объявление структуры и функции подсчета дней:
Функция:
Ошибки, на которые указывает компилятор:
^
int days_sum(const struct month months[], int number);
struct month
{
char months[NAME] ;
char short_months[3] ;
int days;
short mon_number;
};
struct month months[NUMBER_OF_MONTHS] =
{
{"January", "jan", 31, 1},
{"February", "feb", 28, 2},
{"March", "mar", 31, 3},
{"April", "apr", 30, 4},
{"May", "may", 31, 5},
{"June", "jun", 30, 6},
{"July", "jul", 31, 7},
{"August", "aug", 31, 8},
{"September", "sep", 30, 9},
{"October", "oct", 31, 10},
{"November", "nov", 30, 11},
{"December", "dec", 31, 12},
};int days_sum(const struct month months[], int number)
{
int i, total;
for(i = 0, total = 0; i < number; ++i)
{
total+=months[i].days;
}
return total;
}
firststruct.c:8:27: warning: declaration of 'struct month' will not be visible
outside of this function [-Wvisibility]
int days_sum(const struct month months[], int number);
^
firststruct.c:8:39: error: array has incomplete element type
'const struct month'
int days_sum(const struct month months[], int number);
^
firststruct.c:8:27: note: forward declaration of 'struct month'
int days_sum(const struct month months[], int number);
Решение задачи: «Подсчет дней в структуре»
textual
Листинг программы
struct month months[NUMBER_OF_MONTHS] =
{
{"January", "jan" ( тут ) , 31, 1},
{"February", "feb" ( и тут тоже ) , 28, 2},
{"March", "mar" ( тут и так далее ) , 31, 3},
{"April", "apr", 30, 4},
{"May", "may", 31, 5},
{"June", "jun", 30, 6},
{"July", "jul", 31, 7},
{"August", "aug", 31, 8},
{"September", "sep", 30, 9},
{"October", "oct", 31, 10},
{"November", "nov", 30, 11},
{"December", "dec", 31, 12},
};
Объяснение кода листинга программы
В представленном коде объявлена структура month с полями:
name- строковое представление названия месяца;abbr- сокращение названия месяца;days- количество дней в месяце;id- уникальный идентификатор месяца. Затем объявлен массивmonthsтипаstruct monthс фиксированным размеромNUMBER_OF_MONTHS. В массивеmonthsпроисходит заполнение значений полей структурыmonthдля каждого месяца. Значениями являются:name- название месяца;abbr- сокращение названия месяца;days- количество дней в месяце;id- уникальный идентификатор месяца. Значениями поляdaysявляются числа от 30 до 31, за исключением февраля, в котором количество дней может быть 28 или 29 в високосный год. Значениями поляidявляются числа от 1 до 12, соответствующие номеру месяца в году.