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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2008, 13:58   #1
Panda
Пользователь
 
Регистрация: 17.06.2008
Сообщений: 24
По умолчанию Выручайте

Нужно переделать программу чтобы она :
1 выводила исходный массив
2 находила общий множитель этого массива
Есть вот такая программка, но в ней к исходному массиву прибавляется1.
Каким образом её дописать?
Код:
program massiv;
uses crt;
const n=10;
var
a:array[1..n] of integer;
i:integer;
s:real;
begin
ClrScr;
randomize;
for i:=1 to 10 do
a[i]:=random(10);
writeln('isxodnii massiv');
for i:=1 to n do
write(a[i], ' ');
readln;
for i:=1 to n do a[i]:=a[i]+1;
writeln('polychennyi massiv');
for i:=1 to n do
write(a[i], ' ');
readln;
end.
Выручайте завтра конец практики!!!!
Panda вне форума Ответить с цитированием
Старый 08.07.2008, 14:12   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Видно я в свое время прогулял эту лекцию... Что такое "общий множитель" в данном случае?
Баламут вне форума Ответить с цитированием
Старый 08.07.2008, 14:14   #3
Panda
Пользователь
 
Регистрация: 17.06.2008
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Баламут Посмотреть сообщение
Видно я в свое время прогулял эту лекцию... Что такое "общий множитель" в данном случае?
Например числа 3 6 9 12 у них общий множитель 3
и должно вывести 1 2 3 4 |3
Panda вне форума Ответить с цитированием
Старый 08.07.2008, 14:25   #4
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

А я-то думал, что это общий делитель... Вот деревня (это я про себя)...
Баламут вне форума Ответить с цитированием
Старый 08.07.2008, 15:04   #5
Panda
Пользователь
 
Регистрация: 17.06.2008
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Баламут Посмотреть сообщение
А я-то думал, что это общий делитель... Вот деревня (это я про себя)...
Есть идеи как можно сделать?
У меня есть ещё один пример программы похожей , но она только в PascalABC работает:
Код:
uses crt;
type mas=array[1..11,1..11] of integer;
mas1=array[1..11,1..11] of real;
matr=array[1..11] of integer;
var a:mas;
a1,a2:mas1;
xy,xy1:matr;
m,n:byte;
i,j:byte;
k,x:integer;
z:byte;
   begin
writeln('vvedite kolicestvo strok v matrice');
read(m);

  writeln('vvedite kolcestvo stolbcov v matrice(<=10)');
read(n);

    begin
    writeln('vvedite znacenie elementov(<=10)');
for i:= 1 to m do
begin
for j:= 1 to n do
begin
write('a[',i,',',j,']=');
read(a[i,j]);
a1[i,j]:=a[i,j];
a2[i,j]:=a[i,j];
end;
writeln;
end;
clrscr;
writeln('isxodnaia dannie');
for i:=1 to m do
begin
for j:= 1 to n do
write(a[i,j]:5);
readln;
end;
k:=32767;
readkey;
end;
i:=m+1;
for i:=1 to m do
begin
xy1[i]:=0;
for x:=2 to k do
begin
z:=0;
for j:=1 to n do
if a[i,j] mod x = 0 then
z:=z+1;
if z=n then
xy1[i]:=x
end;
if xy1[i]=0 then
xy1[i]:=1;
end;
writeln;
for i:= 1 to m do
begin
for j:=1 to n do
begin
a2[i,j]:=a2[i,j]/xy1[i];
end;
end;
j:=n+1;
for i:=1 to m do
a2[i,j]:=xy1[i];
readkey;
writeln('Rezultat');
writeln;
for i:=1 to m do
begin
for j:=1 to n+1 do
if j=n+1 then
begin
write(' |');
write(a2[i,j]:5:0);
end
else
begin
write(a2[i,j]:5:0);
end;
writeln;
end;
 end.
Panda вне форума Ответить с цитированием
Старый 08.07.2008, 15:12   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Условие задачи не совсем корректно. общим множителем может быть и единица, здесь видимо имеется ввиду наибольший множитель, который выводят за скобку. Кстати это то же самое, что и наибольший общий делитель нескольких чисел, так что Баламут не стреляйся, не надо.
А задача решается так:
Код:
uses crt;
const n=6;
var a:array[1..n] of integer;
    i,min,mn,j,k:integer;
begin
clrscr;
writeln('Ishodnyj massiv:');
writeln('Vvedite v stroku s probelom ',n,' chisel:');
for i:=1 to n do
read(a[i]); //вводим данные
readln;
clrscr;
writeln('Ishodnyj massiv:');
for i:=1 to n do
write(a[i],' ');  //выводим массив
writeln;
min:=a[1];  //находим минимальное число в массиве
for i:=1 to n do
if a[i]<min then min:=a[i];
for j:=min downto 2 do //делим все числа массива сначала на минимальное
   begin                      //потом уменьшаем на 1 
    k:=0;
    for i:=1 to n do
    if a[i] mod j=0 then
       begin
         k:=k+1;
       end;
    if k=n then //как только находим число на которое делятся все числа
       begin
        mn:=j; //это максимальный множитель
        break; //выходим из цикла
       end;
   end;
if mn=1 then
   begin
      writeln('Obshego mnozitelja net!');
      readln;
      exit;
  end;
writeln;
writeln('Sokrashennyj massiv:');
for i:=1 to n do
write(a[i] div mn,' ');//выводим массив, деленный на множитель
write('|',mn);//выводим палку и множитель
readln
end.
puporev вне форума Ответить с цитированием
Старый 08.07.2008, 15:40   #7
Panda
Пользователь
 
Регистрация: 17.06.2008
Сообщений: 24
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
Условие задачи не совсем корректно. общим множителем может быть и единица, здесь видимо имеется ввиду наибольший множитель, который выводят за скобку. Кстати это то же самое, что и наибольший общий делитель нескольких чисел, так что Баламут не стреляйся, не надо.
А задача решается так:
Код:
uses crt;
const n=6;
var a:array[1..n] of integer;
    i,min,mn,j,k:integer;
begin
clrscr;
writeln('Ishodnyj massiv:');
writeln('Vvedite v stroku s probelom ',n,' chisel:');
for i:=1 to n do
read(a[i]); //вводим данные
readln;
clrscr;
writeln('Ishodnyj massiv:');
for i:=1 to n do
write(a[i],' ');  //выводим массив
writeln;
min:=a[1];  //находим минимальное число в массиве
for i:=1 to n do
if a[i]<min then min:=a[i];
for j:=min downto 2 do //делим все числа массива сначала на минимальное
   begin                      //потом уменьшаем на 1 
    k:=0;
    for i:=1 to n do
    if a[i] mod j=0 then
       begin
         k:=k+1;
       end;
    if k=n then //как только находим число на которое делятся все числа
       begin
        mn:=j; //это максимальный множитель
        break; //выходим из цикла
       end;
   end;
if mn=1 then
   begin
      writeln('Obshego mnozitelja net!');
      readln;
      exit;
  end;
writeln;
writeln('Sokrashennyj massiv:');
for i:=1 to n do
write(a[i] div mn,' ');//выводим массив, деленный на множитель
write('|',mn);//выводим палку и множитель
readln
end.
Спасибо ОГРОМНОЕ!!!!!
Panda вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SDI приложения, выручайте lacost Общие вопросы C/C++ 9 30.05.2008 12:51
господа выручайте!! Stan Помощь студентам 2 25.06.2007 19:38
Выручайте - Кентов отчисляют! HAMMAN Помощь студентам 6 11.05.2007 17:15