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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2012, 20:12   #1
Nikitos_
Пользователь
 
Регистрация: 30.05.2012
Сообщений: 32
Восклицание не могу понять почему не правильно выводятся числа массива

Program games;
uses crt,graph;
const
n=4;
type mas=array[1..n,1..n] of integer;

VAR gm,gd,ch,vx,vy,l:integer;
a:mas;

procedure zastavka;
begin
end;
procedure kvadrat(x,y,c,k:integer) ;
var i,j:integer;
begin
for i:=0 to k-1 do
for j:=0 to k-1 do
rectangle(x+i*c,y+j*c,x+i*c+c,y+j*c +c);
end;

procedure massiv;
var
b:array[1..n*n] of integer;
i,j,k,q,g: integer;
begin
randomize;
k:=0;
for i:=1 to 1 do
for j:=1 to 16 do
begin
inc(k);
b[k]:=j;
end;
for q:=1 to 16 do
begin
i:=random(15)+1;
g:=b[i];
j:=random(15)+1;
b[i]:=b[j];
b[j]:=g;
end;
k:=0;
for i:=1 to n do
begin
for j:=1 to n do
begin
inc(k);
a[i,j]:=b[k];
write(a[i,j]:6);
end;
writeln;
end;
writeln;
readln;
end;

procedure odin (x,y,h:integer);
var i,j,d:integer;
ds:string;
begin
for i:=0 to 4-1 do
for j:=0 to 4-1 do begin
d:=a[i,j];
str(d,ds);
if d<16 then
outtextXY (x+h div 2+h*j,y+h div 2+h*i, ds);
end;

end;
BEGIN
begin
gd:=detect;
Initgraph(gm,gd,'C:\TP7.1\TP\BGI');
vx:=180;
vy:=100;
l:=60;
ch:=4;
end;
massiv;
kvadrat(vx,vy,l,ch);
odin(vx,vy,l);
outtext('exit "enter"');
readln;
end.
Nikitos_ вне форума Ответить с цитированием
Старый 30.05.2012, 20:18   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

код оформляй кнопкой с #, иначе он нечитабелен!
Poma][a вне форума Ответить с цитированием
Старый 30.05.2012, 20:20   #3
Nikitos_
Пользователь
 
Регистрация: 30.05.2012
Сообщений: 32
По умолчанию

Код:
Program games;
uses crt,graph;
const
n=4;
type mas=array[1..n,1..n] of integer;
 
VAR gm,gd,ch,vx,vy,l:integer;
a:mas;
 
procedure  zastavka;
 begin
 end;
procedure kvadrat(x,y,c,k:integer) ;
var i,j:integer;
begin
for i:=0 to k-1 do
for j:=0 to k-1 do
rectangle(x+i*c,y+j*c,x+i*c+c,y+j*c+c);
end;
 
procedure massiv;
var
b:array[1..n*n] of integer;
i,j,k,q,g: integer;
begin
randomize;
k:=0;
for i:=1 to 1 do
for j:=1 to 16 do
begin
inc(k);
b[k]:=j;
end;
for q:=1 to 16 do
begin
i:=random(15)+1;
g:=b[i];
j:=random(15)+1;
 b[i]:=b[j];
 b[j]:=g;
  end;
 k:=0;
 for i:=1 to n do
 begin
 for j:=1 to n do
 begin
 inc(k);
 a[i,j]:=b[k];
 write(a[i,j]:6);
 end;
 writeln;
 end;
 writeln;
readln;
end;
 
procedure odin (x,y,h:integer);
var i,j,d:integer;
ds:string;
begin
for i:=0 to 4-1 do
for j:=0 to 4-1   do    begin
d:=a[i,j];
str(d,ds);
if d<16 then
outtextXY (x+h div 2+h*j,y+h div 2+h*i, ds);
end;
 
end;
BEGIN
begin
gd:=detect;
Initgraph(gm,gd,'C:\TP7.1\TP\BGI');
vx:=180;
vy:=100;
l:=60;
ch:=4;
end;
massiv;
kvadrat(vx,vy,l,ch);
odin(vx,vy,l);
outtext('exit "enter"');
readln;
end.
Nikitos_ вне форума Ответить с цитированием
Старый 30.05.2012, 20:33   #4
Nikitos_
Пользователь
 
Регистрация: 30.05.2012
Сообщений: 32
По умолчанию

ну может всё таки кто нибудь сможет помочь? срочно надо
Nikitos_ вне форума Ответить с цитированием
Старый 30.05.2012, 20:46   #5
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

если не секрет, то что делает данная программа.
Poma][a вне форума Ответить с цитированием
Старый 30.05.2012, 21:31   #6
Nikitos_
Пользователь
 
Регистрация: 30.05.2012
Сообщений: 32
По умолчанию

это не вся программа а кусок, мне задали сделать игру пятнашки в этом куске программы массыв заполнения клеток рондомом , числа от 1 до 15, но у меня почемуто выводятся не все числа и они повторяются, я даже не знаю что сделать(
Nikitos_ вне форума Ответить с цитированием
Старый 31.05.2012, 07:19   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Вот... программа будет работать медленно (ОЧЕНЬ), но будет... (я и так впервые в 2-ух мерными работал... и с заданиями такого типа....)
Код:
function IntToStr ( t : Integer) : string;

begin
        Str (t, IntToStr);
end;

var
        a : array [1..4, 1..4] of Integer;
        rn, st : string; // repeats numbers
        i, j, t : Integer;

begin
        Randomize;

        rn := '';

        for i := 1 to 4 do begin
                for j := 1 to 4 do begin
                        t := Random (16);

                        while Pos (IntToStr (t), rn) <> 0 do
                                t := Random (16);

                        rn := rn + ' ' + IntToStr (t);
                        a[i, j] := t;
                end;
        end;

        a[i, j] := 0;
        for i := 1 to 4 do
                for j := 1 to 4 do
                        WriteLn (a[i, j]);


end.
Poma][a вне форума Ответить с цитированием
Старый 31.05.2012, 11:52   #8
JIeIIIa
Пользователь
 
Регистрация: 21.12.2011
Сообщений: 54
По умолчанию

Код:
var
   c:array [1..16] of byte;
   a:array [1..4,1..4] of byte;
   i, j, r, U:byte;

begin
   U:=16;
   for i:=1 to U do c[i]:=i;
   randomize;
   while U>1 do begin
       r:=random(U-1)+1;
       a[(U-1) div 4 +1, (U-1) mod 4 +1]:=c[r];
       for i:=r to U-1 do c[i]:=c[i+1];
       U:=U-1;
   end;
   a[1,1]:=c[1];
   for i:=1 to 4 do begin
      for j:=1 to 4 do write(a[i,j]:5);
      writeln;
   end;
   readln;
end.
Заполнит массив 4*4 случайным образом числами от 1 до 16.
JIeIIIa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять почему не дорисовывает.. victor5133 Общие вопросы C/C++ 0 24.02.2012 12:55
Не могу понять почему не работает функция SeRhy JavaScript, Ajax 0 09.02.2012 17:41
Не могу понять в почему ошибка Donim Паскаль, Turbo Pascal, PascalABC.NET 5 08.06.2011 23:07
Почему не работает...хм....понять не могу! Артур Иваныч Microsoft Office Excel 9 01.12.2009 17:58
Не могу понять почему блокируется папка Paul Hindenburg Общие вопросы Delphi 4 07.05.2009 10:47