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

Не выводит верные значения наибольших элементов и их индексов

11.12.2020, 11:37. Показов 1229. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Производим ручной ввод массива с отрицательными элементами и среди них ищет наибольшие и выводит с индексами. Где-то ошибка и получаю такой вывод:


Код программы(макс значения и их индексы должны заноситься в массивы MaxZ и Index):

JavaScript
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
                M= prompt('Ввести массив с отрицательными элементами: ')
                Array.from(M)
                console.log ('Массив ' +M)        
                
                Most = 0
             
                MaxZ = []
 
                Index = [-1]
 
                for ( i = 0; i < M.length; i++)
                {
                if (M[i] < 0 && M[i] > Most) 
                {
                Most = M[i]
            
                Index.length = 0 
                Index.push(i)  
                MaxZ.length = 0
                MaxZ.push(Most)
                }
                else
                {
                if (M[i] == Most) {MaxZ.push(Most); Index.push(i) }
                }   
                }
                console.log ('Наибольший среди отрицательных элемент ' +MaxZ)
                console.log ('Его индекс ' +Index)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.12.2020, 11:37
Ответы с готовыми решениями:

Функция выводит не верные значения
Доброго времени суток! Написал функцию но значения она выводит не правильные, прилаживаю задание и функцию которую я написал. ...

Для одномерного массива найти cуму индексов наибольших элементов
Задание: Для одномерного массива C(n) найти cуму индексов L наибольших элементов, где 0&lt;=n&lt;=25. Вот рабочий код: // Lab4.cpp:...

Найти сумму индексов наибольших элементов целочисленной числовой последовательности
Найти сумму индексов наибольших элементов целочисленной числовой последовательности. Запрещенные служебные слова: array Входные...

4
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
11.12.2020, 12:33
Здравствуйте.
JavaScript
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/**
 * Ввод целого числа больше нуля (натурального)
 */
function getNaturalNumber(message, value, errorMessage) {
    let input /*string*/, number /*integer*/;
    while (true) {
        input = prompt(message, value);
        if ((number = +input) !== parseInt(input) || number <= 0)
            alert(errorMessage);
        else break;
    }
    return number;
}
/**
  * Ввод вещественного числа 
  */
function getNumber(message, value, errorMessage) {
    let input /*string*/, number /*integer*/;
    while (true) {
        input = prompt(message, value);
        if ((number = +input) !== parseFloat(input) || !Number.isFinite(number))
            alert(errorMessage);
        else break;
    }
    return number;
}
/**
  * Создать массив длиной count элементов и заполнить вводом с prompt с проверкой вещественного числа
  */
function getArray(count) {
    let array = new Array(count);
    for (let i = 0; i < count; i++)
        array[i] = getNumber("Ведите " + i + "-й элемент массива:", "", "Требуется вещественное число!");
    return array;
}
let n = getNaturalNumber("Массив с отрицательными элементами.\nВведите количество элементов в массиве:", "", "Требуется целое положительное число!");
let M = getArray(n);
// let M = [-1, -2, -1, -9, -1]; // Тестирование
console.log('Массив ' + M);
 
let Most = 0; // Наибольшее отрицательное число
 
let Indexes = []; // Массив индексов наибольшего отрицательного числа.
 
for (i = 0; i < M.length; i++) {
    if (M[i] < 0) {
        // Отрицательное число встретилось в первый раз
        // или отрицательное число раньше было и новое больше
        if (Indexes.length === 0 || M[i] > Most) {
            Most = M[i];
            Indexes.length = 1;
            Indexes[0] = i;
        }
        else if (M[i] === Most)
            Indexes.push(i);
    }
}
console.log('Наибольший среди отрицательных элемент: ' + Most);
console.log('Его индексы (начиная с нуля): ' + Indexes);
Подправим немножко кашу в программе. Раньше M не был массивом.
Показано, как руками набирать массив.
1
1 / 1 / 0
Регистрация: 28.01.2018
Сообщений: 58
11.12.2020, 14:14  [ТС]
Цитата Сообщение от amr-now Посмотреть сообщение
Здравствуйте.
JavaScript
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/**
 * Ввод целого числа больше нуля (натурального)
 */
function getNaturalNumber(message, value, errorMessage) {
    let input /*string*/, number /*integer*/;
    while (true) {
        input = prompt(message, value);
        if ((number = +input) !== parseInt(input) || number <= 0)
            alert(errorMessage);
        else break;
    }
    return number;
}
/**
  * Ввод вещественного числа 
  */
function getNumber(message, value, errorMessage) {
    let input /*string*/, number /*integer*/;
    while (true) {
        input = prompt(message, value);
        if ((number = +input) !== parseFloat(input) || !Number.isFinite(number))
            alert(errorMessage);
        else break;
    }
    return number;
}
/**
  * Создать массив длиной count элементов и заполнить вводом с prompt с проверкой вещественного числа
  */
function getArray(count) {
    let array = new Array(count);
    for (let i = 0; i < count; i++)
        array[i] = getNumber("Ведите " + i + "-й элемент массива:", "", "Требуется вещественное число!");
    return array;
}
let n = getNaturalNumber("Массив с отрицательными элементами.\nВведите количество элементов в массиве:", "", "Требуется целое положительное число!");
let M = getArray(n);
// let M = [-1, -2, -1, -9, -1]; // Тестирование
console.log('Массив ' + M);
 
let Most = 0; // Наибольшее отрицательное число
 
let Indexes = []; // Массив индексов наибольшего отрицательного числа.
 
for (i = 0; i < M.length; i++) {
    if (M[i] < 0) {
        // Отрицательное число встретилось в первый раз
        // или отрицательное число раньше было и новое больше
        if (Indexes.length === 0 || M[i] > Most) {
            Most = M[i];
            Indexes.length = 1;
            Indexes[0] = i;
        }
        else if (M[i] === Most)
            Indexes.push(i);
    }
}
console.log('Наибольший среди отрицательных элемент: ' + Most);
console.log('Его индексы (начиная с нуля): ' + Indexes);
Подправим немножко кашу в программе. Раньше M не был массивом.
Показано, как руками набирать массив.
А разве нельзя строку преобразовать в массив более простым путем?)
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
11.12.2020, 14:35
Лучший ответ Сообщение было отмечено Icaab как решение

Решение

Icaab, ручным вводом числа вводят по одному, чтобы была возможность их проверить, что это числа, а не мусор.
Пример:
В строке 20 чисел. Из них 5 чисел не являются числами. Непонятно, что с этой строкой вообще делать.

Строки вкачивают при автоматизированной обработке. Если в строке была ошибка, то после исправления ошибки человек старые правильные числа руками не вводит. Например, заново отправляет длинный файл на обработку.
1
1 / 1 / 0
Регистрация: 28.01.2018
Сообщений: 58
11.12.2020, 20:06  [ТС]
Цитата Сообщение от amr-now Посмотреть сообщение
Icaab, ручным вводом числа вводят по одному, чтобы была возможность их проверить, что это числа, а не мусор.
Пример:
В строке 20 чисел. Из них 5 чисел не являются числами. Непонятно, что с этой строкой вообще делать.

Строки вкачивают при автоматизированной обработке. Если в строке была ошибка, то после исправления ошибки человек старые правильные числа руками не вводит. Например, заново отправляет длинный файл на обработку.
Не смотрел сильно в интернете по поводу ручного ввода. Да, вы действительно были правы. Написал попроще, однако выполняется помимо и второе решение, ибо по заданию:

Найти в массиве наибольший элемент среди отрицательных и его индекс. Если таких элементов несколько, найдите элемент с наименьшим индексом


Сам код:
JavaScript
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
36
//Задаем длину вручную
InputM = prompt("Ввести длину массива: ")
Count = parseInt(InputM)
M = new Array()
    //Сами вводим
for (i = 0; i < Count; i++) M[i] = parseInt(prompt("Ввести отрицательный элемент:"))
console.log('Массив ' + M)
Most = 0
MaxZ = []
Indexes = []
for (i = 0; i < M.length; i++) {
    if (M[i] < 0) {
        // Отрицательное число в первый раз
        // или раньше было,а новое больше
        if (Indexes.length == 0 || M[i] > Most) {
            Most = M[i]
            Indexes.length = 0
            Indexes.push(i)
            MaxZ.length = 0
            MaxZ.push(Most)
        } else {
            if (M[i] == Most) {
                MaxZ.push(Most);
                Indexes.push(i)
            }
        }
    }
}
if (Indexes.length > 1) {
    MinValue = Math.min.apply(null, MaxZ)
    console.log('Наибольший среди отрицательных элемент ' + MinValue)
    console.log('С наименьшим индексом ' + M.indexOf(MinValue))
} else {
    console.log('Наибольший среди отрицательных элемент ' + MaxZ)
    console.log('Его индекс ' + Indexes)
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.12.2020, 20:06
Помогаю со студенческими работами здесь

Функция которая выводит 3 наибольших значения из словаря
Помогите пожалуйста написать функцию def highest_mydict которая должна показать 50 самых больших значений в my_dict. Например у меня есть...

Найти сумму индексов наибольших элементов целочисленной числовой последовательности. Запрещенные служебные слова: array
Найти сумму индексов наибольших элементов целочисленной числовой последовательности. Запрещенные служебные слова: array Входные данные:...

Вывести на консоль значения чётных элементов массива, сумму индексов нечётных элементов, и исходный массив
Написать программу, которая выводит значения четных элементов массива, сумму индексов нечетных элементов массива, и исходный массив....

Cоздать процедуру, которая ищет слово в массиве и выводит набор индексов массива совпадающих элементов
Имеется массив слов.Необходимо создать процедуру,которая ищет в массиве, переданное в параметре процедуры, слово и выводит набор индексов...

Функция находящая значения трёх наибольших элементов массива
Задание звучит так: &quot;Составить ПРОЦЕДУРУ, исходными данными которой является массив С1, С2, ... Сn. Результаты процедуры указаны ниже в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru