PDA

Просмотр полной версии : Обращаюсь, с просьбой помочь в решении задачи!



Splin74
22.10.2004, 13:34
Вот текст задачи:
В некотором университете принято, что старшая цифра номера студенческой группы означает номер факультета, средняя - последнюю цифра года поступления, младшая - порядковый номер группы. Продолжительность обучения не более 6 лет. Дан номер группы студента этого универа. Напечатать, в каком году он поступил и на каком факультете учится. Например, группа 432, факультет математ, году поступления 2003!
Справка:
1 - исторический, 2 - экономический, 3 - юридический, 4 - математический, 5 - физический, 6 - химический, 7 - биологический, 8 - филологический, 9 - географический
Пожалуйста, кто может напишите текст программы в этом топике!

Kolinus
22.10.2004, 16:15
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]);

Все .
только "защиты от дурака" нет.

versus
13.11.2004, 20:24
интересно как быть со студентами поступившими до 2000 года?

Kolinus
15.11.2004, 16:49
Точно также
У нас в универе похожая система и все нормально. Фишка в том что цикл обучения составляет 5-6 лет так что все понятно ;)
Но енто уже флейм :(

versus
16.11.2004, 00:50
Splin74,

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



group.in
-----------------------------------------------------------------------
versus@dot:~/opt>less group.in
001
112
228
334
446
553
660
772
885
993

group.out
-----------------------------------------------------------------------
versus@dot:~/opt>./a.out < 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.
-----------------------------------------------------------------------

ну да, в общем тривиально.