Даны 2 числа a и b. Нужно вывести на экран значение числа, которое больше.
Решение:
## [1] 10
Этот код можно перевести так: "Если число a
больше числа b
, вывести на экран a
, иначе вывести b
.
Дано число. Нужно узнать отрицательное оно или нет.
Решение:
Эта задача похожа на первую. Но сравнивать будем с 0.
## [1] "Неотрицательное"
Условие задачи 2, но теперь нужно определять, равно ли число нулю. То есть, если число равно 0, то выводить “Число равно 0!”.
Решение:
a <- 0
if (a >= 0) {
if (a == 0) {
print("Число равно 0!")
}else{
print("Положительное")
}
}else{
print("Отрицательное")
}
## [1] "Число равно 0!"
Даны 3 числа: a,b и c. Нужно вывести на экран значение числа, которое больше.
Решение:
Эту задачу можно представить в виде боя. Представим, что у нас есть три бойца: a
,b
и c
. Мы не можем определить лучшего бойца за один раунд. За раз могут драться только два бойца. Так же и у нас, мы можем сравнить за один if
только два числа. Давайте сравним двух бойцов, лучшего из них сравним с третьим.
a <- 10
b <- -2
c <- 0
if (a > b) {
if (a > c){
print(a)
}else{
print(c)
}
}else{
if (b > c){
print(b)
}else{
print(c)
}
}
## [1] 10
Либо с помощью логического И (&&):
## [1] 10
Дано число a. Вывести на экран четное оно или нет.
Решение:
Чтобы понять четное число или нет, нужно посмотреть на остаток от деления на 2. Если он равен 0, то число четное. Если равен 1, то нечетное. Для нахождения остатка в R используется %%
.
## [1] "Число четное!"
Дан массив, состоящий из рандомных чисел. Длина массива равна 15. Вывести на экран с 5 по 12 элементы массива.
Решение:
## [1] 7
## [1] 5
## [1] 1
## [1] 3
## [1] 3
## [1] 7
## [1] 7
## [1] 1
Дан массив, состоящий из рандомных чисел произвольной длины. Вывести на экран все элементы массива. Сделать код оптимальным в том смысле, что если длина массива поменяется вам не нужно будет переписывать код.
Решение:
## [1] 1
## [1] 3
## [1] 4
## [1] 8
## [1] 2
## [1] 7
## [1] 9
## [1] 2
Имеется 2 числа: вывести все целые числа, которые находятся между ними.
Решение:
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
Дан массив. Найти сумму всех элементов этого массива.
Решение:
## [1] 9
Дан массив. Найти произведение всех элементов этого массива.
Решение:
## [1] -150
Найти факториал числа \(n\) (\(n!\)). Помним, что \(0! = 1\)
Решение:
Дано число k. Нужно вывести треугольник с изчезающим первым значением. Например, k = 9
, тогда вывод должен быть следующим.
Решение:
## [1] 9 8 7 6 5 4 3 2 1
## [1] 8 7 6 5 4 3 2 1
## [1] 7 6 5 4 3 2 1
## [1] 6 5 4 3 2 1
## [1] 5 4 3 2 1
## [1] 4 3 2 1
## [1] 3 2 1
## [1] 2 1
## [1] 1
Для настольной игры используются карточки с номерами от 1 до N. Одна карточка потерялась. Найдите ее, зная номера оставшихся карточек.
Решение:
N <- 5
x <- sample(1:N, N-1)
s1 <- 0
s2 <- 0
for (i in 1:N) {
s1 <- s1 + i
}
for (i in 1:length(x)) {
s2 <- s2 + x[i]
}
print(s1 - s2)
## [1] 1
Задан массив и числа a, b. Вывести все индексы переменных, где выполняется \(a < x[i] < b\).
Решение:
a <- 0
b <- 10
x <- c(5, -10, 1, 100)
for (i in 1:length(x)) {
if (a < x[i] && x[i] < b) {
print(i)
}
}
## [1] 1
## [1] 3
Дан массив. Посчитать сумму всех четных элементов массива.
Решение:
x <- c(2, -1, 10, 15, 18, 21)
s <- 0
for (i in 1:length(x)) {
if (x[i]%%2 == 0) {
s <- s + x[i]
}
}
print(s)
## [1] 30
Есть переменная action. Она может быть равна либо “Сложить”, либо “Перемножить”. В зависимости от этой переменной нужно сложить или перемножить все элементы массива.
Решение:
action <- 'Cложить'
x <- c(1, 10, -5, 8, 23)
if (action == 'Сложить') {
s <- 0
for (i in 1:length(x)) {
s <- s + x[i]
}
print(s)
}else{
s <- 1
for (i in 1:length(x)) {
s <- s * x[i]
}
print(s)
}
## [1] -9200
По данному натуральном n вычислите сумму \(1!+2!+3!+...+n!\). В решении этой задачи можно использовать только один цикл.
Решение:
## [1] 153
Есть матрица состоящая из нулей. Нужно заполнить её таким образом, чтобы значение элемента, который находится в i-ой строчке и j-ом столбце, равно i + j.
Решение:
m <- matrix(data = 0, nrow = 4, ncol = 5)
for (i in 1:nrow(m)) {
for(j in 1:ncol(m)) {
m[i, j] <- i + j
}
}
print(m)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 2 3 4 5 6
## [2,] 3 4 5 6 7
## [3,] 4 5 6 7 8
## [4,] 5 6 7 8 9
Даны числа a и b (a < b). Нужно увеличивать число a на единицу и уменьшать число b на единицу пока число a меньше числа b.
Решение:
Дан массив длины n, состоящий из одних 0. Вы выбираете рандомное число от 1 до n (с помощью функции sample). Это рандомное число показывает индекс элемента массива, который нужно изменить с 0 на 1. После чего вы опять выбираете рандомное число. Это делается до тех пор пока массив не будет состоять из одних 1. Например: был массив с(0,0,0,0). Выпало рандомное число 3. Теперь массив выглядит так : c(0,0,1,0). Вы продолжаете так делать, пока все нули не исчезнут. Нужно посчитать, сколько раз выбиралось рандомное число.
Решение:
Нужно подкинуть монетку 10 раз. Сколько раз выпала “Решка” и “Орел” в общем числе подкидываний? Теперь подкиньте монетку 100/1000/10000 раз. Какую закономерность вы видите?
Подсказка: Для того чтобы подкинуть монетку, можно использовать функцию sample
, которая из двух значений (0 и 1, где 0 – “Решка”, а 1 – “Орел”) случайным образом выдает одно. И так n
раз.
Решение:
vec <- c()
vec2 <- c()
n <- 10
for (i in 1:n){
x <- sample(0:1, size = 1)
if (x == 0){
vec <- append(vec, 'Решка')
} else {
vec2 <- append(vec2, 'Орел')
}
}
print(length(vec) / n)
## [1] 0.5
## [1] 0.5
Закономерность состоит в том, что с ростом числа подбрасываний, вы получаете одинаковую вероятность для выпадение “Орла” и “Решки” (у каждого 0.5). Этот вывод – один из ключевых в теории вероятностей.