![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| KPEHDEL |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 31.3.2010 Репутация: нет Всего: нет |
Помогите пожалуйста решить задачу(Free Pascal):
Напишите программу на языке Паскаль определяющую, равен ли квадрат заданного трехзначного числа кубу суммы цифр этого числа. Программа должна вывести ответ «Да» или «Нет».
Подскажите, что не так! Это сообщение отредактировал(а) KPEHDEL - 17.9.2010, 20:33 |
|||
|
||||
| KPEHDEL |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 31.3.2010 Репутация: нет Всего: нет |
Люди СОС!
|
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 2 Всего: 49 |
А что, в Паскале откуда-то появился оператор возведения в степень? Убирайте "^".
Заодно полезно учесть, что: 1) Вы пытаетесь считать не куб суммы цифр, а сумму кубов цифр. Это не одно и то же. 2) Качество кода - настолько безобразное, насколько оно вообще может быть безобразным в программе из двадцати строчек. |
|||
|
||||
| KPEHDEL |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 31.3.2010 Репутация: нет Всего: нет |
Спасибо!
Написал вот так:
компилится... Если вводить двухзначное число то всё норма, если трёхзначное, то выдаёт ошибку... Пожалуйста подскажите в чём дело. |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 2 Всего: 49 |
В программе есть еще одна смысловая ошибка - Вы сначала возводите число в квадрат, а потом считаете сумму цифр уже этого квадрата. Она и приводит к проблемам - для многих трехзначных чисел (для некоторых двузначных, кстати, тоже) итоговое значение l в имеющемся варианте программы выходит за границы типа integer.
|
|||
|
||||
| KPEHDEL |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 31.3.2010 Репутация: нет Всего: нет |
Но ведь я наоборот сначала складывают "l:=a+b+d+e+f+g+h+i+k;".
а потом уже возважу в куб. l:=l*l*l; КАк правильно? |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 2 Всего: 49 |
Это-то правильно, но вот строчку C:=sqr©; надо перенести позже подсчета l. Иначе все операции с вычислением суммы цифр делаются не с исходным числом, а с его квадратом. |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |