- •Лабораторные работы. Сборник задач.
- •Оглавление
- •Часть 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 Уровень сложности
4 Задача
Цель: работа с элементарными алгоритмами.
Нахождение НОД.
4а
Дополнительное условие: программа написана без использования функции
#include <stdio.h>
// функция для вычисления максимального числа
int max(int a, int b);
intmain()
{
//первое число
inta;
//второе число
int b;
int NOD = 0;
printf("Input first number ");
scanf("%d",&a);
printf("Input second number ");
scanf("%d",&b);
// если число b больше чем a, меняем местами
if (max(a,b) == b)
{
int tmp = b;
b=a;
a=tmp;
}
// ищем среди чисел меньших b НОД
for (int i = b; i > 0; i--)
{
// если число является делителем и a и b, то это число и будет НОД
if (a % i == 0 && b % i == 0)
{
NOD = i;
break;
}
}
// выводим НОД для чисел a и b
printf("NOD [%d,%d]=%d\n",a,b,NOD);
return 0;
}
// функция для вычисления максимального числа
int max (int a, int b)
{
// если a больше чем b, то возвращаем a
if (a>b)
returna;
else
// если b больше чем a, то возвращаем b
return b;
}
4б
Дополнительное условие: программа написана с использованием функции.
#include <stdio.h>
int min(int a, int b);
int getNOD(int a, int b);
// функция для вычисления минимального числа
int min(int a, int b)
{
return (a < b) ? a : b;
}
// нахождение НОД двух чисел
int getNOD(int a, int b)
{
// ищем среди чисел меньших bНОД
for (int i = min(a, b) ; i > 0; i--)
{
// если число делит и a и b, то это число и будет НОД
if (a % i == 0 && b % i == 0)
{
return i;
}
}
return -1;
}
int main()
{
int a;
int b;
printf("Input first number ");
scanf("%d",&a);
printf("Input second number ");
scanf("%d",&b);
printf("NOD [%d,%d] = %d\n", a, b, getNOD(a, b));
return 0;
}
Самостоятельная работа
Получить все натуральные трехзначные числа, сумма цифр которых равна m (натуральное число вводит пользователь).
Перевести в четверичную систему счисления дату своего рождения.
Лабораторная работа №3
Ряды
Цель: закрепление на практике знаний основных конструкций языка. Вычисление суммы бесконечного ряда.
Методические рекомендации: лабораторная работа рассчитана на 2 часа и состоит из анализа одного задания и выполнения самостоятельной работы.
Обязательное зачетное задание.
Задача
Вычислить сумму бесконечного ряда .
Дополнительное условие:использование рекуррентных отношений.
#include <stdio.h>
#include <math.h>
#defineEPS0.0001
// вычисление суммы бесконечного ряда с заданной точностью
double value(int x);
// функция для вывода наименований столбцов таблицы
voidprintHeader();
// печать таблицы значений
void printRow(int x, double sum);
double value(int x)
{
double sum = 0;
double f = 1;
// до тех пор, пока абсолютное значение очередного члена ряда больше заданной точности
for (int k = 0; fabs(f) > EPS; k++)
{
// вычисление следующего члена ряда
f = -f * (k + 2) * x / pow (k + 1, 2);
// накапливание суммы
sum+=f;
}
// увеличение переменной sumна 1
returnsum+ 1;
}
// функция для вывода наименований столбцов таблицы
void printHeader()
{
printf("| x \t| f(x) \t|\n");
printf("-------------------------\n");
}
// печать таблицы значений
void printRow(int x, double sum)
{
printf("| %d \t| %f\t|\n", x, sum);
}
intmain()
{
// левая граница суммы
inta;
// правая граница суммы
int b;
//шаг
int h;
printf("Input left bound: ");
scanf("%d",&a);
printf("Input right bound: ");
scanf("%d",&b);
printf("Input estimation step: ");
scanf("%d",&h);
printHeader();
for (int x = a; x <= b; x += h)
{
printRow(x, value(x));
}
return0;
}