Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Даны два массива x[1] <= ... <= x[k], y[1] <= ... 
:(
    Опции темы
EduDO
  Дата 15.12.2010, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.12.2010

Репутация: нет
Всего: нет



Даны два массива x[1] <= ... <= x[k], y[1] <= ... <= y[l].
Найти их "пересечение", т.е. массив z[1] <= ... <= z[m],
содержащий их общие элементы, причем, кратность каждого элемента
в массиве z равняется минимуму из его кратностей в массивах x и y.
Число действий должно быть порядка k+l. 

Ниже Код, выполненый на ПасКАЛЕ, помогите в C# перевести... С синтаксисом никак не могу разобраться



Код



Program InterSect;
Const
cMaxIndex = 100; { максимальное число элементов для определения массива }

Type
TIndex = 1..cMaxIndex; { тип для описания индекса }
TArray = array [0..cMaxIndex] of Word; { описание массива. Элемент с индексом 0 - верхняя граница массива }

Var
x : TArray; { массив x }
y : TArray; { массив y }
z : TArray; { массив z }

{ Процедура печати массива }
Procedure Print (a : TArray; title : string);
var
i : TIndex;

begin
write (title, ':');
for i := 1 to a [0] do
write (' ', a [i]);
writeln;
end;

{ Процедура ввода массива }
Procedure Input (var a : TArray; title : string);
var
i : TIndex;

begin
writeln ('Введите элементы массива ', title, ' (не более ', cMaxIndex, ' элементов). Введите 0 для окончания ввода');

a [0] := 0;

for i := 1 to cMaxIndex do
begin
readln (a [i]);
if a [i] = 0 then break
else Inc (a [0]);
end;
end;

{ Процедура для вормирования "пересечения" массивов }
Procedure InterSection (a : TArray; b : TArray; var c : TArray);
var
i : TIndex; { переменная для перебора элементов первого массива }
j : TIndex; { переменная для перебора элементов второго массива }

n : TIndex; { количество элементов первого массива }
m : TIndex; { количество элементов второго массива }

begin
n := a [0];
m := b [0];

c [0] := 0;
j := 1;
i := 1;

{ пока есть элементы в первом массиве }
while i <= n do
begin
{ находим первый элемент во втором массиве, который не меньше текущего из первого }
while (j <= m) and (b [j] < a [i]) do Inc (j);
if j > m then break;

{ добавляем одинаковые элементы в третий массив (меньшая кратность получается автоматически) }
while a [i] = b [j] do
begin
{ Заносим элемент в массив c }
Inc (c [0]);
c [c [0]] := a [i];

{ переходим к следующим элементам исходных массивов }
Inc (i);
Inc (j);

{ проверяем границы массивов }
if (i > n) or (j > m) then break;
end;

{ пропускаем элементы первого массива до тех пор, пока очередной элемент не станет больше или равен текущего элемента второго массива }
while (i <= n) and (a [i] < b [j]) do Inc (i); 
end;
end;

Begin
Input (x, 'x');
Input (y, 'y');

Print (x, 'x');
Print (y, 'y');

InterSection (x, y, z);

Print (z, 'z');
End.
Program InterSect;

Это сообщение отредактировал(а) EduDO - 15.12.2010, 16:46
PM MAIL   Вверх
CYBERDREAM
Дата 15.12.2010, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 11
Всего: 28



Подсветку для кода сделай сначала, вообще не читабельно (выпадающий список Код)


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0377 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.