Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8

Найти максимум числового выражения

25.09.2016, 14:03. Показов 1614. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задано числовое выражение
(sin1 + ... + sin(k)) * (sin(k+1) + ... + sin(n))
в двух скобках проставлены суммы синусов от чисел
натурального ряда. Всего чисел 100 и они расположены
в порядке возрастания от 1 до 100. Однако сколько этих
чисел в каждой скобке неизвестно. может 1, а может 99
Надо вычислить максимум независимо от N. 1 < N <=100

Вопросы
1. Есть ли иное решение?
2. Можно ли улучшить мою программу?
3. Кажется здесь можно использовать рекурсию?
например по количеству синусов во второй скобке?

QBasic/QuickBASIC
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
REM
REM (sin1 + ... + SIN(k)) * (SIN(k+1) + ... + SIN(n))
REM
REM   max = 0.9577862
REM
 
CLS
CONST n = 100
 
FOR m = 2 TO n
FOR k = 1 TO m - 1
   s1 = 0
   FOR i = 1 TO k
      s1 = s1 + SIN(i)
   NEXT
 
   s2 = 0
   FOR i = k + 1 TO m
      s2 = s2 + SIN(i)
   NEXT
 
   IF max < s1 * s2 THEN
      max = s1 * s2
   END IF
NEXT k, m
 
PRINT "MAX ="; max
END
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2016, 14:03
Ответы с готовыми решениями:

Найти максимум числового выражения 2
ТС предлагает вам решить эту задачу. Она принесет вам счастье и радость грядущего лета... Введем обозначение. sin = s. Дано числовое...

Найти максимум числового ряда
Числовой ряд не задан. Надо его еще построить так, чтобы он имел максимальную сумму. построение. задан ряд натуральных чисел 1, 2, 3,...

Найти значение выражения при помощи процедуры максимум из трех
Для чисел a b c найти значение выражения max abc+1/max(ab,ac,bc) с использованием процедуры нахождения максимального из трех чисел

33
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33378 / 21502 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 11
26.09.2016, 11:29
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от echs Посмотреть сообщение
Ибо все суммы никогда не
будут разом или как то иначе отрицательны
Знаешь, на чем рушатся 99% программ? Вот на таких граничных случаях, потому что программист уверен, что "этого не может быть, потому что не может быть никогда" (С) А потом ракеты падают, и самолеты крушатся. И люди погибают. А программист, блин, сидя в теплом кресле, и попивая кофе, опять уверен, что такого не может быть, и опять пишет по прежнему.
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
26.09.2016, 11:35  [ТС]
volvo,
Спасибо за предупреждение. Но в данном случае я
тоже сомневался в том, что говорил, пока не убедился
в обратном.
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
26.09.2016, 12:01
Цитата Сообщение от echs Посмотреть сообщение
Но максимум
(а ищется именно он) никогда не будет отрицательным.
Расчеты это подтверждают. Ибо все суммы никогда не
будут разом или как то иначе отрицательны.
Почему Вы снова работаете компьютером? Какие расчеты Вам что-то подтверждают?
Вот Вам пример: sin(1)+sin(2)+sin(3)>0 sin(4)<0 произведение отрицательно... Всяко бывает в жизни...
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
26.09.2016, 12:47
Цитата Сообщение от кот Бегемот Посмотреть сообщение
при прочих равных программа, к примеру, на ЕГЭ, оценивается по эффективности затрат памяти и программа без массива поэтому считается оптимальнее программы с массивом.
При чем тут ЕГЭ?
Например, в олимпиадных задачах есть ограничение на количество используемой памяти (как правило несколько мегабайт)
и ограничение по времени, сколько программа тратит на решение (несколько секунд). Поэтому реализация быстрого алгоритма более приоритетно.
Все зависит от задачи, я уже писал, что нужно находить баланс между объемом используемой памяти и временем вычисления.
0
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
26.09.2016, 12:50  [ТС]
Глубоко уважаемый кот Бегемот,
вы привели пример того, что (sin(1)+sin(2)+sin(3)) * (sin(4)) < 0.
Да! Это верно! Но верно также и другое (sin1) * (sin2) > 0
А в максимум ваше выражение не пойдет, ведь есть и большие
числа. Мой пример тоже не пойдет - есть еще большие...

примечание
видимо в этом и состоит сложность задачи...
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
26.09.2016, 13:34
Цитата Сообщение от echs Посмотреть сообщение
А в максимум ваше выражение не пойдет
но ведь несложно понять, что существуют какие-то границы. Скажем, сумма 100 синусов не сможет стать больше 100...


а справедливость этого выражения
Цитата Сообщение от echs Посмотреть сообщение
(sin1) * (sin2) > 0
надо доказывать, то есть вычислять

Добавлено через 5 минут
Цитата Сообщение от m-ch Посмотреть сообщение
Например, в олимпиадных задачах есть ограничение на количество используемой памяти (как правило несколько мегабайт)
и ограничение по времени, сколько программа тратит на решение (несколько секунд). Поэтому реализация быстрого алгоритма более приоритетно.
Вы опять за старое. Не надо ничего выдумывать, есть конкретная задача про 100 чисел, если решение с массивом и без массива сопоставимо по времени (доли секунды), то сопоставляются затраты памяти. У Вас они в 100 раз больше потому что каждый из 100 элементов массива надо где-то хранить.
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
26.09.2016, 13:44
А нужно доказывать выражение?
sin(a)*sin(b) >= -1

Добавлено через 9 минут
кот Бегемот, я привел два варианта программы с массивом и без, принципиально алгоритм не отличается от Вашего, просто убрал лишние вычисления, либо заменил их на более быстрые.
Если Вы не ставите перед собой задачи написать более менее оптимальный код, то не буду Вас в этом переубеждать.
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
26.09.2016, 15:32
Цитата Сообщение от m-ch Посмотреть сообщение
А нужно доказывать выражение?
sin(a)*sin(b) >= -1
нет, а к чему здесь -1? если сложить сто синусов, там можно получить самые разные результаты
Цитата Сообщение от m-ch Посмотреть сообщение
привел два варианта программы с массивом и без, принципиально алгоритм не отличается от Вашего, просто убрал лишние вычисления, либо заменил их на более быстрые.
+
Совершенно с Вами согласен, речь шла исключительно о массивах
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
26.09.2016, 16:13
Цитата Сообщение от кот Бегемот Посмотреть сообщение
нет, а к чему здесь -1? если сложить сто синусов, там можно получить самые разные результаты
исходя из условий задачи
Цитата Сообщение от echs Посмотреть сообщение
(sin1 + ... + sin(k)) * (sin(k+1) + ... + sin(n))
...
1 < N <=100
соответственно n изменяется от 2 до 100
при n=2, k может быть равен только 1, соответственно имеем только один вариант sin(1)*sin(2), и значение этого выражения не менее -1
при n=100, k изменяется от 1 до 99, получаем значения: от (sin1)*(sin2+sin3+...+sin99+sin100) до (sin1+sin2+...sin98+sin99)*sin100, значение которых не может быть меньше -99 (1*-99 или -1*99)
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
26.09.2016, 21:09
Цитата Сообщение от m-ch Посмотреть сообщение
значение которых не может быть меньше -99
Ну, и к чему Вы мне это написали?
В моей программе команда max=-100 и показывает, что меньше -100 быть не может.
0
Заблокирован
26.09.2016, 21:30
нашли предмет для терок
Апостроффа тут не хватает с его
Цитата Сообщение от Апострофф Посмотреть сообщение
интуицией домохозяйки.
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
26.09.2016, 21:39
Цитата Сообщение от кот Бегемот Посмотреть сообщение
Ну, и к чему Вы мне это написали?
В моей программе команда max=-100 и показывает, что меньше -100 быть не может.
С тем же успехом можно было задать -1 или -99, почему именно -100?
Вы спрашивали, "почему -1?" я ответил на этот вопрос, даже логично было бы написать -99, но -100 откуда берется? по условию задачи не может быт суммы в 100 синусов, максимум - 99
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
26.09.2016, 23:19
Сказать честно, Ваши последние фразы очень сильно портят впечатление о вашем интеллекте. Мне казалось очевидным, что в качестве начального (минимального) значения для max надо выбрать число, заведомо меньшее любого возможного max. Очевидно, что минимальная сумма 100 синусов=-100. Вот и всё.
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
27.09.2016, 06:52
Цитата Сообщение от кот Бегемот Посмотреть сообщение
не казалось очевидным, что в качестве начального (минимального) значения для max надо выбрать число, заведомо меньшее любого возможного max.
Я просто скажу, как я обычно задаю начальное максимальное значение: я его присваиваю равным первому вычислению, т.е. если max еще не определен, то как только вычислили первый раз функцию, то присвоили его max.
Можете говорить сколько угодно про очевидность присвоения -100 (так мне очевидно что и -1 и -99 подходят для этого, а можно и с запасом задать -9E+307), только потом будим слушать лекции от volvo про падающие ракеты и самолеты.
Цитата Сообщение от кот Бегемот Посмотреть сообщение
Очевидно, что минимальная сумма 100 синусов=-100. Вот и всё.
По условиям задачи в скобках не должно получатся сумма ста синусов, максимум 99, если Ваш код генерирует 100 слагаемых (кстати он так и делает), то значит он написан с ошибкой. Не должно получатся ситуации 0*(sin1+...sin100) и (sin1+sin100)*0, а у Вас они возникаю. Если было бы возможным такая ситуация, то очевидным было бы задать значение 0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.09.2016, 06:52
Помогаю со студенческими работами здесь

Найти минимум и максимум в массивах чисел и вычислить значение выражения
Вычислить Z=0.2X-Y*Y, где X-минимальный элемент массива Ai, i=1,...,25, Y-максимальный элемент массива Bj,j=1,...,30.

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

Разбор числового выражения
нужно преобразовать программу Разбор числового выражения например: (((1+2)+3)*10-(3-1))/10= Если расстановка скобок верна, то...

Вычислить значение числового выражения
Нужна помощь! Вычислить значение числового выражения. C++ Выражение указано в изображении. Может кто с таким сталкивался? Я новичок((

Найти максимум из девяти чисел(максимум из трех чисел(максимум из двух чисел)
Сделал кароч ток не знаю что в конце писать вот код: function maks_2(a,b:real):real; begin if a&gt;b then maks_2:=a else...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru