Лабораторная работа: прога
Описание
Характеристики лабораторной работы
Список файлов
- прога.txt 6,56 Kb
целые b[200], нов[200]; //задаём переменные как целые, но массив (два массива)
Program //прога начинается
{
целые a, счётч1, k, врем; //задаём переменные как целые
логические массивКорректен;
пока (!массивКорректен)
//НИЖЕ ВВОД МАССИВА
{
вывод "длина массива от 0 до 200"; //вывод сообщения в скобках
ввод a; //вводим длину массива (любое целое число от 1 до 200)
если (a > 200 | a <= 0) //проверяем, что бы всё было правильно, чтобы было хотя бы 1, но не больше двухсот)
{
выводстр "ошибка "; //если неправильно, то выводим ошибку
}
иначе
массивКорректен = true; //если правильно, то записываем, что всё хорошо и можно прогать дальше
}
если (массивКорректен == true) //только если массив записан правильно, мы начинаем выполнять прогу. Это нужно, так как иначе программа выведет ошибку, но продолжит работать
{
цикл ( счётч1 = 0; счётч1 < a; счётч1 = счётч1 + 1) // Запускаем цикл, который перебирает пока пустой массив и записывает каждый раз +1 в переменную "счётч1".
{
выводстр "введите " , счётч1 , "й элемент"; //Выводим строку, которая будет такая: "введите *КОЛВО-ЧИСЕЛ*й элемент"
ввод b[счётч1]; //Вводим массив, то есть первое число, потом второе, третье и так далее в зависимости от того, что мы задали (от 1 до 200 чисел так может быть)
}
}
выводстр "введенный массив: "; //Выводим на экран "введённый массив"
цикл ( счётч1 = 0; счётч1 < a; счётч1 = счётч1 + 1) //Запускаем цикл перебора массива
{
выводстр "a[", счётч1, "] = ", b[счётч1]; //Выводим на экран числа и порядковый номер. Для 15-го случая (в качесвте примера) будет выглядеть так: "а15 = 666"
}
выводстр; //Не уверен что это вообще нужно, но это пустой вывод
выводстр; //Не уверен что это вообще нужно, но это пустой вывод
целые врем1 = 1; //задаём переменную равную единице
нов[0] = b[0]; //Делаем новый массив, который копирует предыдущий
цикл (счётч1 = 1; счётч1 < a; счётч1 = счётч1 + 1) //Делаем цикл перебора массива
{
если (b[счётч1] != b[счётч1 - 1]) //Если число меньше, чем предыдущее
{
нов[врем1] = b[счётч1]; //В новый массив записываем это число
врем1 = врем1 + 1; //К переменной прибавляем единицу
}
}
// НИЖЕ СОРТИРОВКА
//
БыстраяСортировка(0, a - 1); //Вызов процедуры быстрой сортировки. Сама процедура описана ниже. Но не пойму, во входных данных нет массива, только 0 и его длина-1.
//
выводстр "результат "; //Вывод строчки
цикл ( счётч1 = 0; счётч1 < врем1; счётч1 = счётч1 + 1) //цикл перебора
{
выводстр "a[", счётч1, "] = ", нов[счётч1]; //Вывод нового массива с порядковыми номерами как и в прошлый раз с изначальным массивом
}
//
если (врем1 > 3) //Если переменная врем1 больше трёх выводим то что ниже
{
выводстр "3й минимум " , нов[2];
выводстр "4й максимум " , нов[врем1 - 4];
}
иначе //Или делаем следующее
{
если (врем1 > 2) //Если врем1 больше двух, то выводим то что ниже
{
выводстр "3й минимум ", нов[2];
}
иначе //если нет, то выводим то что ниже
{
выводстр "3 минимума и 4 максимум отсутствуют";
}
}
//
}
//ПРОЦЕДУРА СОРТИРОВКИ
БыстраяСортировка(целые a, целые c) //Начало процедуры
{
целые i = a;
целые j = c;
целые n = b[(i + j)/2];
целые tmpq; //Задали переменные
пока (i <= j) //Пока i меньше чем j (изначально i=0)
{
пока(b[i] < n) //Пока число массива меньше, чем центральное число
i = i + 1; // Мы к i прибавляем единицу
пока(b[j] > n) //Пока число массива больше центрального
j = j - 1; //Мы у j вычитаем единицу (изначально j=длине массива-1
если(i <= j) //Если i меньше чем j, то:
{
tmpq = b[i]; //Временной переменной присваиваем значения числа из массива (b[i])
b[i] = b[j]; //На место этого числа вписываем b[j]
b[j] = tmpq; //На место b[j] вписываем временную переменную
i = i + 1; //К i прибавляем единицу
j = j - 1; //К j прибавляем единицу
}
}
если (i < c) //Если i<c, то:
БыстраяСортировка(i, c); //Делаем быструю сортировку с числами i и с
если (a < j) //Если a<j, то:
БыстраяСортировка(a, j); //Делаем быструю сортировку с числами a и j
}
Начать зарабатывать