Структуры
ВАЖНЫЕ замечания
Решение каждой задачи предполагает написание полной программы на Си. Эта программа должна читать входные данные из стандартного входного файла, а затем выдавать ответ в стандартный выходной файл. При запуске с терминала это будет означать ввод с клавиатуры и вывод на экран.
Для успешного решения задачи пока достаточно, чтобы программа правильно работала на правильных входных данных.
Обязательно сохраняйте файлы под именами, соответствующими задачам, например:
- 10.1.c
Задачи для разбора с демонстрацией
10.0.1. Написать структуру для учеников, заполнить ее с клавиатуры, а затем из файла (чтобы не набивать каждый раз заново)
#include <stdio.h>
struct pupil
{
char name[20];
int age; /*years*/
float height; /*meters from floor*/
};
int main ( int argc, char **argv )
{
const int N = 6;
int i;
struct pupil class[N];
printf( "Now please enter data for %d pupils\n", N );
for (i=0; i<N; i++)
{
printf( "Enter %d pupil's name: ", i );
scanf( "%s", class[i].name ); /* до пробела!! */
printf( "Enter %d pupil's age: ", i );
scanf( "%d", &class[i].age );
printf( "Enter %d pupil's height: ", i );
scanf( "%f", &class[i].height );
class[0] = class[i];
}
printf( "\n" );
for( i=0; i<N; i++ )
{
printf( "Pupil %s, age: %d years, height: %1.0f cm\n",
class[i].name, class[i].age, class[i].height*100 );
}
return 0;
}
Задачи для решения в машинном зале
10.1. На основе задачи 10.0.1 написать программу, которая печатает имя самого взрослого ученика. Подготовить собственный файл с данными (5-7 элементов).
10.2. Отсортировать таблицу учеников по убыванию роста, напечатать ее. Примечание: структуры можно присваивать.
Домашнее задание
10.10. Разработать структуру данных, подготовить входной файл и написать программу, которая распечатывает анкетные данные учеников, участвовавших в 2010 году в олимпиаде по информатике и заработавших не менее 30 баллов.
10.10.1. Модифицировать программу, чтобы она спрашивала у пользователя параметры для выборки (год участия в олимпиаде и минимальное число баллов для отбора учеников).
10.11. Разработать структуру данных, подготовить входной файл и написать программу награждения учеников класса по результатам учебного года, используя следующие правила:
- если все оценки 5, ученик награждается почетной грамотой с тиснением и купоном на upgrade домашнего компьютера;
- если все оценки 4 и 5, ученик награждается похвальным листом и ударопрочной флешкой на 4Gb;
- если есть хотя бы одна оценка 3, награды не полагается.
В результате работы программы должен быть напечатан список класса с оценками и средней оценкой по всем предметам каждого ученика, и еще два списка фамилий награжденных учеников.
