![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
StudentTNGU |
![]()
Сообщение
#1
|
Гость ![]() |
Помогите решить задачку, плиз. Сижу парюсь с ней уже весь день... Перечитал лекции, книжки по паскалю - понять не могу как решить. Вот задачка:
Найти все трехзначные числа кратные 7 и сумма цифр которых тоже кратна 7. Плж помогите... |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Ну вот самый простой вариант:
uses crt;
var
i, j, k, l: Integer;
begin
clrscr;
for i := 1 to 9 do
for j := 0 to 9 do
for k := 0 to 9 do
for l := 0 to 9 do
if (i + j + k + l = 7) and ((i * 1000 + j * 100 + k * 10 + l) mod 7 = 0) then
writeln(i, j, k, l);
readln;
end.
Да и циклы конечно поменьше можно сделать ... for i := 1 to 7 do
for j := 0 to 6 do
for k := 0 to 6 do
for l := 0 to 6 do
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Гость |
![]()
Сообщение
#3
|
Гость ![]() |
|
klem4 |
![]()
Сообщение
#4
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Цитата спасибо! Но... почему именно 4 цикла? Потомучто в 4-х значном числе 4 цифры ![]() Для каждой цикл. Можно былобы конечно сделать одним циклом, но тогда придется выделять цифры из числа, но как видишь можно обойтичь и без этого. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
klem4, то есть, число 518, например, по-твоему, на 7 никак не делится? (я про циклы до 7 максимум)
![]() (вопрос был про 3-значные) |
klem4 |
![]()
Сообщение
#6
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
![]() Цитата (вопрос был про 3-значные) Я еще и вторую часть задания не так сделал (сумма чисел = 7, а надо чтобы тоже кратна была) (поэтому цикл до 7 и сделал) ![]() Глюки .... В общем вот для трехзначных вариант если сам не переделал еще ![]() for i := 1 to 9 do
for j := 0 to 9 do
for k := 0 to 9 do
if ((i * 100 + j * 10 + k) mod 7 = 0) and ((i + j + k) mod 7 = 0) then
writeln(i, j, k);
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
}0pa |
![]()
Сообщение
#7
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 75 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот самый правильный вариант:
Код uses crt; var i:integer; function GetCount_SumDigit(n:integer):boolean; var c,k,s:integer; begin GetCount_SumDigit:=false; s:=0;k:=0; while n<>0 do begin c:=n mod 10; k:=k+1; s:=s+c; n:=n div 10; end; if (s mod 7=0) then GetCount_SumDigit:=true; end; begin for i:=100 to 999 do if (GetCount_SumDigit(i)=true)and(i mod 7=0) then writeln(i) end. -------------------- Ну, а почему бы в свободное время не позаниматься программированием?
|
StudentTNGU |
![]()
Сообщение
#8
|
Гость ![]() |
Всем большое спасибо за помощь. Теперь все работает.
|
klem4 |
![]()
Сообщение
#9
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Цитата Вот самый правильный вариант: И с чего ты это взял ? среднее время (1000 прогонов) Моя: 2063 ms Твоя: 2283 ms Так что ... -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
}0pa |
![]()
Сообщение
#10
|
|||
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 75 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну,может быть чуть быстрей, но согласись, что мой вариант более понятен!!!Хотя это дело вкуса, меня просто так учили!В данном случае, главное результат
![]()
-------------------- Ну, а почему бы в свободное время не позаниматься программированием?
|
|||
klem4 |
![]()
Сообщение
#11
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Цитата о согласись, что мой вариант более понятен Не соглашусь ... Но и спорить с тобой дальше тоже не собираюсь. Вопрос решен, тема закрыта. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 16.04.2025 1:44 |