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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2012, 22:48   #1
kalosha-stepa
Пользователь
 
Регистрация: 13.09.2012
Сообщений: 25
Смущение массив с не повторяющимися элементами

Надо дополнить цикл!!!
Нужно!!! Заполнить массив 5×5 случайным образом неповторяющимися числами от 0 до 24.

Код:
program z2;
Const n=5;
Type masInt=array [1..10,1..10] of integer;
var a:masInt; i,j: integer;


procedure Form (var a:masInt);
var i,j:integer;

begin
for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(25)+1;
end;

procedure Print (a: masInt);
var i,j: integer;
begin
for i:=1 to n do begin
for j:=1 to n do write(a[i,j],' ');
writeln;
end;end;

Begin
Form(a);
Print(a);
End.

Последний раз редактировалось Stilet; 18.09.2012 в 22:55.
kalosha-stepa вне форума Ответить с цитированием
Старый 18.09.2012, 23:21   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Создайте множество, куда записывайте только что помещённый в матрицу элемент. Перед помещением элемента в матрицу проверяйте, находится ли он уже в множестве или нет. Если находится, то вновь генерируйте число и снова проверяйте на принадлежность тому множеству.
Вадим Мошев вне форума Ответить с цитированием
Старый 18.09.2012, 23:43   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так подойдёт -
сначала заполняем числами от 0 до 24 подряд, потом перемешиваем?

Код:
const N = 5;
const NN = N*N;
var
 i, j, k, buf:integer;
 mas: array [1..NN] of integer;
begin
 //заполнить от 0 до 24
 for i:=1 to NN do mas[i]:=i-1; 
 Randomize;

 //----------перемешать-------------
 for i:=1 to NN-1 do
  begin
   k:= Random(NN-i+1)+i;
   if k<>i then begin
     buf:=mas[i];
     mas[i]:=mas[k];
     mas[k]:=buf;
   end;
  end;
 //-------------вывести в массив 5x5-------------
 k:=1;
 for i:=1 to N do
   for j:=1 to N do  begin
     a[i,j] := mas[k];
     inc(k)
   end;
end;
p.s. взял пример кода ОТСЮДА и доработал для вас.
НЕ ПРОВЕРЯЛ!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПАСКАЛЬ.Заданы два одномерных массива.Объединить их в один массив, включив второй массив между K-ым и (K+1)-м элементами первого. dmitriy20104 Помощь студентам 7 06.07.2012 20:44
Заполнить двумерный массив, размерностью 7х7, случайными не повторяющимися числами. Татьана Паскаль, Turbo Pascal, PascalABC.NET 3 20.10.2011 14:37
удаления строк с повторяющимися элементами satten Microsoft Office Excel 2 18.09.2010 17:20