Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы и курсачи 2022-2023 / 2 сем / Baraeva_Elizaveta_lb1

.doc
Скачиваний:
0
Добавлен:
09.09.2026
Размер:
54 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В. И. Ульянова (Ленина)

Кафедра МО ЭВМ

отчет

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

по дисциплине «Программирование»

Тема: Обзор стандартной библиотеки

Студентка гр. 2383

Бараева Е. Н.

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

Азаревич А. Д.

Санкт-Петербург

2023

Цель работы.

Научиться пользоваться функциями из стандартной библиотеки языка Си. Написать программу, используя функции стандартной библиотеки.

Задание.

Вариант 4

Напишите программу, на вход которой подается массив целых чисел длины 1000.

Программа должна совершать следующие действия:

  • отсортировать массив по невозрастанию модулей элементов с помощью алгоритма "быстрая сортировка" (quick sort), используя при этом функцию стандартной библиотеки

  • посчитать время, за которое будет совершена сортировка, используя при этом функцию стандартной библиотеки

  • вывести отсортированный массив (элементы массива должны быть разделены пробелом)

  • вывести время, за которое была совершена быстрая сортировка

Отсортированный массив, время быстрой сортировки должны быть выведены с новой строки, при этом элементы массива должны быть разделены пробелами.

Выполнение работы.

В начале задается макроопределение N = 1000 – размер массива. Далее в функции main был создан массив a, куда, с помощью цикла for и функции scanf, были записаны числа. В переменные begin и end было записано время начала и конца сортировки, с помощью функции clock. В конце вычислялось и выводилось время, затраченное для сортировки массива, выводился массив.

Сортировка выполнялась функцией qsort, в которую передавался массив, его длина, размер одного элемента в байтах, функция comp для сравнения двух чисел.

Разработанный программный код см. в приложении А.

Тестирование.

Результаты тестирования представлены в табл. 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.

ПРИЛОЖЕНИЕ А ИСХОДНЫЙ КОД ПРОГРАММЫ

Название файла: 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;

}

4

Соседние файлы в папке 2 сем