Добавил:
baraevaliza
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы и курсачи 2022-2023 / 2 сем / Baraeva_Elizaveta_lb1
.pdf
МИНОБРНАУКИ РОССИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В. И. УЛЬЯНОВА (ЛЕНИНА)
Кафедра МО ЭВМ
ОТЧЕТ
по лабораторной работе №1
по дисциплине «Программирование»
Тема: Обзор стандартной библиотеки
Студентка гр. 2383
Бараева Е. Н.
Преподаватель
Азаревич А. Д.
Санкт-Петербург
2023

2
Цель работы.
Научиться пользоваться функциями из стандартной библиотеки языка
Си. Написать программу, используя функции стандартной библиотеки.
Задание.
Вариант 4
Напишите программу, на вход которой подается массив целых чисел
длины 1000.
Программа должна совершать следующие действия:
• отсортировать массив по невозрастанию модулей элементов с помощью
алгоритма "быстрая сортировка" (quick sort), используя при этом
функцию стандартной библиотеки
• посчитать время, за которое будет совершена сортировка, используя при
этом функцию стандартной библиотеки
• вывести отсортированный массив (элементы массива должны быть
разделены пробелом)
• вывести время, за которое была совершена быстрая сортировка
Отсортированный массив, время быстрой сортировки должны быть
выведены с новой строки, при этом элементы массива должны быть
разделены пробелами.
Выполнение работы.
В начале задается макроопределение N = 1000 – размер массива. Далее в
функции main был создан массив a, куда, с помощью цикла for и функции
scanf, были записаны числа. В переменные begin и end было записано время
начала и конца сортировки, с помощью функции clock. В конце вычислялось
и выводилось время, затраченное для сортировки массива, выводился массив.
Сортировка выполнялась функцией qsort, в которую передавался массив,
его длина, размер одного элемента в байтах, функция comp для сравнения
двух чисел.

3
Разработанный программный код см. в приложении А.
Тестирование.
Результаты тестирования представлены в табл. 1.
Таблица 1 – Результаты тестирования
№ п/п
Входные данные
Выходные данные
Комментарии
1.
739 -676 139 703 -578 768 585 -123 792 -103
450 -979 -998 822 845 891 -631 482 10 512 783 900 283 266 -836 5
587 658 949 -402
949 900 845 822 792 739
703 658 587 585 512 482
450 283 266 139 10 5 -103
-123 -402 -578 -631 -676 768 -783 -836 -891 979 -998
0.000008
Верно
2.
42 -8 14 7 -43 -37 -38 14 -43 -33 -13 36 -3 31 8
16 -24 34 -33 41 29 41 28 32 6 -29 24 37 -28 27
42 41 41 37 36 34 32 31 29
27 24 16 14 8 7 6 -3 -8 -13 14 -24 -28 -28 -29 -33 -33 37 -38 -43 -43
0.000013
Верно
3.
-397 479 194 -335 -144 99 -16 -138 273 -31 -157
39 154 -216 -339 -493 270 -314 293 239 432 27 153 -471 482 386 -62
424 -200 -96
482 479 432 424 386 293
273 239 194 154 153 39 -16
-27 -31 -62 -96 -99 -138 144 -157 -200 -216 -270 314 -335 -339 -397 -471 493
0.000007
Верно
Вывод.
Была изучена работа по использованию функций стандартной
библиотеки языке Си. Была написана программа, сортирующая массив с
помощью функции qsort.

4
ПРИЛОЖЕНИЕ А
ИСХОДНЫЙ КОД ПРОГРАММЫ
Название файла: main_lb1.c
#include <stdio.h>
#include <time.h>
#define N 1000
int comp(const void *i, const void *j) {
return *(int *)j - *(int *)i;
}
int main(){
int a[N];
double time_spent = 0.0;
for(int i = 0; i < N; i++){
scanf("%d", &a[i]);
}
clock_t begin = clock();
qsort(a, N, sizeof (int), comp);
clock_t end = clock();
time_spent += (double)(end - begin);
for(int i = 0; i < N; i++){
printf("%d ", a[i]);
}
printf("\n%f", time_spent);
return 0;
}
Соседние файлы в папке 2 сем
