Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 15.12.2019
Сообщений: 15
1

Нахождение прогрессии в массиве

08.05.2022, 22:31. Показов 2850. Ответов 8

Author24 — интернет-сервис помощи студентам
Задан массив с целыми числами. Узнать, образуют ли значения его элементов арифметическую прогрессию. Если образуют, то вывести разность прогрессии. Если нет, то вывести "прогрессии нет".

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function zadanie1() {
var n = parseInt(document.getElementById('m').value);
var mas = [];
for ( var i = 0; i < num; i++) {
 mas.push(Math.round(Math.random() * 100));
}
var mas1 = [];
var mas2 = mas.splice("");
var prgrss = mas => {
    var d = mas2[1] - mas2[0];
    for(let i = 2; i < mas2.length; i++)
        if((mas2[i] - mas1[i - 1]) != d) {
            alert("прогресии нет" );
        }
    document.getElementById("res14").innerHTML="Разность массива: " + d;
}
}
Не понимаю, как сделать, чтобы в случае else вышла разность.
Нужно массив задавать самостоятельно, у меня здесь рандомное задавание элементов массива.
Помогите пожалуйста

Добавлено через 2 часа 18 минут
В общем, чуть изменил код, все равно работает не очень, но хотя бы работает...
Ввод элементов массива сделал с клавиатуры.
Где ошибки?

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function zadanie1() {
var num = document.getElementById("m").value; 
var mas = []; mas=num.split(" ");
for ( var i = 0; i < num; i++) {
 mas.push(Math.round(Math.random() * 100));}
var mas1 = [];
var mas2 = mas.splice("");
var d = mas2[1] - mas2[0];
    for(let i = 2; i < mas2.length; i++) {
        if((mas2[i] - mas1[i - 1]) != d) {
            document.getElementById("result1").innerHTML="прогрессии нет ";
        }else{
    document.getElementById("result1").innerHTML="Разность массива: " + d;
}
}
}
выводит на экран только "прогрессии нет". Даже если она есть.
Если поменять document местами, то тогда разность прогрессии находит . Даже если прогрессии нет. В таком случае просто находит разность между вторым и первым символом массива и выводит ее на экран.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.05.2022, 22:31
Ответы с готовыми решениями:

Нахождение суммы геометрической прогрессии
Помогите написать программу для нахождения суммы геометрической прогрессии если q= 0,5

Нахождение суммы геометрической прогрессии
Нахождение суммы геометрической прогрессии аргументом которой будет количество элементов в ней Это...

Нахождение n-го члена арифметической прогрессии
Помогите найти ошибку #include &lt;iostream&gt; int main() { int a,n = 0; int d = 0;...

Функция: нахождение суммы геометрической прогрессии
Написать function(функции) для нахождения суммы геометрической прогрессии 1,2,4,8,...,100. за...

8
1791 / 940 / 382
Регистрация: 26.11.2014
Сообщений: 1,917
Записей в блоге: 1
08.05.2022, 23:34 2
Данный код корректно отрабатывает случай, когда все элементы массива равны (это также арифметическая прогрессия!) и выводит значение разницы прогрессии (0).
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var arrInt = []
 
for (i = 0; i < 3; i++) {
    let randomIntNumber = Math.round(Math.random() * 10)
    arrInt.push(randomIntNumber)
}
 
arrInt.sort((a, b) => a - b)
 
var diff01 = arrInt[1] - arrInt[0]
var diff12 = arrInt[2] - arrInt[1]
 
log(arrInt)
 
if (diff12 == diff01) {
    log(`diff = ${diff01}`)
} else {
    log('no progression')
}
0
0 / 0 / 0
Регистрация: 15.12.2019
Сообщений: 15
09.05.2022, 23:33  [ТС] 3
NTHing, что-то не совсем пойму с этим logom...

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function zadanie1() {
var num = document.getElementById("m").value; 
var mas = []; mas=num.split(" ");
var mas1 = [];
var mas2 = mas.splice("");
for (i = 0; i < 3; i++) {
    let numb = Math.round(Math.random() * 10)
    mas2.push(numb)
}
 
mas2.sort((a, b) => a - b)
 
var diff01 = mas2[1] - mas2[0]
var diff12 = mas2[2] - mas2[1]
 
log(mas2)
 
if (diff12 == diff01) {
    log(`dif = ${diff01}`)
} else {
    document.getElementById("result1").innerHTML="нет прогрессии ";
}
}
как вставить код правильно, чтобы массив был с ввода клавиатуры и ответ по кнопке вызывался?
log, к сожалению, не совсем понятен, и чем его заменить, чтобы не только в консоли работало, а и на странице.
0
1791 / 940 / 382
Регистрация: 26.11.2014
Сообщений: 1,917
Записей в блоге: 1
10.05.2022, 13:34 4
Лучший ответ Сообщение было отмечено Brianz как решение

Решение

PHP/HTML
1
2
3
4
5
6
7
8
9
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
<body>
    <p>Введите три целых числа через запятую</p>
    <input id="inp">
    <button id="btn">Проверить</button>
    <p id="res"></p>
    <script>
        btn.addEventListener('click', zadanie1)
        function zadanie1() {
            // var res = document.querySelectorAll('#res span')
            var inputData = inp.value
            var arrInp = inputData.split(',')
            var strFall = `\n Введённые числа не образуют арифметическую прогрессию`
 
            arrInp.sort((a, b) => a - b)
            if (arrInp.length == 3) {
                var diff01 = arrInp[1] - arrInp[0]
                var diff12 = arrInp[2] - arrInp[1]
 
                console.log(arrInp)
 
                if (diff12 == diff01) {
                    console.log(`diff = ${diff01}`)
                    var strDone = `\n Введённые числа образуют арифметическую прогрессию \n Разность прогрессии: ${diff01}`
                    res.innerText += strDone
                } else {
                    console.log('no progression')
                    res.innerText += strFall
                }
            } else {
                res.innerText = ''
            }
            inp.value = ''
        }
    </script>
</body>
1
0 / 0 / 0
Регистрация: 15.12.2019
Сообщений: 15
10.05.2022, 19:44  [ТС] 5
NTHing, спасибо большое за ответы, но ругается на 7 строку - btn.addEventListener('click', zadanie1)

из-за этого все равно не выводит на экран. А когда попытался переделать код, то все равно столкнулся с той же самой проблемой - считает разницу даже когда прогрессии нет:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function zadanie1() {
    var n = document.getElementById("m").value; 
    var mas = []; mas=n.split(" ");
    for ( var i = 0; i < n; i++) {
    mas.push(Math.round(Math.random() * 100));}
 
    var mas1 = [];
    var mas2 = mas.splice("");
    mas2.sort((a, b) => a - b)
        if (mas2.length == 3) {
                var diff01 = mas2[1] - mas2[0]
                var diff12 = mas2[2] - mas2[1]
 
                if (diff12 == diff01) {
                   document.getElementById("result1").innerHTML="Разность массива: " + diff01;
                } else {
                    document.getElementById("result1").innerHTML="прогрессии нет ";
                }
            } 
 }
0
1791 / 940 / 382
Регистрация: 26.11.2014
Сообщений: 1,917
Записей в блоге: 1
10.05.2022, 21:19 6
Так, мой вариант полностью почему не возьмёте..? Какой-то гибрид сейчас городить... мы с вами замучаемся уточнять детали...
0
0 / 0 / 0
Регистрация: 15.12.2019
Сообщений: 15
10.05.2022, 22:40  [ТС] 7
NTHing, у меня выбивает ошибку, скинул фото...
да я просто не совсем знаком с некоторыми вещами в коде, почитал за них, но так и не понял, для чего они применяются здесь...
По типу 12 и 23 строки, не совсем понимаю зачем перевод строки.
И 9 строка - не обязательная?
console.log на 19 строке, тоже не пойму.


Javascript
1
2
3
4
5
 {
                res.innerText = ''
            }
            inp.value = ''
        }
вот этот момент тоже не совсем понимаю...
Миниатюры
Нахождение прогрессии в массиве  
0
1791 / 940 / 382
Регистрация: 26.11.2014
Сообщений: 1,917
Записей в блоге: 1
11.05.2022, 08:34 8
Цитата Сообщение от Brianz Посмотреть сообщение
у меня выбивает ошибку, скинул фото...
Значит в коде нет элемента с id="btn". У меня это кнопка в html-разметке... Посмотрите внимательно...
По типу 12 и 23 строки, не совсем понимаю зачем перевод строки.
Это примерный (необязательный) вариант вывода результата вычислений на страницу. У вас будет свой, какой захотите.
И 9 строка - не обязательная?
Да, это нужно убрать, я извиняюсь, не почистил код перед размещением.
console.log на 19 строке, тоже не пойму.
Это для проверки, что на данном этапе программы всё идёт как надо, для наглядности...
1
0 / 0 / 0
Регистрация: 15.12.2019
Сообщений: 15
11.05.2022, 20:37  [ТС] 9
NTHing, в том то и дело, что btn есть... Пробовал и отдельным js файлом подключать к html, в этом случае btn не находит. Когда код вставляю в html с помощью <script>, то нет ни ответа, ни ошибок...

Спасибо за разъяснения
Миниатюры
Нахождение прогрессии в массиве   Нахождение прогрессии в массиве   Нахождение прогрессии в массиве  

Нахождение прогрессии в массиве  
0
11.05.2022, 20:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2022, 20:37
Помогаю со студенческими работами здесь

Нахождение двух неизвестных в прогрессии перебором
Здравствуйте! Как решить уравнение на перебор, надо найти a и b, если по условию: a*(b^7 – 1) =...

Рекурсия: нахождение N-го члена арифметической прогрессии
описать рекурсивную функцию нахождения N-го члена арифметической прогрессии: An=A1+D*(N-1)

Программа на нахождение суммы геометрической прогрессии
Приветствую! Наткнулся недавно на интересное задание и как-то код не выходит. Необходимо...

Нахождение суммы n первых членов арифметической прогрессии
Описать и протестировать рекурсивную функцию my_sum_ar_progr нахождения суммы n первых членов арифм...

Нахождение суммы арифметической прогрессии (ошибка компиляции)
Пытаюсь найти сумму арифметической прогрессии. Программа выдает исключение. В чем может быть...

Реализовать в виде функции нахождение суммы арифметической прогрессии
Найти сумму арифметической прогресии,если известен последний номер ряда.Реализовать в виде функции....

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru