Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задача по паскалю, нужна помощь! 
:(
    Опции темы
KPEHDEL
Дата 17.9.2010, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 31.3.2010

Репутация: нет
Всего: нет



Помогите пожалуйста решить задачу(Free Pascal):
Напишите программу на языке Паскаль определяющую, равен ли квадрат заданного трехзначного числа кубу суммы цифр этого числа. Программа должна вывести ответ «Да» или «Нет».

Код

var a,b,d,c,e,f,g:integer;
Begin

Read (c);

C:=sqr(c);
a:=c mod 10;
b:=c div 10 mod 10;
d:=c div 100 mod 100;
e:=c div 1000 mod 1000;
f:=c div 10000 mod 10000;
g:=c div 100000 mod 100000;
a:=A^3;
b:=b^3;
d:=d^3;
e:=e^3;
f:=f^3;
g:=g^3;
if c= a+b+d+e+f+g then
writeln('Да')
else
writeln('­Нет');

readln(c);
End.


Подскажите, что не так! smile 

Это сообщение отредактировал(а) KPEHDEL - 17.9.2010, 20:33
PM MAIL WWW ICQ   Вверх
KPEHDEL
Дата 18.9.2010, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 31.3.2010

Репутация: нет
Всего: нет



Люди СОС!
PM MAIL WWW ICQ   Вверх
Фантом
Дата 18.9.2010, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



А что, в Паскале откуда-то появился оператор возведения в степень? Убирайте "^". 

Заодно полезно учесть, что:
1) Вы пытаетесь считать не куб суммы цифр, а сумму кубов цифр. Это не одно и то же.
2) Качество кода - настолько безобразное, насколько оно вообще может быть безобразным в программе из двадцати строчек.


PM   Вверх
KPEHDEL
Дата 18.9.2010, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 31.3.2010

Репутация: нет
Всего: нет



Спасибо!
Написал вот так:
Код

var a,b,d,c,e,f,g,h,j,i,k,l:integer;

Begin

Read (c);

C:=sqr(c);
a:=c mod 10;
b:=c div 10 mod 10;
d:=c div 100 mod 100;
e:=c div 1000 mod 1000;
f:=c div 10000 mod 10000;
g:=c div 100000 mod 100000;
h:=c div 1000000 mod 1000000;
i:=c div 10000000 mod 10000000;
k:=c div 100000000 mod 100000000;
l:=a+b+d+e+f+g+h+i+k;
l:=l*l*l;
if c=l then
writeln('да')
else
writeln('нет');
readln(c);
End.



компилится... Если вводить двухзначное число то всё норма, если трёхзначное, то выдаёт ошибку... Пожалуйста подскажите в чём дело.
PM MAIL WWW ICQ   Вверх
Фантом
Дата 18.9.2010, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



В программе есть еще одна смысловая ошибка - Вы сначала возводите число в квадрат, а потом считаете сумму цифр уже этого квадрата. Она и приводит к проблемам - для многих трехзначных чисел (для некоторых двузначных, кстати, тоже) итоговое значение l в имеющемся варианте программы выходит за границы типа integer.
PM   Вверх
KPEHDEL
  Дата 23.9.2010, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 31.3.2010

Репутация: нет
Всего: нет



Но ведь я наоборот сначала складывают "l:=a+b+d+e+f+g+h+i+k;".
а потом уже возважу в куб. l:=l*l*l;
КАк правильно?

PM MAIL WWW ICQ   Вверх
Фантом
Дата 24.9.2010, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



Цитата(KPEHDEL @  23.9.2010,  23:46 Найти цитируемый пост)
Но ведь я наоборот сначала складывают "l:=a+b+d+e+f+g+h+i+k;".
а потом уже возважу в куб. l:=l*l*l;
КАк правильно?

Это-то правильно, но вот строчку C:=sqr©; надо перенести позже подсчета l. Иначе все операции с вычислением суммы цифр делаются не с исходным числом, а с его квадратом.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0629 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.