Программная инженерия 1 курс / 2 семестр / lab1 / report_lab1
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В. И. Ульянова (Ленина)
Кафедра МОЭВМ
отчет
по лабораторной работе №1
по дисциплине «Программирование»
Тема: Обзор стандартной библиотеки
Студент гр.3303 |
|
|
Преподаватель |
|
|
Санкт-Петербург
2018
Цель работы:
Напишите программу, на вход которой подается массив целых чисел длины 1000.
Программа должна совершать следующие действия:
-
отсортировать массив по невозрастанию модулей элементов с помощью алгоритма "быстрая сортировка" (quick sort), используя при этом функцию стандартной библиотеки
-
посчитать время, за которое будет совершена сортировка, используя при этом функцию стандартной библиотеки
-
вывести отсортированный массив (элементы массива должны быть разделены пробелом)
-
вывести время, за которое была совершена быстрая сортировка
Отсортированный массив, время быстрой сортировки должны быть выведены с новой строки, при этом элементы массива должны быть разделены пробелами.
Ход работы:
Для выполнения поставленной задачи было создан файл “main.c”, содержащий функцию сравнения чисел (компаратор), главную функцию, осуществляющую работу с массивом чисел и выводящую результат.
Файл main.c
Так как в данной задаче будет осуществляться
-
Сортировка;
-
Работа с временем;
-
Ввод / вывод информации на экран,
то для корректного вызова необходимых функций были подключены библиотеки <stdio.h>, <time.h>, <stdlib.h>.
Далее, с помощью директивы препроцессора #define была объявлена константа N длины массива.
Затем была описана функция compare – функция, осуществляющей сравнение двух чисел. Данная функция далее была передана в функцию qsort для сортировки массива чисел. Ниже (на следующей странице) приведено описание данной функции.
int compare(const void * x1, const void * x2){
return ( *(int*)x2 - *(int*)x1 );
}
Далее была описана главная функция main. В начале функции были заведены необходимые переменные:
-
Массив чисел длиной N;
-
Два числа типа long int для работы с тактами процессора.
После этого проводиться считывание N чисел с сохранением их в массив и определяется первое число тактов работы процессора с начала программы.
После этого с помощью qsort была произведена сортировка чисел, записанных в массив, и определение второго числа тактов с начала работы программы.
Далее выводится отсортированный массив и время работы qsort, определяемое разностью двух чисел тактов с начала работы программы.
Ниже приведено содержимое файла main.c.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 1000
int compare(const void * x1, const void * x2){
return ( *(int*)x2 - *(int*)x1 );
}
int main() {
int arr[N];
long int time1;
long int time2;
for(int i = 0; i<N; i++){
scanf("%d",&arr[i]);
}
time1 = clock();
qsort (arr, N, sizeof(int), compare);
time2 = clock();
for(int i =0; i<N; i++){
printf("%d ",arr[i]);
}
printf("\n%d",time2-time1);
return 0;
}
Вывод: С помощью функций стандартных библиотек было осуществлено решение поставленной задачи.