Skip to content

18.09.2011

2.Условная команда

Итак вторая лекция курса ОПр:

Задания

  1. Велосипедист проезжает S км  за T часов. С какой средней скоростью он едет?
  2. Мальчик плюнул прямо вверх со скоростью v = 10 м/сек. Через сколько времени он пожалеет об этом? Сопротивление воздуха не учитывать, ускорение свободного падения g принять за 10 м/сек2.
  3. Дано целое число. Определить значение его самой младшей цифры. Воспользоваться арифметической операцией %.
  4. Дано трехзначное целое число. Определить сумму его цифр.
  5. Напечатать большее из трех чисел: x, y, и z.


№1:

Велосипедист проезжает S км  за T часов. С какой средней скоростью он едет?

Известно, что V=S\T. Осталось записать это в javascript:

<script>
s = 15;
t = 3;
alert(s/t);
</script>

№2:
Мальчик плюнул прямо вверх со скоростью v = 10 м/сек. Через сколько времени он пожалеет об этом? Сопротивление воздуха не учитывать, ускорение свободного падения g принять за 10 м/сек2.

Придется вспомнить физику). Можно рассматривать задачу как тело (точнее то, из-за чего мальчик вскоре пожалеет) брошенное под углом к горизонту. Угол в нашем случае равен 90. Время поднятия к максимальной высоте t1 равно времени падения с максимальной высоты t2 и равно v0*sin(a)/g. Так как синус 90 = 1 формулу можно записать как t1=t2=v0/g. Но так как мальчик пожалеет о своем поступке только тогда, когда «тело» прилетит обратно на хозяина,  нам нужно время t1+t2=2*t1. Осталось записать сам код:

<script>
v0 = 10;
g = 10;
t1 = v0/g;
alert(2*t1);
</script>

№3:

Дано целое число. Определить значение его самой младшей цифры. Воспользоваться арифметической операцией %.

<script>
n = 123;
alert(123%10);
</script>

Действительно если взять остаток от деления на 10 получим младший разряд. Более интересная следующая задача.

№4:

Дано трехзначное целое число. Определить сумму его цифр.

Последнюю цифру мы определили в прошлой задаче. Теперь наша задача определить старшие разряды, а потом добавить получившиеся цифры. Как же добыть например 2 цифру? Пусть у нас есть число 1234. Возьмем остаток от деления на 100 : 1234 % 100 = 34, затем отнимем от него младший разряд и делим на 10 : (34 — 34%10)/10 = 3. Таким способом можно вычислить любой разряд числа X (n — разряд): (x % 10n -(x % 10n)%10n-1)/10n-1. Для этой формулы понадобится функция Math.pow(a, b), которая описана в предыдущей статье. Она возводит число a в степень b.
Пишем код:

<script>
x = 234;
sum = 0; //переменная в которой хранится сумма
n = 1;   //находим левую цифру (в нашем случае 4)
sum = sum + (x % Math.pow(10, n) - x % Math.pow(10, n) % Math.pow(10, n-1))/Math.pow(10, n-1);
n = 2;
sum = sum + (x % Math.pow(10, n) - x % Math.pow(10, n) % Math.pow(10, n-1))/Math.pow(10, n-1);
n = 3;
sum = sum + (x % Math.pow(10, n) - x % Math.pow(10, n) % Math.pow(10, n-1))/Math.pow(10, n-1);
alert(sum);
</script>

Вот такой получился непонятный код. Когда мы будем знать циклы этот код будет проще, хотя, думаю, есть и проще варианты, но мой именно вот этот. Например такой:

<script>
n = 234;
sum = 0;
x = n % 10;
m = n - x;
n = m/10;
sum = sum + x; // можно записать как sum += x;
x = n % 10;
m = n - x;
n = m/10;
sum = sum + x;
x = n % 10;
m = n - x;
n = m/10;
sum = sum + x;
alert(sum);
</script>

Разница в том что мой код может вычислить любой разряд числа не вычисляя предыдущий.
Есть еще один вариант решения, объяснять его я не буду, так как тут используется то, что мы еще не учили:

<script>
x = 234;
sum = 0;
x = x + "";
for(i = 0; i < x.length; i++)
{
  sum += x.charAt(i)-0;
}
alert(sum);
</script>

№4
Напечатать большее из трех чисел: x, y, и z.
Мое решение

<script>
x = 1;
y = 2;
z = 3;
if (y > x)
  x = y;
if (z > x)
  x = z;
alert(x);
</script>

На мой взгляд одно из лучших решений, недостаток его только в том что значение переменной x может быть утрачено, но и это можно исправить :

<script>
x = 1;
y = 2;
z = 3;
max = x;
if (y > max)
  max = y;
if (z > max)
  max = z;
alert(max);
</script>

Вот и решены все задачи =)

Share your thoughts, post a comment.

(required)
(required)

Note: HTML is allowed. Your email address will never be published.

Subscribe to comments