Структуры
ВАЖНЫЕ замечания
Решение каждой задачи предполагает написание полной программы на Си. Эта программа должна читать входные данные из стандартного входного файла, а затем выдавать ответ в стандартный выходной файл. При запуске с терминала это будет означать ввод с клавиатуры и вывод на экран.
Для успешного решения задачи пока достаточно, чтобы программа правильно работала на правильных входных данных.
Обязательно сохраняйте файлы под именами, соответствующими задачам, например:
- 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, награды не полагается.
В результате работы программы должен быть напечатан список класса с оценками и средней оценкой по всем предметам каждого ученика, и еще два списка фамилий награжденных учеников.