Программирование на языке высокого уровня

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

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