Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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


Ответ
 
Опции темы
Старый 06.05.2009, 14:26   #1
pavel42
Пользователь
 
Регистрация: 06.04.2009
Сообщений: 95
По умолчанию не знаю как доделать прогу на паскале

задание:
Сформировать новый массив из элементов, кратных заданному числу и расставить его элементы в обратном порядке.

вот что я сделал

Код:
program zadacha7;
uses crt;
type mass=array[1..50] of integer;
var x:mass; i,n,y,k,p:integer;

procedure p1(var n:integer; var x:mass);
          begin
          write('ўўҐ¤ЁвҐ Є®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ¬*ббЁў* n=');
          readln(n);
          for i:=1 to n do
          begin
          x[i]:=random(10);
          writeln(x[i]);
          end;
          end;
procedure p2(n:integer; x:mass; var y,k:integer);
          begin
          write('‚ўҐ¤ЁвҐ §*¤***®Ґ зЁб«® y=');
          readln(y);
          writeln('ќ«Ґ¬Ґ*вл Єа*в*лҐ y ў ®Ўа**®¬ Ї®ап¤ЄҐ:');
          for i:=1 to n do
          if x[i] mod y = 0 then
          begin
          k:=1;
          while k<>0 do
          begin
          k:=0;
          for i:=1 to n-1 do
          begin
          if x[i]<x[i+1] then
          begin
          k:=1;
          p:=x[i];
          x[i]:=x[i+1];
          x[i+1]:=p;
          end;
          end;
          end;
          for i:=1 to n do
          writeln(x[i]);
          end;
          end;

begin
clrscr;
randomize;
p1(n,x);
p2(n,x,y,k);
readln
end.
у меня почему то выводит не только числа кратные y, а все элементы массив, до того как делал что бы выводилось в обратном порядке, то было все норм, тоесть выводил только числа краные y. И еще Сформировать новый массив??? это вообще не понимаю как.
pavel42 вне форума Ответить с цитированием
Старый 06.05.2009, 14:36   #2
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

а чтобы не сделать еще массив и туда занести искомые элементы а затем вывести их в обратном порядке.

Код:
program zadacha7;
uses crt;
type mass=array[1..50] of integer;
var x,yy:mass; i,n,y,k,p,j:integer;

procedure p1(var n:integer; var x:mass);
          begin
          write('ўўҐ¤ЁвҐ Є®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ¬*ббЁў* n=');
          readln(n);
          for i:=1 to n do
          begin
          x[i]:=random(100);
          writeln(x[i]);
          end;
          end;
procedure p2(n:integer; x:mass; var y,k:integer;yy:mass);
          begin
          write('‚ўҐ¤ЁвҐ §*¤***®Ґ зЁб«® y=');
          readln(y);
          writeln('ќ«Ґ¬Ґ*вл Єа*в*лҐ y ў ®Ўа**®¬ Ї®ап¤ЄҐ:');
          j:=0;
          for i:=1 to n do
          if x[i] mod y = 0 then
          begin
            inc(j);
            yy[j]:=x[i];
          end;
          for i:=j downto 1 do
          writeln(yy[i]);
          end;

begin
clrscr;
randomize;
p1(n,x);
p2(n,x,y,k,yy);
readln
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 06.05.2009, 14:44   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
Сформировать новый массив из элементов, кратных заданному числу
нет охоты в твой код вникать, предложу свой, на скорую руку:
Код:
var a:array[1..10] of integer; k,i:integer;
begin
 write('Число ');readln(k);
 for i:=1 to 10 do begin
  write('a[',i,'] ');readln(a[i]); {Вводим элемент массив}
  if a[i] mod k<>0 then a[i];=0;{Сверяем его кратность и если некратен обнулим}
 end;
{Выведем на экран полученное}
  for i:=1 to 10 do  if a[i]<>0 then write(a[i]:5)
end.
Отсортируешь сам.

Да и еще, ребята. копируйте код с русскими символами, или пишите транслитом.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.05.2009, 14:48   #4
pavel42
Пользователь
 
Регистрация: 06.04.2009
Сообщений: 95
По умолчанию

я так понял что вы меня не поняли ))

Код:
program zadacha7;
uses crt;
type mass=array[1..50] of integer;
var x:mass; i,n,y,k,p:integer;

procedure p1(var n:integer; var x:mass);
          begin
          write('Введите количество элементов массива n=');
          readln(n);
          for i:=1 to n do
          begin
          x[i]:=random(10)+1;
          writeln(x[i]);
          end;
          end;
procedure p2(n:integer; x:mass; var y:integer);
          begin
          write('заданное число y=');
          readln(y);
          writeln('Элементы массива кратные y:');
          for i:=1 to n do
          if x[i] mod y = 0 then
          begin
          writeln(x[i]);
          end;
          end;
procedure p3(n,y:integer; x:mass; var k:integer);
          begin
          writeln('Кратные y и в обратном порядке') ;
          k:=1;
          while k<>0 do
          begin
          k:=0;
          for i:=1 to n-1 do
          begin
          if x[i]<x[i+1] then
          begin
          k:=1;
          p:=x[i];
          x[i]:=x[i+1];
          x[i+1]:=p;
          end;
          end;
          end;
          for i:=1 to n do
          writeln(x[i]);
          readkey;
          end;

begin
clrscr;
randomize;
p1(n,x);
p2(n,x,y);
p3(n,y,x,k);
readln
end.
вот мне нужно что бы в процедуре 3и он выводил не все числа массива, а только те которые кратны y

Последний раз редактировалось pavel42; 06.05.2009 в 14:51. Причина: Исправил на русский текст
pavel42 вне форума Ответить с цитированием
Старый 06.05.2009, 15:05   #5
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
for i:=1 to n do
          if x[i] mod y= 0 then   writeln(x[i]);
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 06.05.2009, 15:07   #6
pavel42
Пользователь
 
Регистрация: 06.04.2009
Сообщений: 95
По умолчанию

тогда можно вторую процеду вообще не писать, а в 3ей просто добавить ВВод у и все? я правильно мыслю ???
pavel42 вне форума Ответить с цитированием
Старый 06.05.2009, 15:12   #7
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Цитата:
Сообщение от pavel42 Посмотреть сообщение
тогда можно вторую процеду вообще не писать, а в 3ей просто добавить ВВод у и все? я правильно мыслю ???
Да, правильно
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 06.05.2009, 15:21   #8
pavel42
Пользователь
 
Регистрация: 06.04.2009
Сообщений: 95
По умолчанию

Код:
program zadacha7;
uses crt;
type mass=array[1..50] of integer;
var x:mass; i,n,y,k,p:integer;

procedure p1(var n:integer; var x:mass);
          begin
          write('Количество элементов массива n=');
          readln(n);
          for i:=1 to n do
          begin
          x[i]:=random(10)+1;
          writeln(x[i]);
          end;
          end;
procedure p2(n:integer; x:mass; var y,k:integer);
          begin
          write('Заданное число y=');
          readln(y);
          writeln('Числа кратные У в обратном порядке');
          k:=1;
          while k <>0 do
          begin
          K:=0;
          for i:=1 to n-1 do
          begin
          if x[i]<x[i+1] then
          begin
          k:=1;
          p:=x[i];
          x[i]:=x[i+1];
          x[i+1]:=p;
          end;
          end;
          end;
          for i:=1 to n do
          if x[i] mod y = 0 then
          writeln(x[i]);
          end;

begin
clrscr;
randomize;
p1(n,x);
p2(n,x,y,k);
readln
end.
все работает...теперь подскажите как сформировать новый массив из того что получилось ??? ну под задание что бы подходило.
Сформировать новый массив из элементов, кратных заданному числу и расставить его элементы в обратном порядке.
pavel42 вне форума Ответить с цитированием
Старый 06.05.2009, 15:34   #9
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
program zadacha7;
uses crt;
type mass=array[1..50] of integer;
var x,nm:mass;
    n:integer;
procedure p1(var n:integer;var x:mass);
var i:integer;
          begin
          write('Количество элементов массива n=');
          readln(n);
          for i:=1 to n do
          begin
          x[i]:=random(100)+1;
          writeln(x[i]);
          end;
          end;
procedure p2(x:mass);
var i,j,y:integer;
          begin
          write('Заданное число y=');
          readln(y);
          for i:=n downto 1 do
          if x[i] mod y = 0 then
           begin
            inc(j);
            nm[j]:=x[i];
            writeln(nm[j]);
           end;
          end;

begin
clrscr;
randomize;
p1(n,x);
p2(x);
readln;
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите доделать прогу на с++ Olya90 Помощь студентам 8 20.04.2009 23:14
Помогите доделать прогу Deis Паскаль, Turbo Pascal, PascalABC.NET 3 19.01.2009 22:24
Помогите пожалуста не знаю как в паскале рисовать id055 Помощь студентам 2 13.11.2008 12:24


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS