Вот текст задачи:
В некотором университете принято, что старшая цифра номера студенческой группы означает номер факультета, средняя - последнюю цифра года поступления, младшая - порядковый номер группы. Продолжительность обучения не более 6 лет. Дан номер группы студента этого универа. Напечатать, в каком году он поступил и на каком факультете учится. Например, группа 432, факультет математ, году поступления 2003!
Справка:
1 - исторический, 2 - экономический, 3 - юридический, 4 - математический, 5 - физический, 6 - химический, 7 - биологический, 8 - филологический, 9 - географический
Пожалуйста, кто может напишите текст программы в этом топике!
Обращаюсь, с просьбой помочь в решении задачи!
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
int group;
int year=2000;
int grid=0;
char *faks[]={"istor","ekonom","yurid","matem","fiz","chim","biolog","filolog","geograf"};
scanf("%d",&group);
year+=(group%100)/10;
grid=group/100;
printf("god postuplenija %d fakultet %s",year,faks[grid-1]);
Все .
только "защиты от дурака" нет.
int year=2000;
int grid=0;
char *faks[]={"istor","ekonom","yurid","matem","fiz","chim","biolog","filolog","geograf"};
scanf("%d",&group);
year+=(group%100)/10;
grid=group/100;
printf("god postuplenija %d fakultet %s",year,faks[grid-1]);
Все .
только "защиты от дурака" нет.
В SAD - все в SAD.
интересно как быть со студентами поступившими до 2000 года?
Точно также
У нас в универе похожая система и все нормально. Фишка в том что цикл обучения составляет 5-6 лет так что все понятно
Но енто уже флейм
У нас в универе похожая система и все нормально. Фишка в том что цикл обучения составляет 5-6 лет так что все понятно

Но енто уже флейм

В SAD - все в SAD.
Splin74,
group.c
group.in
-----------------------------------------------------------------------
versus@dot:~/opt>less group.in
001
112
228
334
446
553
660
772
885
993
group.out
-----------------------------------------------------------------------
[email]versus@dot:~/opt>./a.out[/email] < group.in
001 group is:
Failed to determine faculty!
Entry year: 2000.
112 group is:
Faculty: historical.
Entry year: 2001.
228 group is:
Faculty: economical.
Entry year: 2002.
334 group is:
Faculty: juridical.
Entry year: 2003.
446 group is:
Faculty: mathematical.
Entry year: 2004.
553 group is:
Faculty: physical.
Failed to determine entry year or incorrect group entered!
660 group is:
Faculty: chemical.
Failed to determine entry year or incorrect group entered!
772 group is:
Faculty: biological.
Failed to determine entry year or incorrect group entered!
885 group is:
Faculty: philological.
Entry year: 1998.
993 group is:
Faculty: geographical.
Entry year: 1999.
-----------------------------------------------------------------------
ну да, в общем тривиально.
group.c
Код: Выделить всё
#include <stdio.h>
const int current_year = 2004;
void print_faculty(int index)
{
// напечатать название факультет по его индексу
static const char* faculties[] =
{
"",
"historical",
"economical",
"juridical",
"mathematical",
"physical",
"chemical",
"biological",
"philological",
"geographical"
};
// убедится в корректности индекса
if (index > 0 && index < sizeof(faculties)/sizeof(const char*))
printf("Faculty:\t%s.\n", faculties[index]);
else
printf("Failed to determine faculty!\n");
}
void print_entry_year(int last_digit_of_entry_year)
{
// время обучения
сonst int duration = 6;
// decade хранит значение текущего года, с отброшенными единицами
// так например 2024 превращается в 2020
const int decade = current_year - current_year % 10 ;
// определяем к какому десятилетию относится год постулпения студента
// год поступления в текущем десятилитии?
if (decade + last_digit_of_entry_year <= current_year)
{
printf("Entry year:\t%d.\n", decade + last_digit_of_entry_year);
}
// нет, год поступления больше текущего, значит студент поступил
// в предыдущем десятилетии
else if (decade + last_digit_of_entry_year - 10 + duration >= current_year)
{
printf("Entry year:\t%d.\n", decade + last_digit_of_entry_year - 10);
}
else
{
printf("Failed to determine entry year or incorrect group entered!\n");
}
}
void print_group_details(const char* group)
{
print_faculty(group[0] - '0');
print_entry_year(group[1] - '0');
}
int main()
{
char group[4]; // 3 символа идентификатора + NULL
// получаем следующий идентификатор группы
while(scanf("%s", group) == 1)
{
printf("%s group is:\n", group);
print_group_details(group);
printf("\n");
// eat line
while (getchar() != '\n')
continue;
}
return 0;
}
-----------------------------------------------------------------------
versus@dot:~/opt>less group.in
001
112
228
334
446
553
660
772
885
993
group.out
-----------------------------------------------------------------------
[email]versus@dot:~/opt>./a.out[/email] < group.in
001 group is:
Failed to determine faculty!
Entry year: 2000.
112 group is:
Faculty: historical.
Entry year: 2001.
228 group is:
Faculty: economical.
Entry year: 2002.
334 group is:
Faculty: juridical.
Entry year: 2003.
446 group is:
Faculty: mathematical.
Entry year: 2004.
553 group is:
Faculty: physical.
Failed to determine entry year or incorrect group entered!
660 group is:
Faculty: chemical.
Failed to determine entry year or incorrect group entered!
772 group is:
Faculty: biological.
Failed to determine entry year or incorrect group entered!
885 group is:
Faculty: philological.
Entry year: 1998.
993 group is:
Faculty: geographical.
Entry year: 1999.
-----------------------------------------------------------------------
ну да, в общем тривиально.