Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2013, 19:57   #1
nadyaH
Форумчанин
 
Регистрация: 24.10.2013
Сообщений: 130
По умолчанию Даны два целых числа A и B (A < B). Найти произведение всех целых чисел от A до B включительно.

Код:
VAR
A,B,O,I:integer;
begin
A:=STRTOint(EDIT1.Text);
B:=STRTOint(EDIT2.TEXT);
O:=1;
FOR I:=A TO B DO O:=O*I;
EDIT3.TEXT:=INTTOSTR(O)
КОГДА ВВОЖУ БОЛЬШИЕ ЧИСЛА ТО ВЫХОДИТ 0 ЛИБО ОТРИЦАТЕЛЬНОЕ ЧИСЛО. ЧТО МНЕ НУЖНО ИЗМЕНИТЬ В ПРОГРАММЕ?

Последний раз редактировалось nadyaH; 28.10.2013 в 20:06.
nadyaH вне форума Ответить с цитированием
Старый 28.10.2013, 20:53   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
БОЛЬШИЕ ЧИСЛА
Насколько большие? У integer есть ограничение.
P.S. ПрЕкРаШаЙ ПиССаттть КАПСЛОКОМ
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.10.2013, 20:56   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Замените integer на int64 - это немного расширит ограничения.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 28.10.2013, 21:04   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Ситуацию можно улучшить, если использовать другой тип данных, например, Longint.
В ситуации похуже - Real, Extended (точность вычисления другая).
Ну или совсем что-то свое придумать. Например, когда числа представляются строками.
В общем то выход есть. Просто не надо на больших цислах комп мучить.
Кстати, а как можно объяснить появление отрицательных чисел?
Мне конежно же можно не отвечать. Просто подумай.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 28.10.2013, 21:11   #5
nadyaH
Форумчанин
 
Регистрация: 24.10.2013
Сообщений: 130
По умолчанию

думаю числа отрицательные,т.к. памяти на отведёное кол-во символ(цифр), не хватет отведёного места,поэтому в минус уходит(моё мнение). А вот почему нуль получается - безпонятия..

сори.язык делфи 7.

Последний раз редактировалось Stilet; 28.10.2013 в 22:42.
nadyaH вне форума Ответить с цитированием
Старый 28.10.2013, 21:20   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от nadyaH Посмотреть сообщение
сори.язык делфи 7.
1) Дельфи 7 - не язык.
2) Не нужно отвечать на мою подпись
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 28.10.2013, 21:28   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Цитата:
думаю числа отрицательные,т.к. памяти на отведёное кол-во символ(цифр), не хватет отведёного места,поэтому в минус уходит(моё мнение). А вот почему нуль получается - безпонятия..
Дело в том, число типа integer хранится в слове (два байта) так, что за знак овечает самый старший бит.
При сложении или умножении даже не очень больших чисел (ну что там 32000) возникает переполнение в младших (0-14) битах, в результате которого (переполнения) в знаковый разряд попадает единица, которая и интерпретируется как знак числа: 0 - положительные числа, 1 - отрицательные.
Достаточно появлению одного нулевого значения, из-за переполнения, как все остальные произведения будут только нулями.
Цитата:
сори.язык делфи 7.
Ну да. Это важно. Только вот и в этом случае от замены типа данных не уйти. Почитайте, какой там есть тип для хранения очень больших чисел подходящего формата: целые, вещественные.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 28.10.2013, 21:39   #8
nadyaH
Форумчанин
 
Регистрация: 24.10.2013
Сообщений: 130
По умолчанию

даже не знаю за какой тип переменной обозначить. просто если тип меняется то и ввод и вывод числа меняется.
nadyaH вне форума Ответить с цитированием
Старый 28.10.2013, 22:44   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
за какой тип переменной обозначить
Да не за какой. Все равно не хватит. Если бы суммировала то да, а так умножение...
И вообще с чего ты взяла что обязательно большие числа вводить?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.10.2013, 07:14   #10
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Если уж очень приспичело, то есть длинная арифметика
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти произведение натуральных чисел от а до b включительно (информатика 9 класс) Nastia1997 Помощь студентам 16 29.10.2012 19:11
Даны два целых числа Анастасия12 Паскаль, Turbo Pascal, PascalABC.NET 12 01.03.2012 21:57
Матрица целых чисел А(3,4). Найти количество нулей и произведение элементов не равных нулю (Basic) AnnKarpinskaya Помощь студентам 1 16.05.2011 23:35
Задать два массива целых чисел: А(12) и В(6). Найти минимальные элементы этих массивов и поменять.... eragon_ua Помощь студентам 5 15.04.2011 07:58
Pascal В интервале целых чисел найти все числа кратные 7 NewBi Помощь студентам 5 19.03.2010 19:55