![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Задали в вузике две задачки, одну осилил сам, но почему-то какие-то проблемы. Вторую не очень понимаю, как реализовать. Помогите, пожалуйста. Спасибо заранее.
1.Дан целочисленный массив Х(3n). Последовательность элементов этого массива оп-ределяет на плоскости n квадратов со сторонами, параллельными осям координат. Так, (х1,х2) - координаты левого верхнего угла первого квадрата, а х3 - длина его стороны, и т. д. Определить номера квадратов, которым принадлежит точка с известными координа-тами (p,q). Код:
program Project4;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
X: array[0..8] of integer;
p,q: integer;
l,i,j: integer;
x1,x2,x3: integer;
begin
Writeln('vvedi p,q');
Readln(p,q);
X[0]:=3;
X[1]:=5;
X[2]:=4;
X[3]:=9;
X[4]:=1;
X[5]:=15;
X[6]:=4;
X[7]:=17;
X[8]:=2;
l := Length(X);
i := 0;
j := 1;
while (i < l) do begin
x1 := X[i];
x2 := X[i + 1];
x3 := X[i + 2];
//Writeln(x1,',',x2,',',x3);
if ((p >= x1) and (q >= x2) and (p <= (x1 + x3)) and (q <= (x2 + x3))) then
begin
writeLn(j);
//writeln(l);
end;
Inc(j);
Inc(i,3);
end;
readln;
end.2. Приложил условие. Последний раз редактировалось js_m1m, 22.10.2012 в 14:16. |
|
#2
|
||||
|
||||
|
Цитата:
Должно быть так: Код:
if ((p >= x1) and (q <= x2) and (p <= (x1 + x3)) and (q >= (x2 - x3))) then |
|
#3
|
|||
|
|||
|
Благодарю, все верно. А есть какие-нибудь аналоги clrscr на делфи? И как ими пользоваться(погугли и ЯННП).
|
|
#4
|
|||
|
|||
|
Цитата:
Для символов (выдрано из контекста): procedure ClearConsoleWindow; var ConsoleHandle:THandle; ConsoleInfo: TConsoleScreenBufferInfo; Coord:TCoord; WrittenChars:DWORD; begin FillChar(ConsoleInfo,SizeOf(TConsoleScreenBufferIn fo),0); Последний раз редактировалось nixel, 22.10.2012 в 20:12. |
|
#5
|
|||
|
|||
|
Цитата:
А зачем? В чем смысл очистки консоли. Как раз для консольного приложения чистить окно является плохим тоном. Если уж очень приспичило, то просто открой свою консоль. |
|
#6
|
|||
|
|||
|
Cделал без чистки консоли. И чистить ее все-таки заодно научился. Теперь со второй программой.
Сделал, но опять не работает. Что не так? Код:
program laba_5;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
l,i,j,m: integer;
a: array[0..255,0..255] of char;
procedure filling;
var i,j,m:integer;
b: array[0..2] of char;
begin
b[0]:='*';
b[1]:='?';
b[2]:='$';
randomize;
for i:= 1 to m do
for j:=1 to m do
a[i,j]:=b[random(3)];
end;
procedure cut;
var m1,m2,d1,d2,i1,i2,s2,m,k:integer;
begin
m1:=m;
m2:=m;
repeat
m2:=1+m2 div sqr(m2)*(m-1);
m1:=1+(m1 div m2)*(m2 div m1)*(m-1);
d2:=1-2*(m2 div sqr(m2));
d1:=1-2*(m1 div sqr(m1));
i1:=m1-d1*k;
s2:=m2;
while i1 <> m1 do begin
i1:=i1+d1;
s2:=s2-d2;
i2:=s2;
while i2<> m2 do begin
i2:=i2+d2;
a[i1,i2]:=' ';
end;
end;
until (m1=m) and (m2=m);
end;
procedure print;
var i,j,m:integer;
begin
for i:=1 to m do begin
for j:=1 to m do
write(a[i,j]);
writeln;
end;
end;
begin
Writeln('Enter the length of the square');
Readln(m);
filling;
cut;
print;
Writeln('Press enter to exit.');
readln;
end.Последний раз редактировалось js_m1m, 22.10.2012 в 23:00. |
|
#7
|
|||
|
|||
|
Код:
program laba_5;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
m: integer;
a: array[0..255,0..255] of char;
procedure filling;
var i,j:integer;
b: array[0..2] of char;
begin
b[0]:='*';
b[1]:='?';
b[2]:='$';
randomize;
for i:= 1 to m do
for j:=1 to m do
a[i,j]:=b[random(3)];
end;
procedure cut;
var zv,pr,i1,i2,k:integer;
begin
pr:=m div 2;
zv:=1;
For k:=1 to m div 2 do
begin
for i1:=1 to pr do
Write(' ');
for i1:=1 to zv do
Write(A[pr+i1,k]);
WriteLn;
Inc(zv,2);
Dec(pr);
end;
For k:=((m div 2)+1) to m do
begin
for i1:=1 to pr do
Write(' ');
for i1:=1 to zv do
Write(A[pr+i1,k]);
WriteLn;
Inc(pr);
Dec(zv,2);
end;
end;
begin
Writeln('Enter the length of the square');
Readln(m);
filling;
cut;
Writeln('Press enter to exit.');
readln;
end. |