- •ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
- •Требования к оформлению лабораторных работ
- •1. ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
- •13.1 План разработки алгоритмов и программ
- •Таблица 1.1 Результат ручной прокрутки после первого этапа
- •Таблица 1.2 Результат ручной прокрутки после первого этапа
- •Таблица 1.3 Итог выполнения ручной прокрутки
- •13.2 Перевод алгоритма в Паскаль-программу
- •13.3 Использование готовых алгоритмов при решении задач
- •Подсчет элементов, обладающих заданным свойством
- •Поиск максимального и минимального элементов
- •Поиск элементов, обладающих заданным свойством
- •Задача 1. Подсчет ненулевых элементов
- •Задача 2. Подсчет элементов, абсолютная величина которых больше 7
- •Задача 3. Поиск элемента равного 7
- •Задача 5. Найти количество элементов массива больших среднего арифметического этих элементов
- •Задача 6. Поиск максимального элемента и подсчет частоты его появления в массиве
- •Задача 7. Поиск нулевого элемента
- •Задача 8. Поиск отрицательного числа с конца массива
- •13.4 Стандартная обработка двумерных массивов
- •Двумерный массив и его части
- •Индексы элементов двумерного массива
- •Индексы строки и столбца двумерного массива
- •Индексы диагоналей двумерного массива
- •Перенос простейших алгоритмов на двумерные массивы
- •13.5 Отладка и тестирование программ
- •2. СОЗДАНИЕ КОНСОЛЬНЫХ ПРИЛОЖЕНИЙ СРЕДСТВАМИ DELPHI 7.0
- •13.1 Создание консольного приложения средствами Delphi
- •13.2 Структура программы в Delphi
- •Таблица 2.1
- •13.3 Введение в типы данных Delphi
- •13.4 Венгерская нотация
- •13.5 Отладка и тестирование программ средствами среды Delphi 7
- •3. ЛАБОРАТОРНАЯ РАБОТА №1 «ЛИНЕЙНЫЕ ПРОГРАММЫ»
- •13.1 Пояснения и примеры к лабораторной работе
- •13.2 Задания к лабораторной работе №1:
- •4. ЛАБОРАТОРНАЯ РАБОТА №2 «АЛГОРИТМЫ С ВЕТВЛЕНИЯМИ»
- •13.3 Пояснения и примеры к лабораторной работе
- •13.2 Реализация алгоритмов с ветвлениями средствами C#
- •13.3 Задания к лабораторной работе №2
- •5. ЛАБОРАТОРНАЯ РАБОТА №3 «ОПЕРАТОР ВЫБОРА»
- •13.1 Пояснения и примеры к лабораторной работе
- •13.2 Реализация оператора выбора в языке C#
- •13.3 Задания к лабораторной работе №3
- •6. ЛАБОРАТОРНАЯ РАБОТА №4 «ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ»
- •13.1 Основные разновидности циклов
- •Цикл с постусловием
- •Цикл с предусловием
- •Цикл с параметром
- •Программное прерывание выполнения циклов
- •13.2 Примеры решения задач с использованием операторов цикла
- •Проверка корректности введенных данных
- •Решение задач с использованием диапазонов чисел
- •Решение задач полным перебором
- •Пояснения к задачам 18, 23, 24, 25:
- •13.3 Задания к лабораторной работе №4
- •7. ЛАБОРАТОРНАЯ РАБОТА №5 «РЯДЫ И ПОСЛЕДОВАТЕЛЬНОСТИ»
- •13.1 Примеры решения задач
- •Вычисление суммы n-первых членов ряда
- •Вычисление суммы n-первых членов последовательности, удовлетворяющих условию
- •Нахождение наименьшего номера члена последовательности, для которого выполняется некоторое условие
- •13.2 Задания к лабораторной работе №5
- •8. ЛАБОРАТОРНАЯ РАБОТА №6 «ТАБУЛИРОВАНИЕ ФУНКЦИЙ»
- •13.1 Пример решения задачи на табулирование функции
- •8.1.2 Организация перенаправления ввода-вывода средствами C#
- •13.2 Задания к лабораторной работе №6
- •9. ЛАБОРАТОРНАЯ РАБОТА №7 «ПОДПРОГРАММЫ»
- •13.1 Задания к лабораторной работе №7
- •13.2 Задания к лабораторной работе №8
- •13.1 Примеры и пояснения к лабораторной работе
- •13.2 Задания к лабораторной работе №9
- •Задания к лабораторной работе №10
- •13.1 Примеры работы со строками
- •Пример 13.2 Удалить из строки символ, указанный пользователем.
- •Пример 13.3 Удалить из строки лишних пробелов (пробелы в начале и в конце строки, между словами также должен быть один пробел).
- •Пример 13.4 Определить количество слов в заданном тексте.
- •13.2 Задания к лабораторной работе №11
- •13.1 Задания к лабораторной работе №12
- •13.1 Пояснения к работе
- •13.1 Задания к лабораторной работе №13
- •13.1 Пояснения к лабораторной работе №14
- •Формирование файла случайных чисел
- •Анализ файла случайных чисел
- •13.2 Задания к лабораторной работе №14
- •13.1 Примеры решения задач с использованием текстовых файлов
- •13.2 Задания к лабораторной работе №15
- •13.1 Задания к лабораторной работе №16
- •13.1 Задания к лабораторной работе №17
- •13.2 Задания к лабораторной работе №18
- •13.1 Задания к лабораторной работе №19
- •ПРИЛОЖЕНИЕ А
- •ПРИЛОЖЕНИЕ Б
- •СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
- •ОГЛАВЛЕНИЕ
writeln(‘кроликов=’,k,’гусей=’,(64-k*4) div 2)
//C#
int count = 0;
for (int krol = 64/4; krol >= 0; krol--)
{
Console.WriteLine("{0}.\t кроликов = {1}\tгусей = {2}", ++count,krol,(64-krol*4)/2);
}
Пояснения к задачам 18, 23, 24, 25:
Пример 6.6 Заменить буквы цифрами так, чтобы соотношение оказалось верным (одинаковым буквам соответствуют одинаковые цифры, разным — разные): ХРУСТ*ГРОХОТ = РРРРРРРРРРР.
Систему тестов здесь составить опять таки проблематично, но после решения и проверки корректности полученного результата мы можем привести решение: 21649 * 513239 = 11111111111
Перед написанием программы следует отметить, что во время решения данной задачи может возникнуть переполнение, поэтому каждую букву заменяем переменной целого типа и определяем для нее ограничения, так h, g, r могут принимать значения из диапазона 1 .. 9, т.к. с них начинаются числа, а остальные переменные o, t, s, u находятся в диапазоне 0 .. 9.
Слова сопоставляем с переменными a, b, c, которым присваиваем тип comp, который позволяет хранить целые 11-тиразрядные числа.
Листинг 4.4
// Turbo Pascal 7.0
{$N+} //Включение математического сопроцессора var
h,r,u,s,t,g,o:integer;
a,b,c:comp; begin
for r:=1 to 9 do begin
c:=r*exp(10*ln(10))+r*1000000000+r*100000000+r*10000000+
r*1000000+r*100000+r*10000+r*1000+r*100+r*10+r; for h:=1 to 9 do
for u:=0 to 9 do for s:=0 to 9 do
for t:=1 to 9 do for g:=1 to 9 do
for o:=0 to 9 do begin
a:=h*10000+r*1000+u*100+s*10+t;
b:=g*100000+r*10000+o*1000+h*100+o*10+t;
61
if c=a*b then begin
writeln(h,r,u,s,t,'*',g,r,o,h,o,t,
'=',r,r,r,r,r,r,r,r,r,r,r);
readln;
halt;
end;
end;
end;
end.
//С#
int h, r, u, s, t, g, o; double a, b, c;
long i=0;
for (r = 1; r <= 9; r++)
{
c = r*Math.Pow(10, 10) + r*Math.Pow(10, 9) + r*Math.Pow(10, 8) + r*Math.Pow(10, 7) + r*Math.Pow(10, 6) + r*Math.Pow(10, 5)
+ r*Math.Pow(10, 4) + |
r*Math.Pow(10, 3) + r*Math.Pow(10, 2) |
+ r*10+r; |
|
for(h=1;h<=9;h++) |
|
for(u=0;u<=9;u++) |
|
for(s=0;s<=9;s++) |
|
for(t=1;t<=9;t++) |
|
for(g=1;g<=9;g++) |
|
for (o = 0; |
o <= 9; o++) |
{
i++;
a = h * 10000 + r * 1000 + u * 100 + s * 10 + t; b = g * 100000 + r * 10000 + o * 1000 + h * 100
+ o * 10 + t;
if (c == a * b)
{
Console.Write("Ответ: "); Console.Write(a); Console.Write("*"); Console.Write(b); Console.Write("="); Console.WriteLine(c); Console.WriteLine(i); Console.ReadLine(); return;
}
}
}
62
13.3Задания к лабораторной работе №4
1.Имеется серия измерений элементов треугольника. Группы элементов пронумерованы. В серии в произвольном порядке могут встречаться такие группы элементов треугольника:
1)основание и высота;
2)две стороны и угол между ними (угол задан в радианах);
3)три стороны.
Разработать программу, которая запрашивает номер группы элементов, вводит соответствующие элементы и вычисляет площадь треугольника. Вычисления прекратить, если в качестве номера группы введен 0.
2.Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за 7 дней?
3.Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько амеб будет через 3, 6, 9, 12, ..., 24 часа.
4.Около стены наклонно стоит палка длиной х м. Один ее конец находится на расстоянии у м от стены. Определить значение угла а между палкой
иполом для значений х = k м и у, изменяющегося от 2 до 3 м с шагом h м.
5.На мебельной фабрике выпускают табуреты с тремя и четырьмя ногами (заготовки одинаковые). В наличии имеется 101 заготовка. Выбрать наилучшие сочетания (все варианты) изготовления табуретов, т.е. количество оставшихся ног должно стремиться к минимуму.
6.Составить алгоритм решения задачи: сколько можно купить быков, коров и телят, платя за быка 10 руб., за корову — 5 руб., а за теленка — 0,5 руб., если на 100 руб. надо купить 100 голов скота?
7.Доказать (путем перебора возможных значений), что для любых величин А, В, С типа Boolean следующие пары логических выражений имеют одинаковые значения (эквивалентны):
А) A OR В И В OR А; Б) A AND В И В AND A;
В) (A OR В) OR С И A OR С;
Г) (A AND В) AND С И A AND (В AND С) ;
8.Составить программу для проверки утверждения: «Результатами вычислений по формуле х2 +х+ 17 при 0≤х≤ 15 являются простые числа». Все результаты вывести на экран.
9.Составить программу для проверки утверждения: «Результатами вычислений по формуле x2+x+41 при 0≤х≤40 являются простые числа». Все результаты вывести на экран.
63
10.Составить программу-генератор простых чисел, в основу положить формулу 2х2 + 29 при 0 ≤ х ≤ 28.
11.Составить программу-генератор простых чисел, в основу
положить формулу 22x+1 +1 при 1≤ x ≤ 36 3
12.Составить программу-генератор чисел Пифагора а, b, с (с2 = а2 + b2).
Воснову положить формулы: a= m2—n2, b=2mn, с = m2 + n2 (m, n — натуральные, 1 < m < k, 1 < n < k, k — данное число). Результат вывести на экран в виде таблицы из пяти столбцов: m, n, а, b, с.
13.Составить программу, которая печатает таблицу умножения и сложения натуральных чисел в десятичной системе счисления.
14.Составить программу, которая печатает таблицу умножения и сложения натуральных чисел в шестнадцатеричной системе счисления.
15.Найти сумму всех n-значных чисел (1 ≤n ≤ 4).
16.Найти сумму всех n-значных чисел, кратных k (1 ≤ n ≤ 4).
17.Показать, что для всех n = 1, 2, 3, N
(15 + 25 + ... + n5) + (17 + 27 + ... + n7) = 2(1 + 2 + ... + n)4.
18.Составить алгоритм решения ребуса КТО + КОТ = ТОК (различные буквы обозначают различные цифры, старшая — не 0).
19.Составить программу, которая находит наибольшее значение отношения трехзначного числа к сумме его цифр.
20.Вычислить сумму кодов всех символов, которые в цикле вводятся с клавиатуры до нажатия на клавишу Esc.
21.Вычислить количество точек с целочисленными координатами, находящихся в круге радиуса R (R>0).
22.Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр (операции деления и нахождения остатка от деления не использовать).
23.Составить алгоритм решения ребуса РАДАР = (Р + А + Д)4 (различные буквы обозначают различные цифры, старшая — не 0).
24.Составить алгоритм решения ребуса МУХА + МУХА + + МУХА = СЛОН (различные буквы обозначают различные цифры, старшая - не 0).
25.Составить алгоритм решения ребуса ДРУГ — ГУРД = 2727 (различные буквы обозначают различные цифры, старшая — не 0).
26.Покупатель должен заплатить в кассу S руб. У него имеются купюры по 1, 5, 10, 50, 100, 500, 1000 и 10000 руб. Сколько купюр разного достоинства отдаст покупатель, если он начинает платить с самых крупных купюр?
27.Ежемесячная стипендия студента составляет N руб., а расходы на проживание превышают стипендию и составляют В руб. в месяц. Рост цен
64
ежемесячно увеличивает расходы на 3%. Составьте программу расчета суммы денег, которую необходимо единовременно попросить у родителей, чтобы можно было прожить учебный год (10 месяцев), используя только эти деньги и стипендию.
28.Составить программу, которая запрашивает пароль (например, четырехзначное число) до тех пор, пока он не будет правильно введен.
29.Найдите любое трёхзначные число, кратное заданному Р и не рав-
ное ему.
30.Известен начальный вклад клиента в банк и процент годового дохода. Определите, через сколько лет вклад превысит заданный размер и каков при этом будет размер вклада.
65