Сгенерировать 2 последовательности и узнать сколько в них одинаковых элементов
Сгенерировать последовательность с помощью датчика случайных чисел и обработать задание:сколько соответствующих элементов двух последовательностей с одинаковым количеством элементов совпадают. Массивы не используются.
Помогите, пожалуйста, знаю как сравниваются числа, как считается количество элементов в последовательности, а вот как сравнить соответствующие элементы и узнать сколько их, что-то не могу понять. Заранее спасибо! |
Будьте любезны, Ваш код.
|
Ирина Владимировна,
1 способ.Генерировать 2 последовательности и сравнивать последние добавленные элементы на равенство. 2.Превратить заранее сгенерированные последовательности в массивы с помощью str.split('') и затем последовательно сравнить элементы этих массивов. 3.Взять нужный элемент последовательности для сравнения с помощью str.substr(start, 1) |
nerv_,
var n=prompt("Введите количество чисел в последовательности:"," "); n=n*1; var a; var b; var i=1; var j=1; for(;i<=n;i++) {a=Math.round(-100+201*Math.random()); document.write(a); if (i<n) document.write(";");} document.write("<br>"); for(;j<=n;j++) {b=Math.round(-100+201*Math.random()); document.write(b); if (j<n) document.write(";");} генерирует 2 последовательности с одинаковым количеством элементов, как найти элементы которые совпадают не знаю. |
рони,
Спасибо, попробую, надеюсь получится. |
Ирина Владимировна,
Вариант 1 ...
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
b{
color: #FF0000;
}
</style>
</head>
<body>
<script type="text/javascript">
function f() {
var n=+prompt("Введите количество чисел в последовательности:","50");
for (var c = "", d = "", e = 0, g = 0; g < n; g++)
var a = Math.round(9 * Math.random()),
b = Math.round(9 * Math.random()),
c = c + (a == b ? (e++, "<b>" + a + "</b>") : a),
d = d + (a == b ? "<b>" + b + "</b>" : b);
return c+"<br />"+d+"<br />"+e
};
document.write(f())
</script>
</body>
</html>
|
Генерирует два массива одинаков длины, заполненные радномными элементами.
Возвращается количество совпавших пар:
var compare_random_array = function(i) {
var random = Math.random(),
count = 0;
(random * i).toFixed(i).slice(2).split('').every(function(i, j, array) {
i == array[j]*random|0 && count++;
return true;
});
return count;
}
alert(compare_random_array(10));
|
Цитата:
вроде только один (random * i).toFixed(i).slice(2).split('') и что будет если вызвать не compare_random_array(10) а например compare_random_array(30) |
Цитата:
var arrays = [];
var compare_random_array = function(i) {
var random = Math.random(),
count = 0;
(random * i).toFixed(i).slice(2).split('').every(function(element, i, array) {
var array2 = random * i|0;
arrays.push(element, ':', array2, '\n');
element == array2 && count++;
return true;
});
return count;
}
var count = compare_random_array(12);
alert(arrays.join('') + '\nсовпадений пар:' + count);
PS: писался пример для забавы, поэтому косяки править лень. |
спасибо,
теперь понятно, что вы имели в виду под вторым массивом заполненным радномными элементами |
| Часовой пояс GMT +3, время: 09:51. |