Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Звіт.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
436.18 Кб
Скачать

Тема 2. Конструктори. Деструктори.

Мета: Розглянути принцип роботи конструктора (з параметрами за замовчуванням) і деструктора при роботі з об'єктом.

Індивідуальне завдання 1

Розробити програму, що дозволяє виконати сортування набору даних класичним бульбашковим методом і шейк ер-сортування. У програмі виконати порівняння ефективності сортування за часом.

Текст програми

#include <stdio.h>

#include <windows.h>

#include <conio.h>

#include <time.h>

int sheiker (int in[], int n);

int puz(int A[], int n);

void About ();

void main ()

{

//----Ввод масива----

int nn=0;

int trudoemk1, trudoemk2;

int input [100];

int input2 [100];

char bb [80];

CharToOem ("\nВведите число элементов массива: ", bb);

printf("%s", bb);

scanf ("%d", &nn); //Узнаємо розмір масива

CharToOem ("\nВведите через пробел целые числа: ", bb);

printf("%s", bb);

for (int j=0; j<nn; j++) scanf ("%d", &input[j]); //Заповнення масиву

CharToOem ("\nВы ввели следующий массив: ", bb);

printf("%s", bb);

for (int mm=0; mm<nn; mm++)

{printf ("%d ", input[mm]); //Перевірка виводом масива на екран

input2[mm]=input[mm];} //Робить копію масива

printf ("\n");

clock_t before;

double elapsed;

before = clock();

trudoemk1 = sheiker(input, nn); //Сортування методом Шейкер-сортування

CharToOem ("Сравнений: ", bb);

printf("%s", bb);

printf ("%d", trudoemk1);

CharToOem ("\nРеальные затраты времени на выполнении сортировки, в секундах: ", bb);

printf("%s", bb);

printf ("%.3f\n\n", elapsed/CLOCKS_PER_SEC);

before = clock();

trudoemk2 = puz(input2, nn); //Сортування бульбашковим методом

CharToOem ("\nСравнений: ", bb);

printf("%s", bb);

printf ("%d", trudoemk2);

elapsed = clock()-before; //Виводить час витрачений на виконаня функції

CharToOem ("\nРеальные затраты времени на выполнении сортировки, в секундах: ", bb);

printf("%s", bb);

printf ("%.3f\n", elapsed/CLOCKS_PER_SEC);

getch();

}

//функція шейкер-сортування

int sheiker (int in[], int n)

{ int sravnen=0;

char bb [80];

CharToOem ("\n\nШейкер сортировка: ", bb);

printf("%s\n", bb);

int a, b, dd, i, lasta, lastb, swap;

for (a=lasta=0, b=lastb=n, dd=1; a < b; dd = !dd, a=lasta, b=lastb)

{

if (dd)

{

for (i=a,lastb=a; i<b; i++)

if (in[i] > in[i+1])

{

lastb = i;

swap = in[i]; in[i]=in[i+1]; in[i+1]=swap;

sravnen++;

for (int mm=0; mm<n; mm++) printf ("%d ", in[mm]); //Перевірка методом виводу масиву на екран

printf ("\n");

}

else sravnen++;

}

else

{

for (i=b,lasta=b; i>a; i--)

if (in[i-1] > in[i])

{

lasta = i;

swap = in[i]; in[i]=in[i-1]; in[i-1]=swap;

sravnen++;

for (int mm=0; mm<n; mm++) printf ("%d ", in[mm]); //Перевірка методом виводу масиву на екран

printf ("\n");

}

else sravnen++;

}

}

CharToOem ("Отсортированный массив методом Шейкер-сортировки: \n", bb);

printf("%s", bb);

for (int mm=0; mm<n; mm++) printf ("%d ", in[mm]);

printf("\n");

return sravnen;

}

//функція сортування бульбашковим методом

int puz(int A[], int n)

{

char bb [80];

CharToOem ("Сортировка методом \"пузырька\": \n", bb);

printf("%s", bb);

int i, found; // Кількість порівнянь

int sravn=0;

do { // Повторення перегляду

found = 0;

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

if (A[i] > A[i+1]) // Порівняння сусідів

{ // Переставити сусідів

int cc;

cc = A[i]; A[i]=A[i+1]; A[i+1]=cc;

for (int mm=0; mm<n; mm++) printf ("%d ", A[mm]); //Перевірка методом виводу на екран

printf ("\n");

found++;

sravn++;

}

else sravn++;

} while(found !=0); //...доки є перестановки

CharToOem ("Отсортированный массив методом пузырька: \n", bb);

printf("%s", bb);

for (int mm=0; mm<n; mm++) printf ("%d ", A[mm]);

return sravn;

}

Результат роботи програми:

Рисунок 2.1

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]