- •Лабораторные работы. Сборник задач.
- •Оглавление
- •Часть 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 Задача
Вычислить производную от функции cos(x)
#include"stdio.h"
#include"math.h"
double proiz(double x, double dx, double (*f)(double x));
double fun(double z);
intmain()
{
// точка вычисления производной
double x;
// приращение
double dx;
// значение производной
double z;
// ввод значения x и dx
scanf("%f%f",&x,&dx);
// вызов функции
z=proiz(x,dx,fun);
// вывод на экран значения производной
printf("%f",z);
return0;
}
// функция вычисления производной
double proiz(double x, double dx, double (*f)(double x))
{
double xk, xk1, pr;
xk = fun(x);
xk1 = fun(x+dx);
pr = (xk1/xk-1e0)*xk/dx;
return pr;
}
// функция от которой вычисляется производная
double fun(double z)
{
return(cos(z));
}
Самостоятельная работа
Написать программу вычисления асимптот функции.
Лабораторная работа №9
Рекурсия
Цель: применение на практике знаний работы с механизмом рекурсии. Понятие прямой рекурсии.
Методические рекомендации: лабораторная работа рассчитана на 2 часа и состоит из анализа четырех заданий и выполнения самостоятельной работы.
Обязательное зачетное задание.
Необходимый уровень знаний:
работа с функциями;
механизм прямой рекурсии.
1 Задача
Цель: первичное знакомство с рекурсией. Выход из рекурсии. Вызов оператора, стоящего после вызова рекурсии.
Вывести все числа до первого отрицательного числа.
#include<stdio.h>
//функция для вывода на экран целых чисел
void Print(int n);
intmain()
{
// рекурсивная вывода на консоль чисел 1..3
Print(3);
return(0);
}
//функция для вывода на экран целых чисел
void Print(int n)
{
printf("%d\n", n);
// условие выхода из рекурсии
if(n<0)
Print(n-1);
printf("%d", n);
}
2 Задача
Вычисление факториала.
2а
Дополнительные условия: вычислить факториал без использования рекурсии.
#include<stdio.h>
long factorial(int n);
intmain()
{
// объявление числа, факториал которого необходимо вычислить
intnumber;
// вычисление и вывод факториала
printf("factorial =%ld\n", factorial(number));
return (0);
long factorial(int n)
{
fact = 1;
for (int j=1; j<n+1;j++)
{
fact*=j;
}
return (fact);
}
2б
Дополнительные условия: вычислить факториал с использованием рекурсии.
#include<stdio.h>
// в функцию передается число, факториал которого мы хотим вычислить и возвращается
// значение факториала
long factorial(int n); int main()
{
int number;
printf("factorial =%ld\n", factorial(number));
return (0);
}
long factorial(int n)
{
// условие выхода из рекурсии
// если n=1, то факториал 1 равен 1
if(n==1)
return (1);
return n*factorial(n-1);
}
}
3 Задача
Дополнительные условия: вычисление НОД с помощью алгоритма Эвклида.
#include<stdio.h>
// функция вычисления алгоритма Эвклида
void Evk(int x, int y);
intmain()
{
printf("Введите два числа \n");
scanf("%d%d", &x,&y);
printf("НОД =%d\n",Evk( x, y));
return (0);
}
int Evk(int x, int y)
{
if(x<y)
//проход по алгоритму если (x<y)
return Evk(y,x);
else if ((x%y)!=0)
// проход по алгоритму
returnEvk(y,x%y);
else return(y);
}
4 Задача
Вычисление числа Фибоначчи.
4а
Дополнительные условия: вычисление чисел Фибоначчи без использования рекурсии. Для вычисления числа Фибоначчи использовать массив не более, чем их 3-х элементов.
#include<stdio.h>
//функция вычисления числа Фибоначчи
int fibon(int n);
int main()
{
int number;
long int fib;
printf("Input number \n");
scanf("%d", &number);
// рекурсивное вычисление числа Фибоначчи
fib = fibon(number);
// вывод числа Фибоначчи
printf("fibon =%ld\n", fib);
return (0);
}
int fibon(int n)
{
int i,a[3];
if (n<3)
return 1;
//первые два значения
a[1]=a[0]=1;
// цикл прохода до текущего числа
for (i=2; i<n; ++i)
{
//вычисление очередного числа Фибоначчи
a[2]=a[0]+a[1];
a[0]=a[1];
a[1]=a[2];
}
returna[2];
}
4б
Дополнительные условия: вычислить числа Фибоначчи с использованием рекурсии.
Рекурсивная функция. Пример «плохой» рекурсии.
#include<stdio.h>
int fibon(int n);
int main()
{
int number;
long int fib;
printf("Input number \n");
scanf("%d", &number);
fib = fibon(number);
printf("fibon =%ld\n", fib);
return (0);
}
int fibon(int n)
{
if(n>2)
// алгоритм рекурсии
return fibon(n-2)+ fibon(n-1);
elsereturn1;
}
Самостоятельная работа
Написать программу перевода числа из десятичной системы счисления в двоичную. Написать 2 варианта: перевод с помощью рекурсивной функции и без использования рекурсии.
Вычислить корень функции f(x) на интервале [a,b]. Функцию f(x) задает пользователь.
Лабораторная работа №10