- •Лабораторные работы. Сборник задач.
- •Оглавление
- •Часть 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 Уровень сложности
2 Задача
Цель: вычисление суммы бесконечного ряда.
Вычислить с заданной точностью E (E>0). Считать, что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем E.
2а
Дополнительное условие: программа написана без использования функции.
#include <stdio.h>
#include <math.h>
// заданная точность
#defineEps0.001
int main()
{
double sum=0;
int i=1;
do
{
// вычисление суммы после добавления i-го члена ряда
sum=sum+(1.0)/(i*i);
i++;
}
// пока не достигнута заданная точность
while (((1.0)/(i*i)) > Eps);
// вывод количества подсчитанных чисел и суммы этих чисел
printf("\n This is the sum of %i numbers = %f\n ",i,sum);
return 0;
}
2б
Дополнительное условие: программа написана с использованием функций.
#include <stdio.h>
#include <math.h>
#define EPS 0.00001
// функция возвращает значение агрегируемой функции
double value(int i);
// функция проверят условие цикла (модуль следующего слагаемого по модулю меньше EPS)
bool isMore(int i);
double value(int i)
{
return 1.0 / (i * i);
}
bool isMore(int i)
{
return fabs(value(i)) > EPS;
}
int main()
{
double sum = 0;
for (int i = 1; isMore(i); i++)
{
// вычисление суммы после добавления i-го члена ряда
sum += value(i);
}
// вывод количества вычисленной суммы для iслагаемых
printf("\n This is the sum of %i numbers = %f\n ", i, sum);
return 0;
}
3 Задача
Цель: работа с элементарными алгоритмами.
Вычисление НОК.
3а
Дополнительное условие: программа написана без использования функции.
#include <stdio.h>
// функция для вычисления максимального значения двух чисел
int max(int a, int b);
intmain()
{
// первое число
inta;
// второе число
int b;
int NOK = 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;
}
// вычисление НОК
for (int i = a; i < a*b+1; i++)
{
//если число делится на a и на b, то это число является НОК
if (i % a == 0 && i % b == 0)
{
NOK = i;
break;
}
}
printf("NOK [%d,%d]=%d",a,b,NOK);
return 0;
}
int max (int a, int b)
{
// если a больше чем b, то возвращаем a
if (a>b)
returna;
else
// если b больше чем a, то возвращаем b
return b;
}
3б
Дополнительное условие: программа написана с использованием функции.
#include <stdio.h>
int max(int a, int b);
int getNOK(int a, int b);
// функция для вычисления максимального числа
int max(int a, int b)
{
// если a < b, то max присвоить значение b, иначе max присвоить значение a
return (a < b) ? b : a;
}
// функция вычисления наименьшего общего кратного
int getNOK(int a, int b)
{
// ищем среди чисел больших a НОК
for (int i = max(a, b); i <= a * b; i++)
{
// ищем среди чисел больших a НОК
if (i % a == 0 && i % b == 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);
// выводим НОК для чисел a и b
printf("NOK [%d,%d] = %d\n", a, b, getNOK(a, b));
return 0;
}