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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2007, 01:30   #1
omi
Пользователь
 
Аватар для omi
 
Регистрация: 22.02.2007
Сообщений: 14
По умолчанию Двумерные массивы

Готовлюсь к экзаменам. Застряла с вроде простой задачкой.

Организовать ручное заполнение массива целыми числами, среди которых встречаются четные и нечетные значения. Из исходной матрицы получить новую путем удаления строк, содержащих четные элементы. Вывести на экран исходную и полученную матрицы.

Знаю, что строки просто не должны вписываться в новую матрицу. но никак не получается это сделать. У меня эти в эти строки просто вписываются 0. Да и вообще что-то я там намудрила. Может все можно сделать гораздо проще. Заранее спасибо

program zad_6;
uses crt;
var m: array[1..4,1..5] of integer;
m1: array [1..4,1..5] of integer;
i,i1,j,j1,k, k1: byte;
n: integer;
om: array [1..20] of byte;
om1: array [1..4] of byte;
begin
ClrScr;
for i:=1 to 4 do
for j:=1 to 5 do
begin
Write('Введите элемент массива ');
readln(m[i,j]);
end;
ClrScr;
WriteLn('Исходный массив: ');
writeln;
for i:=1 to 4 do
begin
for j:=1 to 5 do
Write(m[i,j]: 5);
writeln;
end;
k:=1;
for i:=1 to 4 do
for j:=1 to 5 do
begin
n:=m[i,j] mod 2;
if n=0 then
begin
om[k]:=i;
k:=k+1;
end;
end;
k:=1;
k1:=1;
repeat
if om[k]<>om[k+1] then
begin
om1[k1]:=om[k];
k:=k+1;
k1:=k1+1;
end
else k:=k+1;
until om[k]=0;
k1:=1;
i:=1;
repeat
if i=om1[k1] then
begin
{for j:=1 to 5 do
m1[i,j]:=0;}
k1:=k1+1;
i:=i+1;
end
else
begin
for j:=1 to 5 do
m1[i,j]:=m[i,j];
i:=i+1;
end;
until i=5;

writeln;
for i:=1 to 4 do
begin
if m[i,j]<>0 then
begin
for j:=1 to 5 do
write(m1[i,j]:5);
writeln;
end
else
i:=i+1;
end;
writeln;

for k:=1 to 20 do
write(om[k]:5);
writeln;
for k1:=1 to 4 do
write(om1[k1]:5);

readkey;
end.
omi вне форума Ответить с цитированием
Старый 22.04.2007, 15:16   #2
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

Код:
uses CRT;

const
 Nmax = 3;

type
 TMyMass = array[1..Nmax,1..Nmax] of integer;

var
 a,b: TMyMass;
 c: integer;

procedure ConvertMassive(x: TMyMass; var y: TMyMass; var n: integer);
//n - новое число строк
var i,j: integer;
begin
 n:=0;
 for i:=1 to Nmax do
 begin
  Inc(n);
  for j:=1 to Nmax do
  begin
   if (x[i,j] mod 2)=0 then
   begin
    n:=n-1;
    break;
   end else y[n,j]:=x[i,j];
  end;
 end;
end;

procedure ReadMass(var x: TMyMass);
var i,j: integer;
begin
 ClrScr;
 for i:=1 to Nmax do
  for j:=1 to Nmax do
  begin
   Write('Please input any number:');
   Readln(x[i,j]);
  end;
 Writeln('Thank you.');
end;

procedure WriteMass(x: TMyMass; premess: string; n: integer);
var i,j: integer;
begin
 Writeln(premess);
 for i:=1 to n do
 begin
  for j:=1 to Nmax do Write(x[i,j]:4);
  Writeln;
 end;
end;

begin
 ReadMass(a);
 ConvertMassive(a,b,c);
 WriteMass(a,'The 1st Data: ',Nmax);
 WriteMass(b,'The 2nd Data: ',c);
 Writeln('Press any key to exit...');
 Readkey;
end.
Вот токмо входная матрица у меня квадратная - исправить труда не
составит.
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Старый 22.04.2007, 23:35   #3
omi
Пользователь
 
Аватар для omi
 
Регистрация: 22.02.2007
Сообщений: 14
По умолчанию

Огромное спасибо. Буду разбираться что к чему.
omi вне форума Ответить с цитированием
Старый 23.04.2007, 22:45   #4
omi
Пользователь
 
Аватар для omi
 
Регистрация: 22.02.2007
Сообщений: 14
По умолчанию

Немного переделала под то, как нас "учили" Вот что получилось


Код HTML:
program zad_6;
uses crt;
var m: array[1..4,1..5] of integer;
    m1: array [1..4,1..5] of integer;
    i,j,n: byte;
begin
ClrScr;
for i:=1 to 4  do
  for j:=1 to 5 do
   begin
     Write('Введите элемент массива   ');
     readln(m[i,j]);
   end;
ClrScr;
 WriteLn('Исходный массив: ');
 writeln;
  for i:=1 to 4 do
   begin
    for j:=1 to 5 do
      Write(m[i,j]: 5);
      writeln;
   end;
   n:=0;
   for i:=1 to 4 do
    begin
    inc(n);
     for j:=1 to 5 do
      begin
      if (m[i,j] mod 2)=0 then
       begin
        n:=n-1;
        break;
        end
      else m1[n,j]:=m[i,j];
     end;
    end;
    writeln;
   WriteLn('Измененный массив: ');
 writeln;
  for i:=1 to n  do
   begin
    for j:=1 to 5 do
      Write(m1[i,j]: 5);
      writeln;
   end;
   readkey;
   end.
omi вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы Lioness Помощь студентам 2 06.01.2008 12:39
C++ Двумерные массивы АНЮТКА555 Помощь студентам 1 10.12.2007 12:42
Двумерные массивы Nata!!!@ Помощь студентам 15 05.12.2007 16:15