Программирование на языке высокого уровня
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
1. Задание
Дан файл содержащий информацию о результатах городской олимпиады по математике.
Структура записи файла:
номер участника;
фамилия;
количество баллов по каждой из пяти задач;
Написать программу выдающую:
фамилии победителей, занявших первые три призовых места, с указанием суммарного количества баллов и номеров школ;
сведения о результатах участников заданной школы;
2. Описание применения
2.1 Запуск программы
Запуск программы (файл Olimpiad.c) можно выполнить из среды Turbo C 2.0 (или Borland C++ 3.1), либо из командной строки MS DOS, введя Olimpiad.exe.
2.2 Входные данные
Входные данные программы находятся в файле School.txt. Число строк в файле - 50. Каждая строка содержит номер участника (3 символа), фамилию (25 символов), номер школы (6 символов), баллы за каждую из пяти задач (3 символа - баллы за одну задачу). Пример строки файла:
1 Ivanov 3 4 5 4 5 4
|3 | 25 | 6 | 3 | 3 | 3 | 3 | 3 |
Пример входного файла приведен в приложении 2.
По запросу программы с клавиатуры необходимо ввести номер пункта меню (см. раздел 2.3), номер школы.
2.3 Выходные данные
Программа выводит на экран меню:
При выборе пункта 1 на экран выводиться результат в виде:
Примеры выходных данных для остальных пунктов меню см. в приложении 3.
2.4 Сообщения программы
Ниже приводится перечень возможных сообщений программы:
. Файл School.txt не найден
. Введите номер пункта меню
. Введен неверный номер пункта меню
. Введите номер школы
. Участников из данной школы нет
. №п/п Фамилия 1з 2з 3з 4з 5з Сумма баллов Место
. №п/п Фамилия №школы Сумма баллов Место
3. Описание программы
3.1 Метод решения задачи
Задачу можно разбить на две отдельные подзадачи:
1.Последовательный просмотр таблицы. Если номер школы данного участника совпадает с заданным, то вывод сведений о данном участнике с указанием баллов за каждую из пяти задач, суммы баллов и места.
2.Последовательный просмотр массива, содержащего места всех участников и вывод на экран фамилий победителей, занявших первые три призовых места, с указанием суммарного количества баллов и номеров школ.
Каждая подзадача решается методом линейного поиска (последовательного просмотра элементов таблицы).
Чтобы пользователь мог выбирать, какую из подзадач решать и в каком порядке, программа выводит на экран меню (см. раздел 2.3).
3.2 Структура программы
Рис.1. Функциональная структура программы
Программа состоит из четырех функций: главной функции main и трех подпрограмм.
Form_tab - Чтение файла и формирование таблицы из данных, содержащихся в файле. Используя поля баллов за каждую из пяти задач полученной таблицы создание массива, который будет содержать суммы баллов всех участников. Затем сортировка таблицы и полученного массива по убыванию сумм баллов. Затем на основании массива, в котором содержатся суммы баллов всех участников создание другого массива, в котором будут храниться места всех участников.
Uch_school - вывод сведений об участнике заданной школы, с указанием баллов за каждую из пяти задач, суммы баллов и места.
Pobidit - вывод фамилий победителей, занявших первые три призовых места, с указанием суммарного количества баллов и номеров школ
3.3 Описание функций
3.3.1 main - главная функция
Заголовок функции:
int main ()
Значение функции:
- в случае успешного завершения;
- если входной файл не найден.
Рабочие данные:
f - указатель на структуру с информацией о входном файле;
n - номер пункта меню.
d - количество участников
sum[dl_tab] - массив содержащий суммы баллов всех участников
mesto[dl_tab] - массив содержащий места всех участников
tablica[dl_tab] - таблица из данных, содержащихся в файле
Структура записи файла:
num - номер участника
fam - фамилия участника
school_num - номер участника
_zad - баллы за первую задачу
_zad - баллы за второю задачу
_zad - баллы за третью задачу
_zad - баллы за четвертую задачу
_zad - баллы за пятую задачу
3.3.2 Form_tab - формирование таблицы данных из файла
Заголовок функции:form_tab(FILE *f, struct el_tab tab[], float sum [], int mesto[], int d)
Значения функции:
d - количество участников
Входные данные:
*f - ссылка на входной файл
Выходные данные: [] - таблица данных из файла - количество участников [] - массив содержащий суммы баллов всех участников
mesto[] - массив содержащий места всех участников
Рис. 2. Блок-схема функции формирования таблицы данных из файла
3.3.3 Uch_school - вывод сведений об учащихся заданной школы
Заголовок функции:Uch_school(struct el_tab tab[], float sum[], int d, int mesto[])
Входные данные:[] - таблица данных из файла - количество участников [] - массив содержащий суммы баллов всех участников
mesto[] - массив содержащий места всех участников
Рис. 3. Блок-схема функции вывода сведений об учащихся заданной школы
3.3