
- •Звіт з навчальної практики з об’єктно-орієнтованого програмування
- •Індивідуальне завдання 1
- •Текст програми
- •Індивідуальне завдання 2
- •Текст програми
- •Індивідуальне завдання 3
- •Текст програми
- •Індивідуальне завдання 4
- •Текст програми
- •Індивідуальне завдання 5
- •Текст програми
- •Тема 2. Конструктори. Деструктори.
- •Індивідуальне завдання 1
- •Текст програми
- •Тема 3. Дружні функції і класи.
- •Індивідуальне завдання 1
- •Текст програми
- •Тема 4. Превантаження операцій.
- •Індивідуальне завдання 1
- •Текст програми
Тема 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