Основы программирования - Проверки входных данных, циклы. Урок №6.

preview_player
Показать описание
Организация проверки входных данных.
NaN и isNaN.
Циклы как явление. Циклы в алгоритмах.
Цикл while.
Цикл do-while.
Цикл for.
Рекомендации по теме
Комментарии
Автор

Дмитрий спасибо большущее. Ты лучший препод

АлексейФатьянов-юю
Автор

дз №1

<meta charset="UTF-8">
<script>
var x = +prompt("1-ое число!");
var y = +prompt("2-ое число!");
var z = +prompt("3-ое число!");
var res;

if(isNaN(x) || isNaN(y) || isNaN(z)) {
res = 'Не все числа введены корректно';
}

if ((x == y) || (x == z) || (y == z)) {
res = 'Невозможно найти среднее';
}
else if (((x > y) && (x < z)) || ((x < y) && (x > z))) {
res = x;
}
else if (((y > x) && (y < z)) || ((y < x) && (y > z))) {
res = y;
}
else {
res = z;
}
alert(res);

</script>

soulbit
Автор

решил сделать с проверкой на число и строки)
var num1, num2, answer;
for ( i = 0; i <= 5; i++) {

num1 = Math.round(Math.random() * 20);
num2 = Math.round(Math.random() * 20);
answer = prompt('Ответ сложения? ' + num1 + ' + ' + num2, '');

if((answer == null) || (answer == '')) break;
if(true){

while(isNaN(answer)){
answer = prompt('Пиши только цифры, попробуй еще: ' + num1 + ' + ' + num2);
}

if ((num1 + num2) == answer){
console.log('Правильно, ответ: ' + answer)
} else {
console.log('Неправильно, ответ: ' + (num1 + num2));
}
}
}

onelight
Автор

Почему именно while, а не for: для того чтобы цикл был бесконечный пока не будет введено три правильных ответа. Для этого инкремент был помещен в логический оператор правильного ответа.
var i = 0;
while(i < 3){
var x = Math.floor (Math.random () * 9);
var y = Math.floor (Math.random () * 9);
alert('x - ' + x);
alert('y - ' + y);
var z = prompt('x * y = ?');
if (z == x * y) {
alert("Правильно");
i++;
}else{
alert("Не правильно");
}
}

timatima
Автор

А если вводит 5, 544, показывает NaN, при 5.544 - показывает окей. Если дробное через запятую, он его не учитывает, как число? Что делать в таком случае?

roshlay
Автор

ДЗ №2

<script>
var right = 0;
for (var counter = 1; counter <= 10; counter++) {
var a =
var b =
var c = prompt(a+" * "+b+" = ?");
if (c == a*b){
alert("Верно");
right++;
}
else {
alert("Неверно");
}
}
alert(right+" из "+10);
</script>

RMaNbI-
Автор

Мало, плохо, но с любовью!
Задание 2.




let step;
for (step = 0; step < 10; step++){
function getRandomArbitrary1(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min
}
let res1 = getRandomArbitrary1(1, 20);

function getRandomArbitrary2(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min
}
let res2 = getRandomArbitrary2(1, 20);


x = +prompt('введите результат умножения ' + res1 + ' и ' + res2 );
while(isNaN(x)){
alert('Введите нормальное число')
x = +prompt('введите результат умножения ' + res1 + ' и ' + res2 );
}

if((res1 * res2) == x){
alert('Вы посчитали верно');
}
else if((res1 * res2) !=x) {
alert('Вы посчитали неверно');
}

}

Bugsy
Автор

function rand() {
return (Math.random()*10)+1|0;
}
for (var i = 0; i < 10; i++){
var x = rand(), y = rand();
var resu = prompt("Сколько будет "+x+" * "+y+" = ?");
if (x*y == resu){
alert("Правильно");
console.log("true");
}
else {
alert("Ошибка");
console.log("false");
}
}

runcode.ru.
Автор

var a = +prompt('Первое число');
var b = +prompt('Второе число');
var res;

while(isNaN(a)||isNaN(b)){
if(isNaN(a)){
a = +prompt('Введите пожалуйста первое число');
}
else{
b = +prompt('Введите пожалуйста второе число');
}
}

if(Number(a)){
res = (a + b);
}

alert(res);

Alien-pofc
Автор

18:00 Циклы
47:03 Цикл For
53:30 ДЗ для тупых (вроде меня)

stephencurry
Автор

Вторая задача.
<script>
for (i=0; i<5; i++) {
let x = Math.floor(Math.random() * 10);
let y = Math.floor(Math.random() * 10);
let res = x * y;
let userGuess = prompt("Сколько будет " + x + " * " + y + "?");
if (isNaN(userGuess)) {
alert("Неверный тип данных, введите число!")
} else if (userGuess == res) {
alert("Бинго! Вы правы!");
} else {
alert("Неправильный ответ!")
}
}
</script>

bezsaxara
Автор

Я до сих пор не могу понять логику, по которой math.random целого числа от мин до Макс работает

EUGEN
Автор

<script>
let x = +prompt("Insert digit");
let y = +prompt("Insert second digit");
let z = +prompt("Insert third digit");
let res;

if (isNaN(x) || isNaN(y) || isNaN(z)) {
let x = +prompt("Wrong data type! Only digits allowed. Insert digit");
let y = +prompt("Insert second digit");
let z = +prompt("Insert third digit");

} else if ((x == y) || (x == z) || (y == z)) {
res = "Not possible to check, some digits are equal";
}
else if ((x > y) && (x < z)) {
res = x;
}
else if ((y > x) && (y < z)) {
res = y;
} else if ((z > x) && (z < y)) {
res = z;
}

alert(res);
</script>

bezsaxara
Автор

for(i=0;i<10;i++){
var x =
var y =
var quest = +prompt("Введите ответ "+x+" * "+y+" =", "");
if(quest == x*y){
alert("Верно "+x+" * "+y+" = "+x*y);
}else{
alert("Введен не правильный ответ");
}
}

Strattocaster
Автор

ДЗ №1

<meta charset="utf-8">
<script>
var firstNum = +prompt ('Давай найдем среднее значение. Введи 1 рандомное число:');
var secondNum = +prompt ('Введи 2-ое число:');
var thirdNum = +prompt ('Введи 3-ое число:');
var result;

while(isNaN(firstNum)){
firstNum = +prompt ('Первое число введено неправильно');
}
while(isNaN(secondNum)){
secondNum = +prompt ('Второе число введено неправильно');
}
while(isNaN(thirdNum)){
thirdNum = +prompt ('Третье число введено неправильно');
}

if ((firstNum == secondNum) || (firstNum == thirdNum) || (secondNum == thirdNum)){
result = 'Невозможно найти среднее';
}

else if ((firstNum>secondNum && firstNum<thirdNum) || (firstNum<secondNum && firstNum>thirdNum)){
result = firstNum;
}

else if((firstNum<secondNum && secondNum<thirdNum) || (thirdNum<secondNum && secondNum<firstNum)){
result = secondNum;
}

else if((firstNum<thirdNum && thirdNum<secondNum) || (secondNum<thirdNum && thirdNum<firstNum)){
result = thirdNum;
}


alert('Среднее арифметическое этих чисел равно ' + result);

</script>

bonnieverdena