![](/user_photo/2706_HbeT2.jpg)
- •Т.Э. Шульга программирование.
- •Глава 1. Основы программирования на языке высокого уровня 6
- •Глава 2. Динамические структуры данных 40
- •Глава 3. Основы объектно-ориентированного программирования 53
- •Введение
- •Глава 1. Основы программирования на языке высокого уровня
- •Void main()
- •Задания
- •1.2. Переменные. Основные типы данных
- •Ввод – вывод значений переменных
- •Форматирование данных при обменах с потоками ввода-вывода
- •Void main()
- •Void main()
- •Преобразование типов
- •Задание 1. Описание переменных и преобразование типов
- •Задание 2. Форматирование вывода
- •1.3. Основные операции
- •Void main ()
- •Задания
- •1.4. Конструкции выбора
- •Void main()
- •Void main()
- •Void main()
- •Задание 1. Обработка введенного символа
- •Задание 2. Вычисление значения функции
- •Задание 3. Применение разветвляющихся алгоритмов при решении простейших задач
- •Задание 4. Mультиветвление
- •1.5. Конструкции цикла и передачи управления
- •Void main()
- •Задание 1. Детерминированные циклы. Простейшие задачи
- •Void main()
- •Задание 2. Итерационные циклы. Простейшие задачи
- •Void main()
- •Int last;
- •Задание 3. Одномерные массивы
- •Void main ()
- •Int a[100],n,max,imax;
- •Задание 4. Вложенные циклы
- •Void main ()
- •Задание 5. Двумерные массивы
- •Void main ()
- •Задание 6. Посимвольная обработка строк
- •Void main()
- •Задание 7. Сортировка массива
- •Void main ()
- •1.6.Функции
- •Int oct (int a)// определение функции
- •Void main()
- •Void main()
- •Int strcmp(const char *str1, const char* str2);
- •Int fclose (file * stream);
- •Int feof(file *stream);
- •Int fseek ( file* stream, long offset, int origin);
- •Задание 1. Определение и вызов функций
- •Задание 2. Рекурсивные функции
- •Задание 3. Использование библиотечных функций string.H
- •Void main()
- •Задание 4. Использование библиотечных функций stdio.H
- •Void main ()
- •Глава 2. Динамические структуры данных
- •Int year;
- •Int children;
- •Задание 1. Структуры
- •Int year;
- •Int month;
- •Int visokos(int year)
- •Vivod (date d)
- •Int day_number(date d)
- •Vivod(mas[I]);
- •Vivod (min(mas,n));
- •Задание 2. Динамический список
- •Int mark;
- •Void vvod ()
- •Void vivod()
- •If (begin)
- •Void vivod_f()
- •If (begin)
- •Void add()
- •Void udol () //
- •If (begin)
- •Void del()
- •Void main ()
- •Задание 3. Использование стеков и очередей
- •Глава 3. Основы объектно-ориентированного программирования
- •Void empty();
- •If (len) delete []s;
- •Void cStr::empty()
- •Задание 1 . Описание простейшего класса
- •Задание 2 . Класс string
- •Void main()
- •Void main ()
- •Задание 3. Класс fstream
- •Задание 4. Наследование
- •Список литературы
Задание 2. Рекурсивные функции
-
Записать алгоритм Евклида вычисления наибольшего общего делителя (НОД) как рекурсивную функцию. Алгоритм основан на том факте, что если a=qb+r, где 0<r<b, то HOD(a,b)=HOD(b,r). В процессе вычислений выводить на экран текущие выражение a=qb+r в численном виде, то есть 37=2*17+3, 17=5*3+2 и т.д. В конце вывести НОD.
-
Записать алгоритм, проверящий является ли заданное число простым как рекурсивную функцию. Вывести на экран все простые числа, не превосходящих n.
-
Записать алгоритм разложения произвольного числа на простые множители как рекурсивную функцию с выводом на экран сомножителей.
-
Записать алгоритм нахождения канторового разложения произвольного числа а – вектора
в виде рекурсивной функции. Канторовым разложением положительного числа а называется запись вида:
,
.
-
Определить рекурсивную функцию, которая возвращает факториал целого неотрицательного числа. Написать программу, вычисляющую
по заданным a и b.
-
Определить рекурсивную функцию, вычисляющую число сочетаний
, используя соотношение
.
-
Определить рекурсивную функцию, которая возвращает n-ое число Фибоначчи. Числа Фибоначчи вычисляются следующим образом:
.
-
Определить рекурсивную функцию, которая вычисляет сумму цифр натурального числа.
-
Определить рекурсивную функцию, выводящую на экран цифры целого положительного числа.
-
Определить рекурсивную функцию, которая находит корень уравнения f(x)=0 на заданном интервале [a,b] c заданной точностью . Корень ищется методом деления отрезка пополам по следующему алгоритму. Первоначально предполагается, что f(a)f(b)<0.
-
вычисляются f(а), f(b);
-
вычисляется c=(a+b)/2 и f(c);
-
если f(a)f(c)>0, то а=c, в противном случае b=c;
-
если b-a>, то перейти к шагу 2, иначе любой из концов отрезка может быть использован в качестве корня уравнения.
-
Определить рекурсивную функцию, выводящее в экран двоичное представление заданного десятичного числа.
-
Определить рекурсивную функцию, возвращающую максимальное из n чисел.
Задание 3. Использование библиотечных функций string.H
Пример. Вывести слова введенной строки, начинающиеся с гласной буквы, на экран столбиком, без разделительных знаков (пробел, табуляция, точка, запятая и т.п.).
Для выделения слов из строки будем использовать библиотечную функцию
char * strtok(char *str1, const char *str2),
которая ищет в строке str1 лексемы, выделенные символами из строки str2 и возвращает указатель на выделенную лексему, причем при отсутствии лексемы возвращается NULL (нулевой указатель, то есть указатель, отличный от указателя на любой объект). Чтобы разделить некоторую строку на лексемы, при первом вызове функции strtok() параметр str1 должен указывать на начало этой строки. При последующих вызовах функции в качестве параметра str1 нужно использовать нулевой указатель.
Для проверки принадлежности первой буквы слова к гласным буквам будем использовать функцию
char * strchr (const char * str, int ch),
которая возвращает указатель на первое вхождение младшего байта параметра ch в строке str. Если совпадение не обнаружено, возвращается нулевой указатель.
# include <iostream.h>
# include <string.h>
# define dlin 80 // директива позволяет в программе вместо
//числа 80 использовать идентификатор dlin