Структуры

ВАЖНЫЕ замечания

Решение каждой задачи предполагает написание полной программы на Си. Эта программа должна читать входные данные из стандартного входного файла, а затем выдавать ответ в стандартный выходной файл. При запуске с терминала это будет означать ввод с клавиатуры и вывод на экран.

Для успешного решения задачи пока достаточно, чтобы программа правильно работала на правильных входных данных.

Обязательно сохраняйте файлы под именами, соответствующими задачам, например:

Задачи для разбора с демонстрацией

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. Разработать структуру данных, подготовить входной файл и написать программу награждения учеников класса по результатам учебного года, используя следующие правила:

  1. если все оценки 5, ученик награждается почетной грамотой с тиснением и купоном на upgrade домашнего компьютера;
  2. если все оценки 4 и 5, ученик награждается похвальным листом и ударопрочной флешкой на 4Gb;
  3. если есть хотя бы одна оценка 3, награды не полагается.

В результате работы программы должен быть напечатан список класса с оценками и средней оценкой по всем предметам каждого ученика, и еще два списка фамилий награжденных учеников.

LecturesVMSH/C/2010-12-14 (последним исправлял пользователь PavelSutyrin 2011-05-18 15:35:43)