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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2008, 15:03   #1
stasig
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 31
По умолчанию Двумерный массив. ПАскаль

БУду признателен если поможете с задачей. Взялся решать, и мой огромный код не понравился преподавателю.

Дан двумерный массив символов. Определить пару строк, содержащих наибольшее число символов(одинаковых для обеих строк).
stasig вне форума Ответить с цитированием
Старый 02.12.2008, 16:21   #2
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

КОД в студию !
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 02.12.2008, 18:39   #3
stasig
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 31
По умолчанию

Да он больно здаровый. Вобщем не получился толком. Подскажите чтонибудь. А то так никогда не научусь)
stasig вне форума Ответить с цитированием
Старый 02.12.2008, 19:06   #4
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Может этот поменьше....

Код:
uses crt;
const n=10;
var i,j,max,l,r,temp:integer;
    a:array[1..n,1..n] of char;

function FindEqual(x,y:integer):integer;
var i,j,n1:integer;
    m,m1:set of char;
begin
n1:=0;
m:=[];{создаем множество неповторяющихся символов 1 строки}
m1:=[];{создаем множество неповторяющихся символов 2 строки}
for i:=1 to n do
 if not(a[x,i] in m) then begin {если символ из строки еще не встречался то проверякм}
                          m:=m+[a[x,i]];{записываем его в множество}
                           for j:=1 to n do 
                            if (a[x,i]=a[y,j])and(not(a[y,j] in m1)) then begin {если символ из 2 строки еще не встречался}
                                                   m1:=m1+[a[y,j]];
                                                   inc(n1);
                                                  end;
                          end;

 FindEqual:=n1;
end;
begin
randomize;
clrscr;
for i:=1 to n do
 begin
 for j:=1 to n do
 begin
  a[i,j]:=chr(random(25)+65);{инициализируем матрицу из букв A..Z}
  write(a[i,j],' ');
 end;
 writeln;
 end;

l:=1;r:=1;max:=0;
for i:=1 to n do
 for j:=1 to n do
   if i<>j then begin{чтобы не проверять строку саму с собой}
                 temp:=FindEqual(i,j);{подсчитываем количество совпадений}
                 if temp>max then begin
                                   l:=i;
                                   r:=j;
                                   max:=temp;
                                  end;
                 end;

  writeln(l,' ',r,' ',max,'chars');

end.
Нормальное состояние техники - нерабочее, все остальное частный случай.

Последний раз редактировалось alex_fcsm; 02.12.2008 в 19:52.
alex_fcsm вне форума Ответить с цитированием
Старый 02.12.2008, 19:48   #5
stasig
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 31
По умолчанию

А можешь объяснить немного. Я то не всё пока понимаю
stasig вне форума Ответить с цитированием
Старый 02.12.2008, 19:53   #6
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Читайте комментарии и конкретно пишите что непонятно
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 02.12.2008, 20:04   #7
stasig
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 31
По умолчанию

function FindEqual(x,y:integer):integer;{c этим ниразу не сталкивался, не понятно}

и почему два VAR?
stasig вне форума Ответить с цитированием
Старый 02.12.2008, 20:07   #8
Манжосов Денис :)
Участник клуба
 
Регистрация: 29.01.2008
Сообщений: 1,039
По умолчанию

Друг, вы как вообще код составили для преподавателя, если не можете понять почему два Var здесь?
1 Var - глобальные переменные
2 Var - Переменные, относящиеся к функции FindEqual
Манжосов Денис :) вне форума Ответить с цитированием
Старый 02.12.2008, 20:57   #9
stasig
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 31
По умолчанию

а функция FindEgual что делает?
stasig вне форума Ответить с цитированием
Старый 02.12.2008, 21:02   #10
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

количество найденных символов ! Посмотри и про Трасируй не ленись ! Тебе же надо ! =)
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный Массив n01R Помощь студентам 9 19.12.2009 16:41
Двумерный массив... slim5 Помощь студентам 2 20.06.2008 23:16
Паскаль (двумерный массив) RAVAL)) Помощь студентам 5 16.06.2008 00:27
Двумерный массив в С++ Draid Помощь студентам 2 07.03.2008 22:06
Двумерный массив help Imperceptible Паскаль, Turbo Pascal, PascalABC.NET 25 02.03.2007 20:00