Лабораторная работа 5
Темы: Псевдокод. Множественный выбор. Другие конструкции циклов.
Задача 5.0 (устно)
Ряд 1/12 + 1/22 +... + 1/N2 при N → ∞ сходится к π2/6.
Если int n = 1000000;, то какой из циклов посчитает сумму?
a. for (int i = 1; i <= N; i++) sum += 1 / (i*i);
b. for (int i = 1; i <= N; i++) sum += 1.0 / i*i;
c. for (int i = 1; i <= N; i++) sum += 1.0 / (i*i);
d. for (int i = 1; i <= N; i++) sum += 1 / (1.0*i*i);
Задача 5.1 Напечатать все четные числа от 0 до n
//Задать int n = 20
//Определить цикл, в котором параметр i «пробегает» от 0 до n
//В теле цикла проверять если текущее значение i четное, то печатать i
public class Vse_chetny {
public static void main(String[] args) {
int n = 20;
for(int i = 0; i <= n; i++){
if(i % 2 == 0){
System.out.println(i);
}
}
} }
Задача 5.2 Задано число n. Найти его наибольший делитель, не равный n. (например n=30. Тогда наибольший делитель равен 15)
Идея: Начиная с n-1 перебирать натуральные числа i, сдвигаясь каждый раз на 1 влево по числовой оси и проверять делимость n на х
// Задать int n = 30
// Определить цикл, в котором параметр i «пробегает» от n-1 до 1
//В теле цикла проверять для текущего i условие (n%i==0)
//Если условие дает true, то печатать i и досрочно (break) выходить из //цикла, т.к. наибольший делитель найден.
public class Max_del {
public static void main(String[] args) {
int n = 30;
for(int i = n-1; i > 0; i--){
if(n % i == 0){
System.out.println(i);
}
}}
Вывод графиков функций
Находящийся внутри библиотеки stdlib.jar класс StdDraw, содержит методы для вывода в квадрант (0<= x <=1; 0<= y <=1) геометрических фигур: точки, отрезка, окружности и др.
Пример: график функции синус на отрезке числовой оси [0,10]
public class Grafic_sin {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (double x = 0; x<10.0; x+= 0.01){
double y = Math. sin (x);
StdDraw. point (x/10, (y+1)/2);
StdDraw. point (x/10, 0.5);
}
}
}
Задача 5.3 Создать программу, рисующую n случайных точек с координатами
x = Math.random();
y = Math.random();
Задача 5.4. Заменить в программе Задачи 5.3 точки на окружности с центрами в (x,y) и радиусами 0.01.
Задача 5.5 Создать программу, рисующую график функции у=x*sin(x) в [0,12]
Задача5.6 * (дополнительная)
Составить псевдокод и программу.
Найти и напечатать все простые делители целого положительного числа N
(N вводится с клавиатуры)
Дома.
Задача 5.7 Составить псевдокод и программу.
Для введенного с клавиатуры положительного целого числа N напечатать все степени 2-х, не превосходящие N
Задача 5.8 Оператор switch (разобрать самостоятельно)
Пусть тариф на оплату взятого напрокат автомобиля имеет вид
Количество дней проката | Стоимость 1 дня |
От 1 до 3 | |
От 3 до 7 | |
От 7 до 10 |
Составить программу, которая при вводе количества дней проката выводит стоимость одного дня и общую сумму платежа.
Задача 5.9 Составить псевдокод и программу.
Для введенного с клавиатуры положительного целого числа N получить в формате String его бинарное представление и вывести в окно консоли.
Указание. Правило получения знаков бинарного представления справа налево:
1)текущее число делят на два
2)остаток приписывают слева к бинарному представлению
3)ненулевую целую часть объявляют текущим числом и переходят на 1)
Пример текущее число13
Текущее число | Остаток | Бинарное представление |
Задача5.10. Используя метод random составить программу, отвечающую на вопрос «Какое из событий более вероятно (т.е. случается чаще): выпадение хотя бы одной единицы при подбрасывании кости 6 раз или выпадение хотя бы двух единиц при подбрасывании кости 12 раз