Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Larkin Лабораторная работа1.docx
Скачиваний:
4
Добавлен:
09.11.2019
Размер:
299.83 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Кафедра ЭАФУ

Отчет по

лабораторной работе №1

Разработка программы сортировки элементов массива.

Вариант №25

Выполнил студент группы 0А14

Ларькин Дмитрий Александрович

Проверил преподаватель

Обходский Артем Викторович

Томск-2012

Цель работы

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

Задание

  1. Ознакомиться с учебно-методическими указаниями к лабораторной работе №1 (электронная копия – в файле Лаб_№1.doс, размещенному по адресу L:\Методички\ Каф24\Информатика_140800\2_семестр\Методические указания).

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

  3. Составить блок-схему алгоритма программы по заданию согласно своему варианту.

  4. Набрать текст программы на языке СИ с помощью текстового редактора.

  5. Провести трансляцию и компоновку программы.

  6. Решить контрольный пример.

  7. Составить отчет по лабораторной работе.

Номер варианта назначается преподавателем.

Вариант 25

Дан действительный массив максимальной размерности 20*20. Упорядочить строки матрицы по неубыванию значений наименьших элементов строк. Ввод исходного массива организовать из файла, при вводе учесть возможность ввода массива меньшей размерности.

Результаты работы программы вывести на экран и в файл.

Теоретическая часть Работа с файлами

Файл для нас – это часть памяти для хранения информации, обычно на диске, со своим именем. Язык Си "рассматривает" файл как структуру данных. Эта структура содержится в системном файле stdio.h. Краткое наименование шаблона файла – FILE, которая и будет использоваться далее.

Описание файла:

FILE *переменная;

при этом слово FILE пишется только заглавными буквами.

Открытие файла: функция

переменная = fopen("имя_файла","par");

}

здесь par - параметр, указывающий на то, как должен использоваться файл. Параметр может быть:

"r" – файл нужно считать;

"w" – файл нужно записать; только маленькими буквами!!!

"a" – файл нужно дополнить.

Закрытие файла: функция

fclose(переменная);

Закрытие всех открытых файлов: функция

fcloseall();

Вывод в файл: функция

Подпрограммы в C

Функция – самостоятельная единица программы, спроектированная для реализации конкретной задачи. Функции в языке Си играют ту же роль, какую играют функции, подпрограммы и процедуры в других языках. Вызов функции приводит к выполнению некоторых действий. Например, при обращении к функции printf() осуществляется вывод данных на экран. Другие же функции позволяют получать некоторую величину, используемую затем в программе. В общем функции могут выполнять действия и получать значения величин, используемых в программе.

Для чего надо пользоваться функциями? Во-первых, они избавляют нас от повторного программирования. Если конкретную задачу необходимо выполнить в программе несколько раз, можно написать соответствующую функцию только один раз, а затем вызывать её всегда, когда это требуется. Во-вторых, можно применять одну функцию в различных программах, просто включая файл с её текстом с помощью команды препроцессора #include (например, #include "my_f.cpp") в создаваемый файл или другим способом (например, используя такое средство, как "проект" Borland C++). Даже в том случае, если некоторая задача выполняется только в одно й программе, лучше оформить её решение в виде функции, поскольку функции повышают модульность программы и, следовательно, облегчают её чтение, внесение изменений и коррекцию ошибок.

На начальной стадии разработки можно считать функцию "чёрным ящиком", которому необходимо задать поступающую информацию (вход) и полученные результаты (выход). Все, что происходит внутри черного ящика, не касается разработчика до тех пор, пока не нужно писать программу, реализующую эту функцию. например, при использовании библиотечных функций необходимо иметь информацию о входных и выходных параметрах, а о конкретной реализации такой функции речь вообще не идёт.

Определение пользовательской функции

Типичное определение функции имеет следующий вид:

тип имя (список аргументов) // – заголовок функции

{

тело функции

}

Наличие списка аргументов не является обязательным, однако при его наличии каждый аргумент должен быть описан соответствующим образом. Тип функции определяется типом возвращаемого ею значения. Не обязательно описывать тип функции, если она возвращает результат целого типа; если функция ничего не возвращает с помощью оператора return, то желательно описать её тип как void; по умолчанию тип функции принимается как int. Переменные, отличные от аргументов, описываются внутри тела функции, которое заключается в фигурные скобки.

При написании своей функции следуйте тем же правилам, что и при написании main(): вначале указывается заголовок функции, затем идёт открывающая фигурная скобка, приводится описание используемых переменных, даются операторы, определяющие работу функции, и, наконец, закрывающая фигурная скобка. Обратите внимание, что за заголовком функции не следует символ "точка с запятой"; его отсутствие служит указанием компилятору, что здесь определяется функция, а не используется.

Пример

void readvektor(double x[], int n, char nam)

{

int i;

printf (”Введите %d элементов массива %c:\n”, n, nam);

for ( i=0; i<n; i++ )

{

scanf (”%lf”,&x[i]);

}

}

/*

сама функция вызывалась в main():

readvektor(a, 10, ’A’);

readvektor(b, 20, ’B’);

readvektor(c, 30, ’C’);

*/

Данная функция предназначена для ввода данных в одномерный массив. Здесь выводится приглашение для ввода некоторого количества элементов массива (это число передается сюда при вызове), имя которого также в виде символа передается из внешней функции. Затем организован собственно ввод с клавиатуры элементов массива. Так как размер массива заранее неизвестен, то конкретная размерность не указывается (для одномерных массивов!). Выходным параметром служит сам массив.

В том случае, когда результатом выполнения функции является одна величина простого типа, для возврата этого результата можно воспользоваться оператором return (см. Пример 2 из п. 9.2.2). В этом случае функция должны иметь тот же тип, что и значение, которое она возвращают в качестве результата. Его структура выглядит следующим образом:

return выражение;

где в качестве выражения может выступать как отдельная переменная, так и выражение (арифметическое или логическое), которое сначала будет вычислено, а затем этот результат будет возвращен в вызывающую функцию.