Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2012, 01:36   #1
golqaer
Новичок
Джуниор
 
Регистрация: 18.03.2012
Сообщений: 1
По умолчанию Общий знаменатель для случайного массива чисел

Условие: программа создает массив случайных чисел, в массиве n чисел. Программа должна найти общий наибольший знаменатель для всех n чисел и вывести его на экран.
Вот моя программа и ее проблема в том, что она не работает
жирным выделил свое подозрение на ошибку, но я не знаю точно уже


Цитата:
program massive_mod;
uses crt;
const n=3;
var M:array[1..n] of integer;
i,d,s:integer;
cond:boolean;
begin

clrscr;
d:=1;
randomize;

for i:=1 to n do
M[i]:=random(10);

repeat
cond:=false;
for i:=1 to n-d do
if M[i]>M[i+1] then
begin
cond:=true;
s:=M[i+1];
M[i+1]:=M[i];
M[i]:=s;
end;
d:=d+1;
until cond=false;

for i:=1 to n do
write(M[i], ' ');


cond:=true;

for i:=1 to n do
begin
d:=M[n];
d:=d+1;
repeat
d:=d-1;
if M[i] mod d = 0 then
cond:=true
else cond:=false;
until cond=false;
end;


writeln;
write(d);


readln;
end.

Последний раз редактировалось golqaer; 18.03.2012 в 12:29. Причина: Ошибка
golqaer вне форума Ответить с цитированием
Старый 18.03.2012, 12:45   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Если я правильно понял задание и предполагается найти наименьший общий знаменатель , то что то вроде этого
Код:
const n=3;
var M:array[1..n] of integer;
i,d,s,j:integer;
cond:boolean;
Begin
  randomize;

for i:=1 to n do
M[i]:=1+random(10);

d:=n;
repeat
cond:=false;
for i:=1 to d-1 do
if M[i]>M[i+1] then
begin
s:=M[i+1];
M[i+1]:=M[i];
M[i]:=s;
cond:=true;
end;
dec(d)
until Not cond;

for i:=1 to n do
write(M[i], ' ');


cond:=true;

for i:=M[n] to High(integer) do
Begin
  cond:=true;
  for j := 1 to N do
  Begin
   if i mod M[j] <> 0 then
  Begin
    cond:=false;
    break
  End;
  End;
  if cond then
  Begin
    d:=i;
    break
  End;
End;

writeln;
write(d);

End.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 18.03.2012, 13:29   #3
Arhangel7
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 90
По умолчанию

тут, наверное, задание неполное.
Т.к. в вашем случае все представлено так
n[1] n[2] n[3]
...X.....X.....X
ИМХО:
где X - любое натуральное число, n = 3;
X = +~(бесконечность);
Т.к. обратное не указано (не запрещено), значит так, писать код вообще не имеет смысла.

как - то так...
как-то так
Arhangel7 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается составить массив чисел для массива букв TheKostarico Общие вопросы C/C++ 4 30.11.2011 14:47
Вывод случайного массива с параметрами с клавиатуры Turistovik Microsoft Office Excel 6 24.09.2010 22:10
[C++ Файли]Определить наибольший общий делитель трех натуральных чисел. basav1k Фриланс 6 06.06.2010 18:24
Вычислить наибольший общий делитель двух натуральных чисел А и В SsIDit Помощь студентам 1 09.05.2010 11:54
Генератор случайных чисел для массива! Tetramorf Общие вопросы C/C++ 8 11.03.2010 13:51