Как найти среднее арифметическое всех числовых элементов в массиве. Как найти минимальное и максимальное значение Читайте статьи по 1С на нашем сайте: programmist1s.ru/materialyi-po...
Что-бы в массиве были и отрицательные числа можно сделать так: *М.Добавить(100 - Генератор.СлучайноеЧисло(0,200));* - так диапазон случайных чисел станет от -100 до 100, для тестов максимум/минимум очень удобно и наглядно.
Там же нет кода в этот раз. Да и если Вы все повторяете - по своим записям догадаться не трудно. Как, кстати, успехи? Три недели комменту, освоили курс?)
Интересная аналогия. С каждым роликом все меньше и меньше лайков. Ряды рядели с каждым уроком )) Пройду этот курс, переду на ваш основной канал. Спасибо за уроки
Неплохо было бы здесь разобрать и Округление. Если, скажем, брать Среднее значение от 7-ми элементов, то получится бесконечный остаток. А так да, Илья молодец. Позитивный и толково объясняет
Я на самом деле часть функций писал еще до того как Леонтев показал как это делать, часть конечно подсмотрел, но реально это все очень легко и надеюсь что же как по маслу будет идти остальное обучение ! =)
Благодарю Вас за проделанную такую огромную работу. Только тот, кто хотя бы раз попытался записать подобный видеоурок, знает, насколько это трудно. Старательно изучаю Ваши уроки с нуля. Но вот налетел на такую ситуацию из которой никак не могу выбраться. Всё шло нормально до написания этой функции: Функция МаксимумМассива(Массив) Если Массив.Количество() = 0 Тогда Возврат Неопределено; КонецЕсли; Максимум = Массив(0); Для Каждого Элемент Из Массив Цикл Если Элемент > Максимум Тогда Максимум = Элемент; КонецЕсли; КонецЦикла; Возврат Максимум; КонецФункции {ВнешняяОбработка.РаботаСЦиклами.Форма.Форма.Форма(249,13)}: Процедура или функция с указанным именем не определена (Массив) Максимум =
Функция СоздатьМассив(кол_елем_в_массиве) Array = Новый Массив(); Генератор = Новый ГенераторСлучайныхЧисел; Для Индекс = 1 По кол_елем_в_массиве Цикл случ_число = Генератор.СлучайноеЧисло(1, 10); Array.Добавить(случ_число); КонецЦикла; Возврат Array; КонецФункции Процедура ВывестиМассив(Array) Сообщить("Вывод Массива: "); Для Каждого elem Из Array Цикл Сообщить(elem); КонецЦикла; КонецПроцедуры функция СуммаЕлементовМассива(Array) сумма = 0; Для Каждого elem из Array Цикл сумма = сумма + elem; КонецЦикла; Возврат сумма; Конецфункции функция СреднееКоличествоМассива(Array, Sum ) количество = Array.Количество(); Если количество > 0 Тогда Возврат Sum / количество; Иначе Возврат "Значение не определено"; КонецЕсли Конецфункции функция МаксимумИзМассива(Array) промежуточная_перем = -1; Для каждого elem из Array Цикл Если elem > промежуточная_перем Тогда промежуточная_перем = elem; КонецЕсли; КонецЦикла; Возврат промежуточная_перем; Конецфункции функция МинимумИзМассива(Array) промежуточная_перем = МаксимумИзМассива(Array); Для каждого elem из Array Цикл Если elem < промежуточная_перем Тогда промежуточная_перем = elem; КонецЕсли; КонецЦикла; Возврат промежуточная_перем; Конецфункции Процедура КнопкаВыполнитьНажатие(Кнопка) Array = СоздатьМассив(5); ВывестиМассив(Array); Сообщить( "Сумма елементов массива = " + СуммаЕлементовМассива(Array) ); сумма = СуммаЕлементовМассива(Array); Сообщить("Среднеее число = " + СреднееКоличествоМассива(Array, сумма)); Сообщить("Максимальное число = " + МаксимумИзМассива(Array)); Сообщить("Максимальное число = " + МинимумИзМассива(Array)); Сообщить(" "); /// КонецПроцедуры
А я Переменную Сумма = "функцию" СуммаМассива. И Количество = Массив.Количество - делил одно на другое вот. Не знаю на сколько органично но все работает =))))
Мне кажется методологически неправильным для пустого массива среднее значение = НЕОПРЕДЕЛЕНО в то время как сумма для такого массива принимается равной нулю. Тут надо либо оба значения (сумму и среднее) считать неопределенными, либо оба нулевыми.
В функции "СреднееЗначениеМассива_2" в строке "Возврат СуммаМассива(Массив)/Массив.Количество;" отсутствует поле объекта, т.е. "( )". Правильным код будет вот такой: Функция СреднееЗначениеМассива_2(Массив) Количество = Массив.Количество(); Если Количество > 0 Тогда Возврат СуммаМассива(Массив)/Массив.Количество(); Иначе Возврат Неопределено; КонецЕсли; КонецФункции
Илья ,здравствуйте .Подскажите пожалуйста :когда начал искать максимум ,все элементы массива были равны одинаковому числу (4),в связи с этим при нажатие на кнопку" выполнить" , команда" Максимум" не сработала.как это исправить?
Функция СреднееЗначениеЭлементов(Массив); Сумма = 0; Количество = 0; Для Каждого элемента из Массив цикл Сумма = Сумма + элемента; Количество = Количество + 1; КонецЦикла; Если Количество > 0 Тогда Сообщить("Среднее Значние чисел массива = " + (Вычислить("Сумма / Количество"))); Иначе Возврат Неопределено; КонецЕсли; КонецФункции
Скобки ставим после методов, то есть после таких штук, которые надо вычислять. Количество() - это метод массива, который ВЫЧИСЛЯЕТ количество его элементов при его вызове. Поэтому мы ставим скобки.
Уважаемый Илья, большое Вам спасибо. Думаю, что я не первый, да и вы несомненно знаете, что так, мне кажется, лаконичней: Минимум = ?( Минимум < Элемент, Минимум, Элемент);.
У меня возник вопрос. Касающийся Функции СреднееЗначениеМассива_2(Массив) А нельзя ли в проверке на количество массива(чтобы не было нуля) не создавать новую переменну "Количество", а поступить вот так "Если Массив.Количество()>0 Тогда" ?
Можно сделать, но обращения к процедуре Массив.Количество будет больше, что съест килобайты или айты, но мы же профи, над нужно как можно меньше расходовать памяти и ресурсов. Функция ВычислениеСреднегоЗначенияМассива_2 (Массив) Количество = Массив.Количество(); //Если Количество > 0 Тогда Если Массив.Количество() > 0 Тогда Возврат ПодсчетСуммыМассива(Массив) / Массив.Количество(); Иначе Возврат Неопределено; КонецЕсли; КонецФункции
подскажите пожалуйста, делаю работу как на видео , но все равно выдаётся ошибка : определения процедур и функций должны размещаться перед операторами тела модуля
1:07 - а тупо вызвать после суммирования перед возвратом Массив.Количество() нельзя что ли? и написать Сумма=Сумма/Массив.Количество(); Хотя я наверное спешу и там уже рассмотрен это вариант. 2:07 - Если лучше делать выражением Массив.Количество()=0 - тогда будет однозначно что массив пустой. я бы даже больше сказал - эту проверку можно в самое начало функции поставить - выходить сразу если массив нулевой.
Как найти среднее арифметическое всех числовых элементов в массиве. Как найти минимальное и максимальное значение Услуги 1С программиста в Москве: 1cproger.ru/ Читайте статьи по 1С на нашем сайте: programmist1s.ru/materialyi-po-1s/
С 7:18 по 7:36 не очень понял автора, также фразу "и не надо знать положительные там числа или отрицательные": Зачем в качестве инициализации брать оторванные (рандомные) такие как 0 и -1 числа которые могут и не входить в массив когда можно взять любое число из массива и относительно него и плясать (так и было сделанно в коде, код верный). А к чему зарисовка и тезис про минус -1 был, непонятно.
Здравствуйте. Подскажите пожалуйста. Выдаёт ошибку при расчёте Среднего значения 2м способом. Функция СоздатьМассив(КолличествоЭлементов) М = Новый Массив; Генератор = Новый ГенераторСлучайныхЧисел; Для Индекс = 1 По КолличествоЭлементов Цикл СлучЧисло = Генератор.СлучайноеЧисло(1, 10); М.Добавить(СлучЧисло); КонецЦикла; Возврат М; КонецФункции Процедура ВывестиМассив(Массив) Сообщить("Массив:"); Для Каждого Элемент Из Массив Цикл Сообщить(Элемент); КонецЦикла; Сообщить(" "); КонецПроцедуры Функция СуммаМассива(Массив) Сумма = 0; Для Каждого Элемент Из Массив Цикл Сумма = Сумма + Элемент; КонецЦикла; Возврат Сумма; КонецФункции Функция СреднееЗначениеМассива(Массив) Сумма = 0; Колличество = 0; Для Каждого Элемент Из Массив Цикл Сумма = Сумма + Элемент; Колличество = Колличество + 1; КонецЦикла; Если Колличество > 0 Тогда Возврат Сумма / Колличество; Иначе Возврат Неопределено; КонецЕсли; КонецФункции Функция СреднееЗначениеМассива_2(Массив) Колличество = Массив.Колличество(); Если Колличество > 0 Тогда Возврат СуммаМассива(Массив)/Колличество; Иначе Возврат Неопределено; КонецЕсли; КонецФункции Процедура КнопкаВыполнитьНажатие(Кнопка) М = СоздатьМассив(5); ВывестиМассив(М); Сообщить("Сумма массива = " + СуммаМассива(М)); Сообщить("Среднее значение массива = " + СреднееЗначениеМассива(М)); Сообщить("Среднее значение массива = " + СреднееЗначениеМассива_2(М)); КонецПроцедуры Метод объекта не обнаружен (Колличество) {ВнешняяОбработка.РаботаСЦиклами.Форма.Форма.Форма(64)}: Колличество = Массив.Колличество(); {ВнешняяОбработка.РаботаСЦиклами.Форма.Форма.Форма(83)}: Сообщить("Среднее значение массива = " + СреднееЗначениеМассива_2(М));
У тебя неправильно указан метод массива - "Количество". Должно быть "Массив.Количество();" А у тебя "Массив.КоЛЛичество();". Два ЛЛ. И поэтому программа видит не массив а переменную.
{ВнешняяОбработка.Работасциклами.Форма.Форма.Форма(52,22)}: Ожидается символ '=' Для Каждого Элемент >< Максимум Цикл (Проверка: Толстый клиент (обычное приложение)) У кого-нибудь была такая ошибка? Ругается на Элемент>Максимума?
Всем добрый день. Может кто-то подсказать , почему при вычислении максимум (все делала по видео) у меня выходит минимальное число? Меняю знак неравенства , как для мин, считает максимум тогда.
Не понимаю что обозначают: 1) Минимум = Массив[0]; 2) Массив.Количество() - когда ставится точка и зачем она нужна и когда ставятся скобки; 3) Для чего нужен возврат и почему он применяется только в функциях. Как понять что можно делить в самом возврате : Возврат СуммаМассива(Массив) / Массив.Количество ();
Вернитесь на несколько уроков, где начинаются массивы. Делайте тоже. Желательно, не смотря ролик, а на опережение. Тогда понятно будет. Но и новые вопросы тоже появятся)
Ребят, подскажите, кто нибудь сталкивался с проблемой: "Итрератор значения не определен"? Периодически выскакивает. Копирую код, удаляю форму, создаю новую, вставляю скопированный код, после этого все работает. Что это за дичь? И кто нибудь пользуется учебной версией?
Если указать неправильно метод - ну например - Количество = Массив.Колличество(), то проверка синтаксиса в1С не выявляет ошибки, что на мой взгляд - довольно странно.
А у меня после Сообщить ("") КонецПроцедуры Не видит синиаксический контроль никаких ошибок, а я не поставила точку с запятой В результате функция в этих скобочках при запуске программы не работает Что тоже очень странно) не такой этот контроль и идеальный)
хм.. очень сложно сделано) в духе програмистов) Сумму всех значений я вписал в функцию вывестимассив.. тут дальше вводите перем Количество - а какой смысл если 5 входов можем быть.. мы и так это знаем так как СоздатьМассив(5).. просчет среднего тоже в в функцию вывестимассив.. Процедура ВывестиМассив(масив) Гл_СуммаСлучЧисел = 0; Среднее=0; Для каждого ЭлементМассива из масив Цикл Сообщить(ЭлементМассива); Гл_СуммаСлучЧисел=Гл_СуммаСлучЧисел+ЭлементМассива; КонецЦикла; Сообщить("Сумма всех = "+Гл_СуммаСлучЧисел); Среднее=Гл_СуммаСлучЧисел/КолЗнач; Сообщить(Среднее); КонецПроцедуры
Может поздно конечно, но все же ...... Это операция накопления в цикле счетчика "Количество", по другому - каждое повторение цикла мы считаем, добавляя по единичке, количество элементов массива. Нам количество элементов нужно для получения среднего значения. Начните смотреть несколько уроков назад, там Илья подробно объясняет подобное выражение. Сначала определяем переменную а=0, а затем каждое повторение цикла накапливает выражением а=а+1 в "а" эти самые повторения.
Тема сисек не раскрыта. Сразу напрашивается вопрос, как сделать отрицательные значения, если у генератора условие - минимальное значение не может быть меньше нуля.
хм.. очень сложно сделано) в духе програмистов) Сумму всех значений я вписал в функцию вывестимассив.. тут дальше вводите перем Количество - а какой смысл если 5 входов можем быть.. мы и так это знаем так как СоздатьМассив(5).. просчет среднего тоже в в функцию вывестимассив.. Процедура ВывестиМассив(масив) Гл_СуммаСлучЧисел = 0; Среднее=0; Для каждого ЭлементМассива из масив Цикл Сообщить(ЭлементМассива); Гл_СуммаСлучЧисел=Гл_СуммаСлучЧисел+ЭлементМассива; КонецЦикла; Сообщить("Сумма всех = "+Гл_СуммаСлучЧисел); Среднее=Гл_СуммаСлучЧисел/КолЗнач; Сообщить(Среднее); КонецПроцедуры