Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
Нарушитель
266 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,325
Записей в блоге: 196

Действенный способ сменить знак + на -

16.08.2023, 21:32. Показов 1786. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такой вопрос - допустим есть переменная равная или -1 или 1, она планируется к использованию в расчётах, к частому использованию. Умножать что-то на значение этой переменной, с целью последующей автоматической смены знака действия - не совсем целесообразно. Мне кажется что для таких случаев должно быть что-то предусмотрено. Мне как-то скидывали что-то про булевскую переменную, но я едва-ли найду то, и не помню что именно то было. Подскажите пожалуйста по возможности.

Добавлено через 32 минуты
Это имеет смысл, поскольку будет работать внутри цикла с параметром. Параметр будет вычисляться разумеется прежде его запуска, а вот некоторые вектора для его внутренних вычислений нужно будет менять - что и планируется, но умножение на переменную, равную или -1 или 1 это слишком ёмко скомпилируется, в сравнении с нужным простым интервалом значений, равным всего двум - или единице или минус единице.

Добавлено через 17 минут
В общем сдаётся мне, что суть проблемы уходит корнями в ограничения наложенные непосредственно конкретной двоичной системы..., ... если не архитектуры процессора, ...я так полистал в сети по ассемблеру, и в общих чертах понимаю что это тяжело реализовать имеющимися в нём средствами...над простыми арифметическими операторами действий не предусмотрено. Без умножения тут как-то сложно представляется всё.

Но вопрос в силе.

Добавлено через 30 минут
Впрочем кажется выход есть, точнее хитрость. Проверю - напишу, в сети не один я такой вопрос задавал.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.08.2023, 21:32
Ответы с готовыми решениями:

Сменить знак
в каждой строке сменить знак максимального по модулю элемента на противоположный

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

Сменить знак всех элементов списка
- Используя функцию map, написать функцию инвертирования знака всех элементов списка целых чисел. Main> negs

27
Модератор
10476 / 5771 / 3412
Регистрация: 17.08.2012
Сообщений: 17,529
19.08.2023, 21:27
Студворк — интернет-сервис помощи студентам
Hretgir... На всякий случай... Забыл сказать... Для целых чисел это не годится.

Добавлено через 22 минуты
Да, и ещё... Скажите, как Вам удаётся понимать всё превратно? Это, конечно, фрагменты кода на ассемблере, да. Куда ж деваться. Только вот я их привёл не для применения в программе, а для того, чтобы показать, в какие команды процессора транслируется тот или иной код на паскале.

Каждому ассемблерному оператору соответствует определённая команда процессора (за исключением директив ассемблера). Время выполнения и размер любой ассемблерной команды известны, поэтому по ассемблерному коду, в который транслируется тот или иной текст на паскале, можно абсолютно точно определить время выполнения того или иного участка кода готовой программы и его размер в исполняемом файле. Просмотр результата компиляции - это не самый простой, но самый лучший способ определения эффективности программы. Это верно для любого языка высокого уровня, не только для паскаля. В конце концов, процессор выполняет не паскалевский (или какой-то ещё) текст программы, а ассемблерные инструкции, в которые был преобразован текст программы в процессе компиляции.

Understand or don't understand?
0
Нарушитель
266 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,325
Записей в блоге: 196
20.08.2023, 07:38  [ТС]
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Hretgir... На всякий случай... Забыл сказать... Для целых чисел это не годится.
я это ведел, спасибо ещё раз
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
NEG - это для целых чисел, а для вещественных - FCHS.
Пусть до цикла задана вещественная переменная
.
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
а для того, чтобы показать, в какие команды процессора транслируется тот или иной код на паскале
я так и понял, поэтому и просил иного представления.
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
В конце концов, процессор выполняет не паскалевский (или какой-то ещё) текст программы, а ассемблерные инструкции
машинный код, если быть точнее. С ассемблера ведь надо ещё компилировать? Или прогресс так далеко шагнул что уже нет? Оно хоть почти одно и то-же, но не одно и то-же, ассемблер - это ещё не машинный код, по крайней мере так я знал, а как сейчас - не знаю.
0
Модератор
10476 / 5771 / 3412
Регистрация: 17.08.2012
Сообщений: 17,529
20.08.2023, 11:13
С ассемблера надо компилировать, естественно. Это же текст.

Вначале пояснение. А то подозреваю какое-то недопонимание. Последовательность команд процессора = Машинный код.

Текст программы на ассемблере - практически машинный код. Ещё раз: каждый ассемблерный оператор соответствует одной команде процессора, в редчайших случаях - двум, но эти случаи известны.

Я брал ассемблерный код не с потолка.

В лазарусе в меню выберите Вид -> Окна отладки -> Ассемблер, поставьте в паскалевском коде точку останова, запустите программу, сделайте так, чтобы программа остановилась на точке останова, и смотрите в окне Ассемблер, во что компилятор превратит Ваш код. Сначала для справки житным шрифтом будет указан оператор паскаля, на котором Вы поставили точку останова. Ниже него справа будут отображаться операторы ассемблера, слева будет отображаться соответствующий этим операторам машинный код в шестнадцатеричной форме.

Ассемблерные команды будут не в стандарте Intel, а в стандарте AT&T, плюс к этому, в операторах асемблера будут указаны не имена переменных, а их адреса.

Для публикации я скопировал из окна Ассемблер ассемблерные операторы, изменил синтаксис с AT&T на Intel и подставил вместо адресов переменных их имена.

Так что, то, что я привёл - это именно то, во что транслируются указанные паскалевские операторы.
1
Нарушитель
266 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,325
Записей в блоге: 196
21.08.2023, 20:07  [ТС]
Я это понял и так, просто хотел это увидеть в паскале, что и попросил, что Вы потом и сделали, но зачем-то пишите что я чего-то недопонимаю. Если я чего-то недопонимаю, то почему Вы делаете то, о чём я именно и прошу?
0
Модератор
10476 / 5771 / 3412
Регистрация: 17.08.2012
Сообщений: 17,529
22.08.2023, 02:20
Цитата Сообщение от Hretgir Посмотреть сообщение
хотел это увидеть в паскале
Нет, ну нормально. Я привёл очевидное решение в сообщении #4, и полагал, что Вам всё уже ясно и понятно. Напрасно я так полагал. В сообщении #13 я написал (не для Вас, а для Aledveu) что всё не так просто, как кажется. В сообщении #13 рассматриваются различные варианты решения, и там сначала идёт оператор на паскале, затем ассемблерный код, в который он компилируется. Не заметили, или что? А в сообщении #16 Вы вдруг ни с того ни с сего спрашиваете, как работает кусок ассемблерного кода из сообщения #13 и как это выглядит в программе. Как будто в сообщениях #4 и #13 этого не написано. Налицо, мягко говоря, недопонимание. И в сообщении #22 ещё наивные рассуждения о компиляции...
Цитата Сообщение от Hretgir Посмотреть сообщение
зачем-то пишите что я чего-то недопонимаю
Как полагаете, что мне надо было написать? Что, мол, молодец, Hretgir, Вы всё поняли? Или, может быть, как многие и делают, нужно было выразить сомненье в Вашей, скажем помягче, компетентности, и послать Вас подальше? Или, всё же, понимая, что Вам не до конца всё ясно, написать то, что я написал?
Цитата Сообщение от Hretgir Посмотреть сообщение
почему Вы делаете то, о чём я именно и прошу?
А что в этом такого? И по какой такой причине в том случае, если Вам что-то непонятно, мне Вам не следует помогать?
0
Нарушитель
266 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,325
Записей в блоге: 196
22.08.2023, 05:25  [ТС]
Ответ на последний вопрос в сообщении ярко указывает на то, с чьей именно стороны недопонимание. Лишнее подтверждение того что только прямо заданные вопросы всегда достигают цели при любых обстоятельствах. О последней подробности трудно полагать самостоятельно, когда вокруг для одного полный хаос и неразбериха.

Добавлено через 1 час 17 минут
Что касается ответа на Ваш уже вытекающий вопрос, то Вы делаете невозможное - даёте мне ответы даже на вопросы, которые я Вам не задавал. Большое Вам и откровенное спасибо.
0
Модератор
10476 / 5771 / 3412
Регистрация: 17.08.2012
Сообщений: 17,529
22.08.2023, 20:56
Ну да, немножко я Вас недопонимаю... Есть такое. А как Вас допонять, если Вы ничего конкретного не спрашиваете? Но я всё равно стараюсь хоть чем-то Вам помочь.
0
Нарушитель
266 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,325
Записей в блоге: 196
22.08.2023, 20:59  [ТС]
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.08.2023, 20:59

Сменить знак у минимального по модулю элемента массива
Сменить знак минимального по модулю элемента массива. считает, но выдает 0 Private Sub CommandButton1_Click() Dim i As Byte ...

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

У всех положительных элементов массива сменить знак
Здравствуйте. Помогите пожалуйста! Задача такова: У всех положительных элементов массива сменить знак. на с++

Сменить знак минимального положительного элемента массива.
Просьба помочь мне с этим заданием: Сменить знак минимального положительного элемента массива. Минимальный массив можно найти вот так: ...

Сменить знак максимального по модулю элемента массива на противоположный
такая задача: дана матрица А(4,6). в каждой строке сменить знак максимального по модулю элемента на противоположный. очень,оооочень...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru