Практикум по программированию. Основы. Циклы

From AsIsWiki
(Difference between revisions)
Jump to: navigation, search
Line 127: Line 127:
  
 
7. Найти наибольший общий делитель (НОД) и наименьшее общее кратное (НОК) двух натуральных чисел.
 
7. Найти наибольший общий делитель (НОД) и наименьшее общее кратное (НОК) двух натуральных чисел.
Поиск НОД:
+
<pre>
  1 - если числа равны, взять любое из них в качестве ответа;
+
Поиск НОД:
  2 - определить большее из чисел;
+
1 - если числа равны, взять любое из них в качестве ответа;
  3 - заменить большее число разностью большего и меньшего;
+
2 - определить большее из чисел;
  4 – перейти к пункту 1.
+
3 - заменить большее число разностью большего и меньшего;
НОК двух натуральных чисел равно произведению этих чисел, деленному на их НОД
+
4 – перейти к пункту 1.
 +
НОК двух натуральных чисел равно произведению этих чисел, деленному на их НОД
 +
 
 +
Пример интерфейса:
 +
 
 +
Наибольший общий делитель (НОД)
 +
и наименьшее общее кратное (НОК)
 +
      двух натуральных чисел
 +
----------------------------------
 +
Введите два натуральных числа: 28 42
 +
----------------------------------
 +
НОД(28, 42) = 14
 +
НОК(28, 42) = 84
 +
</pre>
 
Решение:
 
Решение:
 
[[Практикум по программированию. Основы. Циклы. НОД и НОК#Java|Java]] ·
 
[[Практикум по программированию. Основы. Циклы. НОД и НОК#Java|Java]] ·
Line 141: Line 154:
  
 
8. Табулирование функции Y = X<sup>2</sup> + 1 на отрезке [A, B] с шагом H.
 
8. Табулирование функции Y = X<sup>2</sup> + 1 на отрезке [A, B] с шагом H.
Необходимо вывести на экран таблицу значений функции на заданном отрезке.
+
<pre>
 +
Необходимо вывести на экран таблицу значений функции на заданном отрезке.
 +
 
 +
Пример интерфейса:
 +
 
 +
Табулирование функции Y = X^2 + 1
 +
    на отрезке [A, B] с шагом H
 +
-----------------------------------
 +
Введите границы отрезка A и B: -2 2
 +
Введите шаг табулирования H: 0,5
 +
-----------------------------------
 +
    X        Y
 +
  -2,000    5,000
 +
  -1,500    3,250
 +
  -1,000    2,000
 +
  -0,500    1,250
 +
    0,000    1,000
 +
    0,500    1,250
 +
    1,000    2,000
 +
    1,500    3,250
 +
    2,000    5,000
 +
</pre>
 
Решение:
 
Решение:
 
[[Практикум по программированию. Основы. Циклы. Табулирование функции#Java|Java]] ·
 
[[Практикум по программированию. Основы. Циклы. Табулирование функции#Java|Java]] ·
Line 156: Line 190:
 
  Высоты следующих прямоугольников: f(A + H), f(A + H + H), ...
 
  Высоты следующих прямоугольников: f(A + H), f(A + H + H), ...
 
  Искомая площадь выражается суммой площадей всех прямоугольников.
 
  Искомая площадь выражается суммой площадей всех прямоугольников.
 +
&nbsp;
 +
Пример интерфейса:
 +
&nbsp;
 +
  Вычисление интеграла от функции X^2
 +
    методом левых прямоугольников
 +
-------------------------------------
 +
  Введите границы интегрирования: 0 3
 +
  Введите количество разбиений N: 1000
 +
-------------------------------------
 +
  S = 8,959558
 
Решение:
 
Решение:
 
[[Практикум по программированию. Основы. Циклы. Метод левых прямоугольников#Java|Java]] ·
 
[[Практикум по программированию. Основы. Циклы. Метод левых прямоугольников#Java|Java]] ·

Revision as of 11:25, 22 March 2016

Назад · Оглавление · Дальше


Циклы

1. Задан ряд чисел от 1 до N. Найти сумму квадратов этих чисел.

12 + 22 + 32 + ... + N2
 
Пример интерфейса:
 
 Сумма квадратов чисел от 1 до N
---------------------------------
 Введите N: 123
---------------------------------
 S = 627874

Решение: Java · C++ · Pascal · JavaScript


2. Вычислить факториал натурального числа N.

6! = 1 * 2 * 3 * 4 * 5 * 6 = 720

Пример интерфейса:

 Расчет факториала
-------------------
 Введите число: 10
-------------------
 10! = 3628800

Решение: Java · C++ · Pascal · JavaScript


3. Дано число X и последовательность: 1, 1 + 1/2, 1 + 1/2 + 1/3, ...
Найти в этой последовательности первое число Y > X.

Первое число в последовательности Y = 1
далее, переходим к следующему Y = Y + 1 / i пока не выполнится условие Y > X

Пример интерфейса:

 Поиск элементов ряда:
 1, 1 + 1/2, 1 + 1/2 + 1/3 ...
-------------------------------
 Введите границу поиска: 3
-------------------------------
 Y = 3,019877344877

Решение: Java · C++ · Pascal · JavaScript


4. Написать программу возведения вещественного числа в степень с натуральным показателем.

AN, где A - вещественное; N - натуральное
Необходимо N - раз выполнить умножение A * A * A ...
 
Пример интерфейса:
 
 Вычисление степени с натуральным показателем A^N
--------------------------------------------------
 Введите основание степени A: 2,5
 Введите показатель степени N: 8
--------------------------------------------------
 A^N = 1525,88

Решение: Java · C++ · Pascal · JavaScript


5. Найти число Фибоначчи с заданным номером.

В 1202 году, рассматривая задачу о размножении кроликов,
Леонардо Фибоначчи получил последовательность чисел,
в которой каждое число есть сумма двух предыдущих: 1, 1, 2, 3, 5, 8, ... 

Пример интерфейса:

 Поиск числа Фибоначчи с заданным номером N
--------------------------------------------
 Введите номер числа N: 10
--------------------------------------------
 F(10) = 55,00

Решение: Java · C++ · Pascal · JavaScript


6. Определить, является ли заданное натуральное число N простым.

Простые числа делятся только на единицу и на себя.
Сравните два алгоритма:
- деление на все числа от 2 до N - 1;
- деление на все числа от 2 до N / 2

Пример интерфейса:

 Поиск простых чисел
---------------------
 Введите число: 127
---------------------
 Число 127 - простое

Решение: Java · C++ · Pascal · JavaScript


7. Найти наибольший общий делитель (НОД) и наименьшее общее кратное (НОК) двух натуральных чисел.

Поиск НОД:
 1 - если числа равны, взять любое из них в качестве ответа;
 2 - определить большее из чисел;
 3 - заменить большее число разностью большего и меньшего;
 4 – перейти к пункту 1.
НОК двух натуральных чисел равно произведению этих чисел, деленному на их НОД

Пример интерфейса:

 Наибольший общий делитель (НОД)
 и наименьшее общее кратное (НОК)
      двух натуральных чисел
----------------------------------
 Введите два натуральных числа: 28 42
----------------------------------
 НОД(28, 42) = 14
 НОК(28, 42) = 84

Решение: Java · C++ · Pascal · JavaScript


8. Табулирование функции Y = X2 + 1 на отрезке [A, B] с шагом H.

Необходимо вывести на экран таблицу значений функции на заданном отрезке.

Пример интерфейса:

 Табулирование функции Y = X^2 + 1
    на отрезке [A, B] с шагом H
-----------------------------------
 Введите границы отрезка A и B: -2 2
 Введите шаг табулирования H: 0,5
-----------------------------------
     X        Y
   -2,000    5,000
   -1,500    3,250
   -1,000    2,000
   -0,500    1,250
    0,000    1,000
    0,500    1,250
    1,000    2,000
    1,500    3,250
    2,000    5,000

Решение: Java · C++ · Pascal · JavaScript


9. Вычислить площадь фигуры под графиком функции Y = X2 на отрезке [A, B] методом левых прямоугольников.

Фигура разбивается на множество прямоугольников.
Основания у всех прямоугольников равны: H = (B - A) / N,
где N - количество разбиений (например 10000)
Высота первого прямоугольника: f(A) = A2
Высоты следующих прямоугольников: f(A + H), f(A + H + H), ...
Искомая площадь выражается суммой площадей всех прямоугольников.
 
Пример интерфейса:
 
 Вычисление интеграла от функции X^2
    методом левых прямоугольников
-------------------------------------
 Введите границы интегрирования: 0 3
 Введите количество разбиений N: 1000
-------------------------------------
 S = 8,959558

Решение: Java · C++ · Pascal · JavaScript


10. Методом деления отрезка пополам, найти корень уравнения X2 - 2 = 0 на отрезке [A, B] с точностью E.

Сначала полагаем, что корень – это середина отрезка [A, B].
Затем выбираем тот из отрезков [A, X] или [X, B],
на концах которого функция X2 - 2 имеет противоположные знаки.
Выбранный отрезок снова делим пополам. 
Продолжаем до тех пор, пока длина отрезка не будет меньше 2 * E.

Решение: Java · C++ · Pascal · JavaScript


11. Автомат отпускает максимум N единиц товара по Z рублей за одну единицу и выдает сдачу. У каждого покупателя S рублей.
Написать программу обслуживания очереди из K покупателей.

После обслуживания каждого покупателя, автомат должен сообщать:
- количество купленных единиц товара;
- сдача;
- сколько единиц товара осталось.

Решение: Java · C++ · Pascal · JavaScript


12. Необходимо собрать статистику о знаниях иностранных языков в группе из N человек.

Каждый человек вводит:
1 - если он изучал английский язык;
2 - немецкий;
3 - французский;
0 - если не изучал никакой.

Решение: Java · C++ · Pascal · JavaScript


13. Детали цилиндрической формы определяются параметрами: H - высота, R - радиус основания, P - плотность материала.
Пресс штампует детали, отличающиеся по высоте на 1 (H = 1 ... N, где N - высота самой длинной детали). Рассчитать массы деталей.

V = H * Pi * R2
M = P * V

Решение: Java · C++ · Pascal · JavaScript


14. Определить все счастливые билеты с номерами от N до M.

В каждом билете необходимо выделить 6 цифр номера.
Билет счастливый, 
если сумма первых трех цифр равняется сумме последних трех цифр номера.

Решение: Java · C++ · Pascal · JavaScript


15. Имеется серия измерений параметров треугольника, в которой (в произвольном порядке) встречаются различные комбинации параметров.
Определить площадь треугольника по номеру комбинации.

Номера комбинаций параметров:
1 - основание и высота;
2 - две стороны и угол между ними;
3 - три стороны;
0 - прекратить обработку.

Решение: Java · C++ · Pascal · JavaScript


16. Найти все совершенные числа до заданной границы поиска.

Натуральное число называется совершенным, 
если оно равно сумме всех своих делителей, не считая его самого.
Например: 6 = 1 + 2 + 3 - совершенное число

Пример интерфейса:

 Поиск совершенных чисел
-------------------------
 Введите границу поиска: 10000
-------------------------
 Совершенные числа: 6 28 496 8128 

Решение: Java · C++ · Pascal · JavaScript


17. Человек и компьютер по очереди называют числа от 1 до 10, которые складываются одно за другим. Выигрывает тот, кто первым достигнет 100. Составить алгоритм, выигрышный для машины.

Пусть первым играет человек и называет число X.
Чтобы машина выиграла ей надо:
- назвать число Y = 12 - X
- на следующих шагах называть числа Y = 11 - X

Пример интерфейса:

---------------------- И Г Р А ----------------------
 Вы и компьютер по очереди называете числа: 1 ... 10
 Числа складываются.
 Кто первым достигнет 100, тот выиграл.
 Ваш ход - первый.
-----------------------------------------------------
   Ваш ход: 5
 Компьютер: 7  Сумма: 12
   Ваш ход: 8
 Компьютер: 3  Сумма: 23
   Ваш ход: 9
 Компьютер: 2  Сумма: 34
   Ваш ход: 4
 Компьютер: 7  Сумма: 45
   Ваш ход: 1
 Компьютер: 10 Сумма: 56
   Ваш ход: 6
 Компьютер: 5  Сумма: 67
   Ваш ход: 9
 Компьютер: 2  Сумма: 78
   Ваш ход: 7
 Компьютер: 4  Сумма: 89
   Ваш ход: 2
 Компьютер: 9  Сумма: 100
-----------------------------------------------------
 Выиграл компьютер!

Решение: Java · C++ · Pascal · JavaScript


18. Найти все двузначные числа, сумма квадратов цифр которых делится на 13.

Любое двузначное число A можно представить в виде A = N * 10 + M,
где N - количество десятков, M - количество единиц.
Если S = N2 + M2 делится на 13 без остатка, значит это искомое число.
 
Пример интерфейса:
 
        Поиск всех двузначных чисел,
 сумма квадратов цифр которых делится на 13
--------------------------------------------
 15 18 23 32 46 47 51 64 69 74 79 81 96 97

Решение: Java · C++ · Pascal · JavaScript



Назад · Оглавление · Дальше

Personal tools
Namespaces

Variants
Actions
Navigation
Tools