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

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

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

 
Closed Topic Открыть новую тему 
> Помогите с задачей, найти 3-хзначные числа кратные 7 и......
сообщение
Сообщение #1


Гость






Помогите решить задачку, плиз. Сижу парюсь с ней уже весь день... Перечитал лекции, книжки по паскалю - понять не могу как решить. Вот задачка:
Найти все трехзначные числа кратные 7 и сумма цифр которых тоже кратна 7.
Плж помогите...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


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

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

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


Ну вот самый простой вариант:

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";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(klem4 @ 3.12.2006 21:06) *

Да и циклы конечно поменьше можно сделать ...

 for i := 1 to 7 do
for j := 0 to 6 do
for k := 0 to 6 do
for l := 0 to 6 do


спасибо! Но... почему именно 4 цикла?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


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

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

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


Цитата
спасибо! Но... почему именно 4 цикла?


Потомучто в 4-х значном числе 4 цифры smile.gif

Для каждой цикл. Можно былобы конечно сделать одним циклом, но тогда придется выделять цифры из числа, но как видишь можно обойтичь и без этого.


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


Гость






klem4, то есть, число 518, например, по-твоему, на 7 никак не делится? (я про циклы до 7 максимум) smile.gif
(вопрос был про 3-значные)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


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

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

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


lol.gif

Цитата

(вопрос был про 3-значные)


Я еще и вторую часть задания не так сделал (сумма чисел = 7, а надо чтобы тоже кратна была) (поэтому цикл до 7 и сделал) smile.gif

Глюки ....

В общем вот для трехзначных вариант если сам не переделал еще smile.gif

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";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

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

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


Вот самый правильный вариант:
Код

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.


--------------------
Ну, а почему бы в свободное время не позаниматься программированием?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Всем большое спасибо за помощь. Теперь все работает.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


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

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

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


Цитата
Вот самый правильный вариант:


И с чего ты это взял ? среднее время (1000 прогонов)

Моя: 2063 ms
Твоя: 2283 ms

Так что ...


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


Пионер
**

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

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


Ну,может быть чуть быстрей, но согласись, что мой вариант более понятен!!!Хотя это дело вкуса, меня просто так учили!В данном случае, главное результат smile.gif

М
Чему тебя учили - это никого не интересует... Главное - чему НАучили... А вот тут у тебя проблемы. Пока от тебя исходит только чрезмерная уверенность, ничем больше не подкрепленная! (заявления типа "Вот самый правильный вариант" вообще очень опасны, ты же не знаешь КРИТЕРИЕВ, по которым будет оцениваться программа, а вот по критерию легкости повторного использования, извини, твоя программа - пример как НЕ НАДО делать, потому что ТЫ ЖЕ в ней через месяц не разберешься, или разберешься с трудом)...
volvo



--------------------
Ну, а почему бы в свободное время не позаниматься программированием?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


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

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

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


Цитата
о согласись, что мой вариант более понятен


Не соглашусь ... Но и спорить с тобой дальше тоже не собираюсь. Вопрос решен, тема закрыта.


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

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

 





- Текстовая версия 18.04.2024 18:12
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name