Динамические массивы
задачи 0-4) переделать с помощью динамических массивов и функций
1) перевод 10-ичного числа в q-ичную систему счисл c пом массива предв найти его размерь
2)Реализовать циклический сдвиг массива на m –позиций вправо.
3)реализовать вставку элемента после k поз и удаление в к-поз
5) Даны 2 неубывающих массива. Построить 3й неубывающий массив, явл объединен 1х двух.
6*)Игра камни Играют двое Каждый обязан вынимать
или
камней .Проигрываеи тот, кто не сможет сделать ход. составить алгоритм и программу поиска выигрышных позиций при любых 
4) Объясните разницу между 4 объектами (С++)
(a) int ival = 1024;(b) int *pi = &ival; (c) int *pi2 = new int(1024); (d) int *pi3 = new int[1024];
С) оп new выделяет память под безымянный объект типа int, инициализ его знач 1024 и возв адрес создан объекта. Этот адрес использ для инициализации указателя pint.
5)Что делает следующий фрагмент кода? В чем состоит логическая ошибка?
int *pi = new int(10); int *pia = new int[10];
while ( *pi pia[*pi] = *pi;
*pi = *pi + 1;
}
delete pi; delete[] pia;
Рекурсия
1) Написать рекурсивную функцию для вычислений
А)факториала натурального числа n. Б)количества цифр натурального числа.
В) цифрового корня натурального числа г) k-го члена последовательности Фибоначчи
Д) перевода натуральн числа из десятичной системы счисления в двоичную
Е) является ли заданное натуральное число простым
2) Определить результат выполнения следующих рекурсивных процедур при n=5


3) Задачи ЕГ на рекурсии
Дан рекурсивный алгоритм F Чему равна сумма всех чисел, которые будут выведены при выполнении вызова F(1).
Pascal | C++ |
procedure F(n: integer); begin writeln(n); if n F(n + 1); F(n + 3) end end; | void F(int n); { cout if (n {F(n+1); F(n+3);} } |
А) построение дерева вызовов  | Б)подстановка  S(1) = 1 + S(2) + S(4) = S(2) + 5 S(2) = 2 + S(3) + S(5) = S(3) + 7 S(3) = 3 + S(4) + S(6) = 13 S(4) = 4 ответ: 25 |
Найти сумму чисел, выведенн при вызове F(1) | Ск символов * б напечатаны при вызове F(7)? |
procedure F(n: integer); begin writeln(n); if n begin F(n+2); F(n*3) end end; | procedure F(n: integer); begin writeln('*'); if n 0 then begin F(n-2);F(n div 2) end end; |
:
4*) Дано натуральное число n1. Выведите все простые множители этого числа в порядке неубыв с учетом кратности. Алгоритм должен иметь сложность O(logn).
Массивы
Строки и символы
1)подсчет различных букв в слов
2) Перестановка букв в слове (циклический сдвиг вправо)
Перестановка букв в слове циклический сдвиг | подсчет различных букв в слов |
ar s:string; i,j,n:integer; begin readln(s); s:=s[length(s)] + copy(s,1,length(s)-1); writeln(s); end. | for i:=1 to length(s) do begin n:=0; for j:=1 to length(s) do begin if s[i]=s[j] then inc(n); end; r:=r+1/n; end; |
Функция поиска заданного символа в строке
С++ | Pascal |
int find(char *s,char c) { int i; for (i=0;i if(s[I]==c) return i; return –1; } | find(c:char; s:string):integer; var i:integer; begin for (i=1 to Length(s) -1 do if (s[i]=c) then begin Result:=I; exit; end; Result:=-1; end; |
количество слов в тексте | Выделение слов из текста |
const Alpha : set of char=['A'..'Z','А'..'П','Р'..'Я','a'..'z','а'..'п','р'..'я']; var s:string; i:integer; wc:integer; begin writeln('Вв текст'); readln(s); i:=1; wc:=0; Repeat while NOT(s[i] in Alpha) and (i if (i while (s[i] in Alpha) and (i Until (ilength(s)); writeln('Количество слов в этом тексте = ',wc); end. | const Alpha : set of char= ['A'..'Z','А'..'П','Р'..'Я','a'..'z','а'..'п','р'..'я']; var s,t:string;i:integer; begin writeln('Введите текст'); readln(s); writeln('Список слов в тексте:');i:=1; Repeat while NOT(s[i] in Alpha) and (i inc(i); t:=''; while [i] in Alpha) and (i begin t:=t+s[i]; inc(i); end; if length(t) 0 then writeln(t); Until (i length(s)); end. |
КОНЕЧНЫЕ АВТОМАТЫ И ОБРАБОТКА ТЕКСТОВ
1) В тексте возведение в степень обозначено 2 идущими подряд звёздочками. Решено заменить это обозн на ^ (так x**y заменится на x^y). Как это проще всего сделать? Исходный текст читается символ за символом, полученный текст требуется печатать символ за символом.

Наша программа заменяет *** на ^* (но не на *^).
2) Написать программу, кот удаляла бы комментарии и вставляла бы вместо исключенного комментария пробел (чтобы 1{один}2 превратилось не в 12, а в 1 2).
Структуры
Описать структуру с именем AEROFLOT, содержащую следующие поля:
название пункта назначения рейса; номер рейса; тип самолета.
2. Написать программу, вып следующие действия:
• ввод с клавиатуры данных в массив, состоящий из 7 структур типа AEROFLOT;
• упорядочивание записей по возрастанию номера рейса;
• вывод на экран ном рейсов и типов самолетов, вылет в п назнач, назв кот совпадает с названием, введенным с клавиатуры;
• если таких рейсов нет, вывести соответствуюшее сообщение.
Классы
1) Определить класс Children, кот содержит такие поля (члены класса): закрытые – имя ребенка, фамилию и возраст , публичные – методы ввода данных и отобр их на экран. Объявить 2 объекта класса, внести данные и показать их.
2) Создать класс, описывающий понятие работник, со свойствами:
фамилия; стаж; часовая заработная плата; количество отработанных часов.
C пом метода реализ ввод данных работн с клавиат Рассчитать с пом методов зарплату, за отраб время, и премию, размер кот определяется в з-ти от стажа (при стаже до 1 г 0%, до 3 л 5%, до 5 лет 8%, свыше 5 л 15%).
С пом метода печати, реализовать вывод информации о работнике на экран. Предусмотреть метод для записи в файл данных о работнике.
Стек
Пусть T некоторый тип. Рассм тип «стек элем типа T». Его знач явл посл-ти знач типа T.
Операции:
• Сделать пустым (var s: стек элементов типа T)
• Добавить (t:T; var s: стек элементов типа T)
• Взять (var t:T; var s: стек элементов типа T)
• Пуст (s: стек элементов типа T): boolean
• Вершина (s: стек элементов типа T): T
Процедура «Взять» применима, если посл-ть s непуста; она забирает из неё послед эл, кот стан знач переменной t.
Выр «Пуст(s)» истинно, если посл-ть s пуста. Выр «Вершина(s)» опред, если посл-ть s непуста, и равно последнему эл последовательности s
Реализация стека на основе массива
Pascal | С++ |
const N = ... type stack = record | Содержание: array [1..N] of T; | Длина: integer; end; | #define NMAX 100 struct stack { float elem[NMAX]; int top; }; |
Инициализация стека
| void init(struct stack *stk) { stk-top=0; } |
Помещение элемента в стек
| void push(struct stack *stk, float f) { if(stk-top stk-elem[stk-top] = f; stk-top++; } else printf("Стек полон, кол эл: %d !\n",stk-top); } |
1)Используя стек, напечатать символы нек строки в обратном порядке.
Каждый символ строки, начиная с 1го, размещаем в стеке. В результате на вершине стека окажется последний символ, “под” ним — предпоследний и т.д. Извлекая символы из стека, выводим их на экран в порядке, обратном исходному.
2) Дана линейная запись арифметического выражения, в котором использованы только круглые скобки. Проверить правильность расстановки скобок в выражении”