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

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

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

 
 Ответить  Открыть новую тему 
> НОД для 10 чисел
сообщение
Сообщение #1


Гость






Дано 10 натуральных чисел. Найти их наибольший общий делитель.
Я использовала алгоритм Архимеда (так, кажется, он называется).

program nod (input, output);
var m, n, i, p, q, x, o: integer;
begin
read(p);
for i:=1 to 9 do
begin
read(q);
if p>q then begin m:=p; n:=q end
else begin m:=q; n:=p end;
while (n<>0) and (m<>0) do begin
o:=m-n; if o>=n then m:=o else
begin m:=n; n:=o end
end;
if m<>0 then x:=m else x:=n;
p:=x
end;
writeln(x)
end.


Думаю, что все написанное выше может оказаться вообще полной ерундой...
Пишу программу второй раз в жизни... Помогите,пожалуйста! И еще у меня чисто теоретический вопрос: можно в цикле for прсваивать переменной новое значение и потом пользоваться уже им (я пытаюсь так сделать со значением "p").

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


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

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

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


Прочитай правила форума ...

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


+ поищи по форуму, вот напрмер аглоритм Евклида : http://forum.pascal.net.ru/index.php?showt...ольший+делитель


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


Гость






Да, конечно, его звали Евклид...автора алгоритма вычисления НОД))...
Спасиб большое за ссылку. Но у меня не 2 числа, а 10!
Проблема, кажется, именно в части алгоритма с циклом for... Посмотрите, пжлст!
Программа работает, но совсем криво...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Dummy,
насколько я понимаю, вот так должно быть:
function nod(a,b : integer): integer;
begin
while (a > 0) and (b > 0) do
if a > b then a := a - b else b := b - a;
nod := a + b;
end;

var i, p, q: integer;
begin
read(p);
for i:=1 to 9 do begin
read(q);
p := nod(p, q);
end;
writeln(p);
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Спасиб огромное!!! =)
Тольк мы функции еще не проходили... А мой длинный и кривой вариант тож работал правильно, как оказалось)))
 К началу страницы 
+ Ответить 

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

 





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