IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> незнаю как назвать, найти количество чисел удалетворящих условию
compiler
сообщение 24.03.2007 19:02
Сообщение #1


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Найдите все трёхзначные числа, равные сумме кубов своих цифр.
я думаю начинать надо с abc=100a+10b+c

заранее благодарен

Добавлено через 1 мин.
моя программа
var 
a,b,c,n:integer;
procedure q( var i,n:integer);
Begin
while n<>0 do begin
i:=number mod 10;
n:=n div 10;
End;
end;
Begin
for n:=99 to 1000 Do begin


a:=q(a,n);
b:=q(b,n);
c:=q(c,n);
if (n=a*a*a+b*b*b+c*c*c) then writeln(n);
end;
read(a);
end.




--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 24.03.2007 19:06
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Код
for i := 1 to 9 do
for j := 0 to 9 do
  for k := 0 to 9 do begin
    T := i*100 + j * 10 + k;
    if i*i*i + j*j*j + k*k*k = T then writeln(T);
  end;


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 24.03.2007 19:06
Сообщение #3


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


что значит <<Illegal assignment to for-loop variable "n">>


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 24.03.2007 19:08
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
что значит <<Illegal assignment to for-loop variable "n">>


По ходу ты в своей проге передаешь переменную цикла FOR как VAR параметр и пытаешься ее изменить в подпрограмме, нельзя так ...


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 24.03.2007 19:15
Сообщение #5


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(klem4 @ 24.03.2007 19:08) *

По ходу ты в своей проге передаешь переменную цикла FOR как VAR параметр и пытаешься ее изменить в подпрограмме, нельзя так ...

а почему так не работает ошибка <<Incompatible types: got "untyped" expected "SmallInt">>
var 
a,b,c,n:SmallInt;
procedure q( i,n:SmallInt);
Begin
while n<>0 do begin
i:=n mod 10;
n:=n div 10;
End;
end;
Begin
a:=0;
b:=0;
c:=0;
for n:=99 to 1000 Do begin
a:=q(a,n);
b:=q(b,n);
c:=q(c,n);
if (n=a*a*a+b*b*b+c*c*c) then writeln(n);
end;
read(a);
end.


PS поставь пожалуйста коментарии к своей проги, я непонял с циклами...

Сообщение отредактировано: compiler - 24.03.2007 19:19


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 24.03.2007 19:22
Сообщение #6


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


По поводу твоей проги smile.gif

Цитата

а почему так не работает ошибка <<Incompatible types: got "untyped" expected "SmallInt">>

Ты еще пытаешься переменной присвоить значение которое возвращает .... процедура, а она ничего не возвращает, потомучто она не функция smile.gif

А в приведенном мной коде все просто: Вместо того чтобы перебирать все числа от 100 до 999 и разбивать каждое на цифры, что ты пытаешься сделать, проще сделать 3 цикла, переменная первого цикла - первая цифра числа, второго - вторая, третьего - третья. Таким образом мы перебираем все возможноы комбинации от 100 до 999, в теле 3-го цикла, мы получаем значение числа с такими цифрами

Первая цифра умноженная на 100 + Вторая * 10 + Третья

В первой итерации это будет

1 * 100 + 0 * 10 + 0 = 100
И смотрим, равна ли она сумме кубов
1*1*1 + 0*0*0 + 0*0*0


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 24.03.2007 19:26
Сообщение #7


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


все разобрался, спасибо...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.03.2007 19:36
Сообщение #8


Гость






FAQ -> Замечательные числа
(числа Армстронга)
 К началу страницы 
+ Ответить 
compiler
сообщение 25.03.2007 11:39
Сообщение #9


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 24.03.2007 19:36) *

FAQ -> Замечательные числа
(числа Армстронга)

и тебе спасибо...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 25.04.2024 12:38
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"