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

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

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

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


Гость






Помогите решить задачку, плиз. Сижу парюсь с ней уже весь день... Перечитал лекции, книжки по паскалю - понять не могу как решить. Вот задачка:
Найти все трехзначные числа кратные 7 и сумма цифр которых тоже кратна 7.
Плж помогите...
 К началу страницы 
+ Ответить 
klem4
сообщение 3.12.2006 21:06
Сообщение #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.12.2006 21:25
Сообщение #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 цикла?
 К началу страницы 
+ Ответить 
klem4
сообщение 3.12.2006 21:44
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.12.2006 21:54
Сообщение #5


Гость






klem4, то есть, число 518, например, по-твоему, на 7 никак не делится? (я про циклы до 7 максимум) smile.gif
(вопрос был про 3-значные)
 К началу страницы 
+ Ответить 
klem4
сообщение 3.12.2006 22:05
Сообщение #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 
 К началу страницы 
+ Ответить 
}0pa
сообщение 4.12.2006 8:31
Сообщение #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 
 К началу страницы 
+ Ответить 
StudentTNGU
сообщение 4.12.2006 9:14
Сообщение #8


Гость






Всем большое спасибо за помощь. Теперь все работает.
 К началу страницы 
+ Ответить 
klem4
сообщение 4.12.2006 13:06
Сообщение #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 
 К началу страницы 
+ Ответить 
}0pa
сообщение 4.12.2006 13:58
Сообщение #10


Пионер
**

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

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


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

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



--------------------
Ну, а почему бы в свободное время не позаниматься программированием?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 4.12.2006 14:18
Сообщение #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

 



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