- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
/*дан набор целых чисел. задача: написать функцию.
которая вернет наибольшее значение из ряда
неделимое на заданное число. числитель указывается в виде
порядкового номера, который равен позиции в этом же ряде.
Позиция в ряде начинается с 1, не с 0.
*/
do{
var prog="true";
var numlen, div,div0=1, nums=[], res=0, out=[];
// выбор режима заполнения
var filling= confirm("Хотите заполнить числовой ряд автоматически?");
if (filling === true)
{
//определение длинны нового ряда
//с проверкой на нулевую длинну ряда
do{
var numlen=+((Math.random() * 10).toFixed(0)||10);
}
while(numlen===0);
alert("длинна числового ряда: " + numlen);
// автоопределение данных нового ряда
for (numlenI = 0;numlenI < numlen;numlenI++)
{
nums[numlenI] = +((Math.random() * 10).toFixed(0)||"10");
alert(nums);
};
}
else // ручное определение данных ряда
{
// что будет. если нажать cancel?
nums= ((prompt("Введите новый ряд целых чисел")) || "1");
alert("длинна числового ряда: " + nums.length);
};
/*варианты добавления:
1) добавить подциклы if с alert'ами в виде
//вертикального меню
*/
//выбираем порядковый номер числителя с валидатором
do {
div0 = Number((prompt("Задайте порядковый номер числителя из ряда", 1))||1);
var control=0;
if(div0<1||div0>numlen||isNaN(div0)){
alert("Нужно ввести в пределах диапазона ряда");
}
else control=1;
}
while ( control===0);
// проверяем деление на ноль
do{
control=0;
if(nums[div0-1]===0){
div0=+prompt("Задайте другой порядковый номер числителя");
}
else{
control=1;
div = (nums[div0 - 1]);
}
}
while(control===0);
//заносим неделемы числа
alert(" числитель: " + div);
for (i = 0;i < nums.length;i++)
{
if (nums[i] % +div != 0)
{
out.push(+nums[i]);
}
};
//вычисляем наибольшее значение с валидаторами
res=Math.max.apply(null,out);
if(isNaN(res)){
alert(div);
alert("Делятся все числа \n или что-то пошло не так");
}
else alert("наибольшее неделимое число из ряда: " + res);
prog = confirm("хотите продолжить?");
} while(prog === true);
alert("Спасибо за тестирование программы 8-) ®©");
Прошу обливать кодец критикой. Как уменьшить это ковно? Код писался намеренно без использования обьектов, функций и рег выражений. Вся лажа в процессе изучения.