Автор: Пользователь скрыл имя, 22 Января 2012 в 14:19, курсовая работа
Постановка задачі
Впорядкувати вибраний випадковим чином масив з десяти цілих чисел за зростанням та за спаданням ( тобто переставити його елементи так, щоб для всіх i виконувалась умова відповідно), використовуючи метод сортування вставками.
Постановка задачі…………………………………………………………..3
Теоретичне обґрунтування і алгоритм вирішення задачі………………..3
Код програми з коментарями……………………………………………...3
Зовнішній вигляд вікна програми………………………………………..10
Список використаної літератури………………………………………...11
n=a[i];
// Номер попереднього елемента
m=i-1;
// Порівнюємо з попереднім елементом
/* Якщо поточний елемент менший від попереднього, то переставляємо його ближче до початку масиву */
/* Повторюємо, доки не дійдемо до початку масиву або доки попередній елемент не виявиться меншим за поточний */
while ((m>=0)&&(a[m]>n)) // Якщо дана умова виконується.
{
a[m+1]=a[m]; // Міняємо місцями поточний і попередній елементи.
m=m-1; // Зміщуємо попередній елемент на одиницю.
a[m+1]=n; // Вставляємо на місце зміщеного елемента поточний елемент.
}
for (int k=0;k<10;k++) // Виведення результатів сортування у вікно програми
{
if (a[k]>9)
intToS
if(a[k]<10)
intToS
if(a[k]<10)
if(a[k]>9) TextOut(hdc, 20 + 20 * k,80 + 20 * counter,dep, 2);
}
counter++;
}
counter=1;
fout << "Сортування за зростанням:\t "; // Збереження результатів сортування у файлі
for (i=0;i<10;i++)
{
fout << a[i] << " ";
}
fout << "\n";
}
void decSort()// Функція сортування за спаданням
{
// Починаємо з другого елемента
for (i=1;i<10;i++)
{
// Поточний елемент
n=a[i];
// Номер попереднього елемента
m=i-1;
// Порівнюємо з попереднім елементом
/* Якщо поточний елемент більший від попереднього, то переставляємо його ближче до початку масиву */
/* Повторюємо, доки не дійдемо до початку масиву або доки попередній елемент не виявиться більшим за поточний*/
while ((m>=0)&&(a[m]<n)) // Якщо дана умова виконується.
{
a[m+1]=a[m]; // Міняємо місцями поточний і попередній елементи.
m=m-1; // Зміщуємо попередній елемент на одиницю.
a[m+1]=n; // Вставляємо на місце зміщеного елемента поточний елемент.
}
for (int k=0;k<10;k++) // Виведення результатів сортування у вікно програми
{
if (a[k]>9)
intToStr(a[
if(a[k]<10)
intToStr2(a[
if(a[k]<10)
if(a[k]>9) TextOut(hdc, 300 + 20 * k,80 + 20 * counter,dep, 2);
}
counter++;
}
counter=1;
fout << "Сортування за спаданням:\t "; // Збереження результатів сортування у файлі
for (i=0;i<10;i++)
{
fout << a[i] << " ";
}
fout
<< "\n";
}
void intToStr(int pos) /* Функція перетворення двоцифрових цілочислових змінних в текстові символи */
{
int inter;
char
c;
for(int i=1; i<3; i++) // Проходимо цикл двічі, оскільки маємо двоцифрове число
{
inter = pos % 10; //
Починаємо перетворення цифри з розряду
одиниць
switch(inter)
{
case 0: c = '0'; break;
case 1: c = '1'; break;
case 2: c = '2'; break;
case 3: c = '3'; break;
case 4: c = '4'; break;
case 5: c = '5'; break;
case 6: c = '6'; break;
case 7: c = '7'; break;
case 8: c = '8'; break;
case 9: c = '9'; break;
}
dep[2-i] = c; // Записуємо результат перетворення в текстову змінну
pos = pos/10; // Переходимо до розряду десятків
}
}
void intToStr2(int pos) /* Функція перетворення одноцифрових цілочислових змінних в текстові символи */
{
int inter;
char
c;
for(int i=1; i<2; i++) // Проходимо цикл тільки 1 раз оскільки маємо одноцифрове число число
{
inter = pos;
switch(inter)
{
case 0: c = '0'; break;
case 1: c = '1'; break;
case 2: c = '2'; break;
case 3: c = '3'; break;
case 4: c = '4'; break;
case 5: c = '5'; break;
case 6: c = '6'; break;
case 7: c = '7'; break;
case 8: c = '8'; break;
case 9: c = '9'; break;
}
dep[1-i] = c; // Записуємо результат перетворення в текстову змінну
}
}
void CleanGen(void) // Функція очищення поля виводу згенерованого масиву
{
Rectangle(hdc,302,17,
}
void CleanAsc(void) // Функція очищення поля виводу матриці сортування за зростанням
{
Rectangle(hdc,15,93,223,
}
void CleanDec(void) // Функція очищення
поля виводу матриці сортування за спаданням
{
Rectangle(hdc,290,93,
}
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) /* handle the messages */
{
case WM_COMMAND:
hdc= GetDC(hwnd);
if(LOWORD(
if(LOWORD(
if(LOWORD(
if(LOWORD(
break;
case WM_DESTROY:
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}