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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2009, 06:15   #1
Bapr
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 18
По умолчанию Создать матрицу A[1..N,1..M]. Найти две строки, в которых элементы одинаковы, но могут стоять в различной

Код:
uses crt;
const
n=3;
m=3;
var
a:array[1..n,1..m]of integer;
q:boolean;
i,j,x,y,z:integer;
begin
randomize;
clrscr;
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(3);
write(a[i,j]:4);
end;
writeln;
end;
for j:=1 to m do a[2,j]:=a[3,m-j+1];
for i:=1 to n-1 do
for x:=i+1 to n do
begin
z:=0;

for j:=1 to m do
{chislo v stroke ne dolzhno povtoryatsya}
q:=true;
for y:=1 to m do
if a[i,j]=a[x,y] then q:=false;
inc(z);
if z>=m then
begin
writeln('line:',i:3,',',x:3);
for j:=1 to m do write(a[i,j]:4);
writeln;
end
else
write('no:':6,i:2,x:2);
end;
readln;
end.
помогите доделать

Последний раз редактировалось Stilet; 09.12.2009 в 07:49.
Bapr вне форума Ответить с цитированием
Старый 09.12.2009, 09:50   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

я не разобрался в вашем алгоритме сравнения.. он точно не рабочий.
могу предложить такой вариант - сначал сортируете элементы построчно, а потом банальное сравнение элементов строк...
справитесь?

кстати, про разные способы сортировки хорошо рассказано тут:
http://www.programmersforum.ru/showthread.php?t=450

Последний раз редактировалось Serge_Bliznykov; 09.12.2009 в 09:59.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.12.2009, 10:42   #3
Veselyn
Форумчанин
 
Аватар для Veselyn
 
Регистрация: 29.01.2009
Сообщений: 175
По умолчанию

Код:
const
  n=7;
  m=6;
var
  a:array[1..n,1..m]of integer;
  i,j,x,y,z:integer;
begin
  {создаем случаную матрицу и выводим её на экран}
  randomize;
  for i:=1 to n do
    begin
      for j:=1 to m do
        begin
          a[i,j]:=random(99);
          write(a[i,j]:4);
        end;
      writeln;
    end;
  {контрольная строка - принудительно копируем одну строку в обратном порядке, после проверки должно вывести строки 2,5 как одинаковые}
  for j:=1 to m do a[2,j]:=a[5,m-j+1];
  {цикл проверки по строкам}
  for i:=1 to n-1 do
    for x:=i+1 to n do
      begin
        {счетчик совпадений}
        z:=0;
        {счетчик совпадений}
        for j:=1 to m do
          for y:=1 to m do
            if a[i,j]=a[x,y] then inc(z);
        {условие больше-равно т.к. возможны повторяющиеся элементы}
        if z>=m then
          begin{вывод результата}
            writeln('line:',i:3,',',x:3);
            for j:=1 to m do write(a[i,j]:4);
            writeln;
          end
          else
            write('no:':6,i:2,x:2);
      end;
  readln;
end.
Все люди делятся на 10 типов: те, кто понимают двоичную систему счисления и те, кто нет.
Veselyn вне форума Ответить с цитированием
Старый 09.12.2009, 11:29   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Veselyn, хочу отметить, что программа работает
некорректно... ;(

одинаковыми считаются не только строки
3 4 4 1 0 2
2 3 4 3 0 1
2 2 1 3 3 1

но и строки:
Код:
   3   4   4   1   0   2
   3   3   3   3   3   3
код для проверки:
Код:
  a[2,1] := 3;
  a[2,2] := 4;
  a[2,3] := 4;
  a[2,4] := 1;
  a[2,5] := 0;
  a[2,6] := 2;

  a[5,1] := 3;
  a[5,2] := 3;
  a[5,3] := 3;
  a[5,4] := 3;
  a[5,5] := 3;
  a[5,6] := 3;
p.s. а может быть, я просто недопонял задание, и это действительно одинаковые строки?!
просто я решил, что по заданию одинаковые строки, где элементы СТРОГО совпадают, только переставлены местами...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.12.2009, 16:14   #5
Bapr
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 18
По умолчанию

uses crt;
type Tmatr=array[1..50,1..50] of integer;
var a,b:tmatr;
n,m,i,j,s1,s2:integer;
procedure SortStr(var z:Tmatr);{sortirovka metod pyzur'ka}
var i,j,k,x:integer;
begin
for i:=1 to n do
for j:=1 to m-1 do
for k:=1 to m-1 do
if z[i,k]>z[i,k+1] then
begin
x:=z[i,k];
z[i,k]:=z[i,k+1];
z[i,k+1]:=x;
end;
end;
procedure Sravn(z:tmatr;var s1:integer;var s2:integer);{procedura sravneniya}
var i,j,k,t,q:integer;

begin
q:=0; {peremennaya dlya fiksacii sobutiya sovpadeniya strok}
for i:=1 to n-1 do
for k:=i+1 to n do
begin
t:=0;
for j:=1 to m do
if z[i,j]=z[k,j] then t:=t+1;{esli elementu 2h strok sovpadauyt}
if t=m then {esli sovpali vse}
begin
q:=1; {fiksiryem sobutie}
s1:=i; {zapominaem 1 stroky}
s2:=k; {zapominaem 2 stroky}
Break; {konec poiska}
end;
end;
if q=0 then {esli sovpadeniu net,soobshaem}
begin
writeln('Takih strok net!');
readln;
halt;
end;
end;

begin
clrscr;
write('Vvedite kolicestvo strok n=');readln(n);
write('Vvedite kolicestvo stolbcov m=');readln(m);
writeln('Vvedite elementy matricy:');
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
readln;
clrscr;
writeln('Matrica:');
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:4);
writeln;
end;
b:=a; {zapominaem neotsortirovannyuy matricy}
SortStr(a); {sortiryem po strokam}
Sravn(a,s1,s2); {ishem odinakovue}
writeln('Elementy strok ',s1,' i ',s2,' ravny');
for j:=1 to m do write(b[s1,j],' '); {1 sovpavshaya stroka}
writeln;
for j:=1 to m do write(b[s2,j],' '); {2 sovpavshaya stroka}
readln
end.
через процедуры сделал, не стал мучатся, мб кому то пригодится
Bapr вне форума Ответить с цитированием
Старый 11.12.2009, 17:43   #6
tyui567
Новичок
Джуниор
 
Регистрация: 11.12.2009
Сообщений: 5
По умолчанию

Составить программу, которая создаст файл, состоящий из 15-ти целых чисел из диапазона от 0 до 30.Затем выведет на экран все элементы созданного файла
и сумму чётных элементов этого файла.
tyui567 вне форума Ответить с цитированием
Старый 11.12.2009, 17:43   #7
tyui567
Новичок
Джуниор
 
Регистрация: 11.12.2009
Сообщений: 5
По умолчанию

Составить программу, которая создаст файл, состоящий из 15-ти целых чисел из диапазона от 0 до 30.Затем выведет на экран все элементы созданного файла и сумму чётных элементов этого файла.
tyui567 вне форума Ответить с цитированием
Старый 11.12.2009, 17:44   #8
tyui567
Новичок
Джуниор
 
Регистрация: 11.12.2009
Сообщений: 5
По умолчанию решите задачу пожалуйса

Составить программу, которая создаст файл, состоящий из 15-ти целых чисел из диапазона от 0 до 30.Затем выведет на экран все элементы созданного файла и сумму чётных элементов этого файла.
tyui567 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
1.Найти в матрице первую строку, все элементы которой отрицательны 2.отсортировать элементы массива по в w0lf16 Помощь студентам 2 22.11.2009 15:47
Дана матрица 6х4, найти и выдать на экран строки содержащие нулевые элементы >>arty<< Помощь студентам 19 04.07.2009 13:59
Найти кол-во её стобцов,все элементы которых различны. Delphi. Flashcherry Помощь студентам 1 21.03.2009 00:46
массив с количеством элементов N. Напечатать те его элементы, индексы которых являются степенями двойки Маськ@ Паскаль, Turbo Pascal, PascalABC.NET 4 12.12.2008 16:34