Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.04.2019, 13:12
Новичок на форуме
Отправить личное сообщение для DowL_HH4 Посмотреть профиль Найти все сообщения от DowL_HH4
 
Регистрация: 24.04.2019
Сообщений: 1

Найти минимальное положительное число
Привет всем, есть [spoiler=Задача]Задается количество элементов массива не более 100. Программа должна запросить столько чисел у пользователя. Элементами массива будут целые числа от -1000 то 1000. Если введено количество меньше 1, то количество элементов считается равным 10, а элементы заполняются случайными числами.
Найти минимальное положительное число. Это число нужно выделить. Если таких чисел несколько, выделить все.[/spoiler]
Есть код к подобной задаче, только он ищет числа оканчивающиеся на 8. Никак не могу понять, где и как изменить алгоритм и на какой. Спасибо.
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>WUT?!</title>
		<script>
			function one(x) 
			{
				document.getElementById("in").innerHTML = "";
				document.getElementById("input").innerHTML = "";
				document.getElementById("out").innerHTML = "";
				var length = x >= 1 ? x <= 100 ? x : 100 : 10;
				var mass1 = []; 
				var mass2 = []; 
				if(x < 1)
				{
					for(var i = 0, k = 0; i < length; i++)
					{
						mass1[i] = getRandom(-1000, 1000);
						if( (mass1[i] % 10 == 8)  && (mass1[i] > 0)  && (mass1[i] % 2 == 0) )
						{
							mass2[k] = mass1[i];
							k++;
						}
					}		
					if(mass2.length == 0)
					{
						for(var i = 0; i < length; i++) document.getElementById("in").innerHTML += mass1[i] + "</br>";
						document.getElementById("out").innerHTML = "Не найдено подходящих элементов";
					}
					else
					{
						var min = mass2[0];
						for(var i = 0; i < mass2.length; i++)
						{
							if(mass2[i] < min)
							{
								min = mass2[i];
							}
						}
						for(var i = 0; i < length; i++){
							if(mass1[i] == min)
								document.getElementById("in").innerHTML += "<span style=" + "background-color:red" + ">" + mass1[i] + "</SPAN>" + "</br>";
							else document.getElementById("in").innerHTML += mass1[i] + "</br>";
						}
						document.getElementById("out").innerHTML = "Минимальное положительное число': " + min;
					}
				}
				else
				{
					createInputs(length);
				}
			}
			function two(x) 
			{
				document.getElementById("in").innerHTML = "";
				document.getElementById("out").innerHTML = "";
				var mass1 = []; 
				var mass2 = []; 
				for(var i = 0, k = 0; i < x; i++)
				{
					mass1[i] = Number(document.getElementById("in" + i).value);
					if( (mass1[i] % 10 == 8)  && (mass1[i] > 0)  && (mass1[i] % 2 == 0) )
					{
						mass2[k] = mass1[i];
						k++;
					}
				}
				if(mass2.length == 0)
				{
					for(var i = 0; i < x; i++) document.getElementById("in").innerHTML += mass1[i] + "</br>";
					document.getElementById("out").innerHTML = "Не найдено подходящих элементов";
				}
				else
				{
					var min = mass2[0];
					for(var i = 0; i < mass2.length; i++)
					{
						if(mass2[i] < min)
						{
							min = mass2[i];
						}
					}
					for(var i = 0; i < x; i++){
						if(mass1[i] == min)
							document.getElementById("in").innerHTML += "<span style=" + "background-color:red" + ">" + mass1[i] + "</SPAN>" + "</br>";
						else document.getElementById("in").innerHTML += mass1[i] + "</br>";
					}
					document.getElementById("out").innerHTML = "Минимальное положительное число: " + min;
				}		
			}
			function getRandom(min, max)
			{
			  return Math.floor(Math.random() * (max - min) + min);
			}

			function createInputs(count)
			{
				var result = "<form onsubmit=\"two(" + count + ");return false\">";
				for (var i = 0; i < count; i++)
				{
					result += "<input type='text' id='in"+i+"' /><br />";
				}
				result +="<input type=\"submit\" value=\"Сгенерировать\"></form>";
				document.getElementById("input").innerHTML = result;
			}
		</script>
	</head>
	<body>
		<form onsubmit="one(length.value);return false" style =" display : inline">
			<label>X</label>
			<input type="number" name="length" size=3 value=-1 required>
			<input type="submit" value="Сгенерировать ">
			<p id="in"></p>
			<p id="out"></p>
		</form>
		<div id="input"></div>
	</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 29.04.2019, 18:44
Интересующийся
Отправить личное сообщение для Stownheidg Посмотреть профиль Найти все сообщения от Stownheidg
 
Регистрация: 09.08.2017
Сообщений: 16

const createRandArr = (min, max, length = 10) => {
  let arr = [];
  for (let i = 0; i < length; i++) arr.push(Math.round(Math.random() * (max - min) + min));
  return arr;
};

const arr = createRandArr(-100, 100);

const findMinPositive = arr => Math.min.apply(null, arr.filter(number => number > 0));

console.log(findMinPositive(arr), arr);
Ответить с цитированием
  #3 (permalink)  
Старый 29.04.2019, 19:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Stownheidg,
вариант...
const createRandArr = (min, max, length = 10) => Array.from({length}, () => min + Math.random() * (max - min)|0);
const arr = createRandArr(-100, 100);
const findMinPositive = arr => Math.min(...arr.filter(number => number > 0));
console.log(findMinPositive(arr), arr);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертер (перевод) систем счисления helloterry8 Общие вопросы Javascript 7 11.05.2018 22:24
Угадай число. Помогите написать скрипт и по возможности объяснить, как работает Vadim Zhizherin Общие вопросы Javascript 3 04.05.2018 21:09
игра угадай число. что я сделала не так? 2 раза выбираю число и он выкидывает... olikbel2017 Общие вопросы Javascript 8 07.10.2017 01:41
backbone-validate не срабатывает zlodiak Backbone.js 3 30.05.2016 03:14
Как найти наибольшее число и ввести его на экран? Ivan152 Оффтопик 2 20.05.2012 20:13