Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Basic


Ответ
 
Опции темы Опции просмотра
Старый 27.01.2013, 12:13   #1 (permalink)
тиристор дима
Member
 
Регистрация: 07.06.2012
Сообщений: 155
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 59
По умолчанию Составить модель и алгоритм на Бейсике

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

Старый 27.01.2013, 12:13
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

В ранее созданных темах можно найти важный ответ

Составить алгоритм и написать код
Составить алгоритм
Составить алгоритм и написать код программы

Старый 27.01.2013, 12:23   #2 (permalink)
duc
Banned
 
Регистрация: 23.11.2010
Сообщений: 6,749
Сказал(а) спасибо: 18
Поблагодарили 27 раз(а) в 6 сообщениях
Репутация: 17514
По умолчанию

Алгоритм элементарен: делим число на разряды, каждый в свою переменную, меняем местами и суммируем. Если вспомню про вопрос, то вечером нарисую. Сейчас клиентка позвонила, убегаю
duc вне форума   Ответить с цитированием
Старый 27.01.2013, 12:52   #3 (permalink)
тиристор дима
Member
 
Регистрация: 07.06.2012
Сообщений: 155
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 59
По умолчанию

не забудь пожалуйста
тиристор дима вне форума   Ответить с цитированием
Старый 27.01.2013, 20:10   #4 (permalink)
duc
Banned
 
Регистрация: 23.11.2010
Сообщений: 6,749
Сказал(а) спасибо: 18
Поблагодарили 27 раз(а) в 6 сообщениях
Репутация: 17514
По умолчанию

Цитата:
CLS
be:
INPUT "Введите исходное число"; a
s = FIX(a / 100)
IF s = 0 GOTO er
IF s > 10 GOTO er
d = FIX((a - s * 100) / 10)
e = a - s * 100 - d * 10
itog = s * 100 + e * 100 + d * 20 + s + e
PRINT itog
GOTO endp
er: PRINT "Ошибка, ожидается трёхзначное число"
GOTO be
endp:
Выделил сотни (S), если получил ноль или больше 10, то число не является трёхзначным и выдаётся сообщение об ошибке. Выделил десятки (D) и единицы (E)... Надеюсь дальше разберёшься сам. Писал и проверял на MS-DOS QBASIC 1992 года.
duc вне форума   Ответить с цитированием
Старый 27.01.2013, 20:27   #5 (permalink)
duc
Banned
 
Регистрация: 23.11.2010
Сообщений: 6,749
Сказал(а) спасибо: 18
Поблагодарили 27 раз(а) в 6 сообщениях
Репутация: 17514
По умолчанию

Лопухнулся на граничном условии , шестая строка должна быть
Цитата:
Сообщение от duc Посмотреть сообщение
IF s > 9 GOTO er
duc вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 28.01.2013, 02:20   #6 (permalink)
тиристор дима
Member
 
Регистрация: 07.06.2012
Сообщений: 155
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 59
По умолчанию

НЕ понимаю почему, но у мы на уроках делали не так. Мы делали что в этом роде" INPUT "Введите исходное число"; a
s = FIX(a / 100)
d = FIX((a - s * 100) / 10)
e = a - s * 100 - d * 10
PRINT(здесь пишем что найти)
end
И вот как то так мы решаем.
Я не очень в этом разбираюсь может это язык другой. Помогите пожалуйста мне очень надо
тиристор дима вне форума   Ответить с цитированием
Старый 28.01.2013, 07:00   #7 (permalink)
duc
Banned
 
Регистрация: 23.11.2010
Сообщений: 6,749
Сказал(а) спасибо: 18
Поблагодарили 27 раз(а) в 6 сообщениях
Репутация: 17514
По умолчанию

Пожалуйста:
Цитата:
INPUT "Введите исходное число"; a
s = FIX(a / 100)
d = FIX((a - s * 100) / 10)
e = a - s * 100 - d * 10
PRINT s * 100 + e * 100 + d * 20 + s + e
Но этот вариант некорректно отработает и даст ошибочный результат, если в числе будет больше или меньше трёх знаков, в то время как первый выдаст сообщение об ошибке и предложит повторить ввод.
duc вне форума   Ответить с цитированием
Старый 23.10.2016, 19:12   #8 (permalink)
iks2
Member
 
Регистрация: 22.10.2016
Сообщений: 62
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

это работает...

Код:
CLS

INPUT "A = "; a

b1 = a \ 100
b2 = a \ 10 MOD 10
b3 = a MOD 10

b = 100 * b3 + 10 * b2 + b1

PRINT a + b
END
iks2 вне форума   Ответить с цитированием
Старый 23.10.2016, 21:57   #9 (permalink)
prima
Member
 
Регистрация: 31.08.2015
Сообщений: 19,429
Сказал(а) спасибо: 283
Поблагодарили 213 раз(а) в 96 сообщениях
Репутация: 80884
По умолчанию

Цитата:
Сообщение от iks2 Посмотреть сообщение
это работает...
Работает...
1) Зачем поднимать старую тему?
2)
Цитата:
Сообщение от duc Посмотреть сообщение
этот вариант некорректно отработает и даст ошибочный результат, если в числе будет больше или меньше трёх знаков, в то время как первый выдаст сообщение об ошибке и предложит повторить ввод
prima вне форума   Ответить с цитированием
Старый 24.10.2016, 11:03   #10 (permalink)
iks2
Member
 
Регистрация: 22.10.2016
Сообщений: 62
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

prima,
Вы извините, я хотел вас спросить.
У меня нет прав поднять старую тему?
Или это запрещено вообще? То есть - это первое неофициальное предупреждение?
iks2 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 02:38.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.