- •Лабораторные работы. Сборник задач.
- •Оглавление
- •Часть 1. Лаборатоные работы
- •Работа со структурами и объединениями …………………………………….91
- •3 Задача
- •4 Задача
- •5 Задача
- •6 Задача
- •Дополнительное условие:использование цикла с предусловием.
- •1 Задача
- •2 Задача
- •Дополнительное условие: программа написана без использования функции.
- •Дополнительное условие: программа написана с использованием функций.
- •3 Задача
- •Дополнительное условие: программа написана без использования функции.
- •Дополнительное условие: программа написана с использованием функции.
- •4 Задача
- •Дополнительное условие: программа написана без использования функции
- •Дополнительное условие: программа написана с использованием функции.
- •Самостоятельная работа
- •Лабораторная работа №3
- •Самостоятельная работа
- •1 Задача
- •2 Задача
- •1 Задача
- •2 Задача
- •3 Задача
- •Лабораторная работа №6
- •1 Задача
- •1 Задача
- •2 Задача
- •3 Задача
- •1 Задача
- •1 Задача
- •2 Задача
- •3 Задача
- •4 Задача
- •Синтаксический анализатор
- •Самостоятельная работа
- •1 Задача
- •2 Задача
- •3 Задача
- •Работа с каталогами
- •Самостоятельная работа
- •1 Задача
- •2 Задача
- •1 Задача
- •2 Задача
- •3 Задача
- •1 Задача
- •2 Задача
- •1 Задача Реализовать очередь, состоящую из целых чисел
- •Комментарий:
- •2 Задача
- •1 Задача
- •Идеально-сбалансированные деревья
- •1 Задача
- •2 Задача
- •1 Задача
- •2 Задача
- •3 Задача
- •1 Задача
- •2 Задача
- •3 Задача
- •1 Задача
- •1 Задача
- •1 Уровень сложности
- •2 Уровень сложности
- •3 Уровень сложности
- •1 Уровень сложности.
- •2 Уровень сложности
- •3 Уровень сложности
- •1 Уровень сложности
- •Работа с несколькими массивами
- •Преобразование массива
- •Изменение элементов массива
- •2 Уровень сложности Формирование массива и вывод его элементов
- •Анализ элементов массива
- •Преобразование массива
- •Изменение элементов массива
- •Удаление и вставка элементов
- •Серии целых чисел
- •3 Уровень сложности Множества точек на плоскости
- •1 Уровень сложности
- •2 Уровень сложности
- •3 Уровень сложности
- •1 Уровень сложности
- •2 Уровень сложности
- •3 Уровень сложности
- •1 Уровень сложности
- •2 Уровень сложности
- •3 Уровень сложности
- •Not простое_логическое
- •(Простое_логическое знак_операции простое_логическое)
- •Построить синтаксический анализатор для понятия предложение.
- •1 Уровень сложности
- •2 Уровень сложности
- •1 Уровень сложности
- •Примеры:
- •Двусвязные списки
- •1 Уровень сложности
- •2 Уровень сложности
- •3 Уровень сложности
1 Задача
Дополнительное условие: реализовать простыми включениями.
7 5 1 13 8 4
57
5 1 7
15 7 13
13 8 4
15 7 8 13 4
1 5 7 8 4 13
1 5 7 4 8 13
1 5 4 7 8 13
1 4 5 7 8 13
#include <stdio.h>
#define N 10
// функция обмена
void swap(int * x, int * y)
{
int temp = *x;
*x=*y;
*y=temp;
}
// алгоритм реализованный сортировки - простыми включениями
void vstavka(int arr[])
{
for(int i=1;i<N; i++)
{
int j = i;
while((arr[j]<arr[j-1])&&(j>0))
{
swap(&arr[j],&arr[j-1]);
j--;
}
}
}
void Input(int a[N]);
void Print (int *a, int n);
int main()
{
int a[N];
Input (a);
vstavka(a);
Print(a,N);
return 0;
}
// функция ввода элементов
void Input (int a[N])
{
puts("Input the numbers\n");
for (int i=0;i<N;i++)
{
printf("Input the %d number",i);
scanf("%d",&a[i]);
}
}
// функция вывода на экран
void Print (int *a, int n)
{
puts("Array:");
for (int i=0;i<n;i++)
{
printf("%d , ",*(a+i));
}
}
2 Задача
Дополнительное условие: реализовать сортировку простым выбором (линейный выбор с обменом). Выбирается элемент с наименьшим классом и меняют местами с первым элементом.
#include <stdio.h>
#define N 10
// функция обмена
void swap(int * x, int * y)
{
int temp = *x;
*x=*y;
*y=temp;
}
// алгоритм реализованной сортировки – простым выбором
void vybor(int arr[])
{
for(int i=0; i<N; i++)
{
int i_min = i;
int min=arr[i];
for(int j=i; j<N; j++)
if(arr[j]<min)
{
min=arr[j];
i_min=j;
}
swap(&arr[i],&arr[i_min]);
}
}
void Input(int a[N]);
void Print (int *a, int n);
int main()
{
int a[N];
Input (a);
vybor(a);
Print(a,N);
return 0;
}
// функция ввода элементов
void Input (int a[N])
{
puts("Input the numbers\n");
for (int i=0;i<N;i++)
{
printf("Input the %d number",i);
scanf("%d",&a[i]);
}
}
// функция для вывода на экран
void Print (int *a, int n)
{
puts("Array:");
for (int i=0;i<n;i++)
{
printf("%d , ",*(a+i));
}
}
3 Задача
Дополнительное условие: реализовать сортировку “пузырьком”. На каждом проходе массива всплывает на самый верх нужный элемент.
7 9 13 8
9 7 13 8
9 13 7 8
9 13 8 7 – “всплывает самый легкий”
#include <stdio.h>
#define N 10
// функция обмена
void swap(int * x, int * y)
{
int temp = *x;
*x=*y;
*y=temp;
}
// алгоритм реализованной сортировки – парный обмен
void puzyrek(int arr[])
{
int flag = 1;
while(flag)
for(int i=0; i<N; i++)
{
flag=0;
for(int j=i+1; j>0; j--)
{
if(arr[j]<arr[j-1])
{
swap(&arr[j],&arr[j-1]);
flag=1;
}
}
}
}
void Input(int a[N]);
void Print (int *a, int n);
int main()
{
int a[N];
Input (a);
puzyrek(a);
Print(a,N);
return 0;
}
// функция ввода элементов
void Input (int a[N])
{
puts("Input the numbers\n");
for (int i=0;i<N;i++)
{
printf("Input the %d number",i);
scanf("%d",&a[i]);
}
}
// функция для вывода на экран
void Print (int *a, int n)
{
puts("Array:");
for (int i=0;i<n;i++)
{
printf("%d , ",*(a+i));
}
}
Лабораторная работа №29
Быстрая сортировка
Цель: закрепление на практике работы с одним из методов быстрой сортировки.
Методические рекомендации: лабораторная работа рассчитана на 2 часа и состоит из анализа одного разобранного задания.
Самостоятельная работа не предусмотрена.
Необходимый уровень знаний:
работа с указателями;
работа с функциями.