lab4task1

Run Settings
LanguageC
Language Version
Run Command
/** * @file Main.cpp * @autor Коваленко І. В. 515б * @date 21.03.2023 * @brief Лабораторна робота №3, варіант 11 * * Використання масивів. Завдання 1 */ #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <time.h> #include "Module.h" int main(void) { //підключення ключів setlocale(LC_ALL, "Ukr"); srand(time(NULL)); //створення змінних int size = 0; char fill = ' '; int arr[MAX_SIZE] = {0}; //введення розміру масиву printf("Введіть розмір масиву (2-100): "); int j = 0; do { j++; if (j > 1) printf("Помилка. Введіть розмір масиву (2-100): "); scanf("%ld", &size); } while (size <2 || size > 100); //введення типу заповнення printf("Введіть тип заповнення масиву:\n\t\tf - заповнення користувачем\n\t\tr - псевдорандомне заповнненя\n\n"); int i = 0; do { i++; if (i > 1) printf("Помилка. Введіть:\n\t\tf - заповнення користувачем\n\t\tr - псевдорандомне заповнненя\n\n"); fill = getsymb(); } while (fill != 'f' && fill != 'r'); //заповнення масиву if (fill == 'f') { for (int i = 0; i < size; i++) { scanf("%i", &arr[i]); } } else { for (int i = 0; i < size; i++) { arr[i] = rand() % 10; } } printf("Ваш масив:"); for (int i = 0; i < size; i++) { printf(" %i", arr[i]); } printf("\n\n"); nesquik(arr, size, 0, size - 1); printf("Ваш відсортований масив:"); for (int i = 0; i < size; i++) { printf(" %i", arr[i]); } printf("\n\n"); //завершення програми printf("\n\nЗавершення програми."); }
#define PRIVATE static #define PUBLIC #define END_PROGRAM 1 #define ERROR 0 #define MAX_SIZE 100 //прототипы функций char getsymb(); void nesquik(int Array[], unsigned int N, int L, int R);
#include <stdio.h> #include "Module.h" //в мене getchar(), працював не так як я хотів, я написав свій... PUBLIC char getsymb() { char Csymb = ' '; do { scanf("%c", &Csymb); } while (Csymb == '\n'); return Csymb; } //сортування PUBLIC void nesquik(int Array[], unsigned int N, int L, int R) { //створення змынних int iter = L, jter = R; //знаходження середнього числа int middle = (R + L) / 2; //утворення середньої та допоміжної змінної int x = Array[middle]; int w; //цикл сортування do { //знаходження в лівій границі число більше, ніж середнє число while (Array[iter] > x) { iter++; } //знаходження в правій границі число меньше, ніж середнє число while (x > Array[jter]) { jter--; } //сортування if (iter <= jter) { w = Array[iter]; Array[iter] = Array[jter]; Array[jter] = w; iter++; jter--; } }while (iter < jter); //рекурсія лівого єлемента if (L < jter) { nesquik(Array, N, L, jter); } //рекурсія правого єлемента if (iter < R) { nesquik(Array, N, iter, R); } }
Editor Settings
Theme
Key bindings
Full width
Lines