Вопрос по паскалю:
Дана целочисленная матрица размером m x n и целые числа b и c. Определить, на каком месте Расположены эти числа в матрице.
Помогите решить плз в Завтро 8 утра перездача назначена последняя.
Паскаль. Массивы. Найти положение значений
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
[syntax=pascal]
const
m=4;
n=5;
type
TArr = array[1..m,1..n] of integer;
var
a:TArr;
b,c,i,j:integer;
function Search(what:integer; where:TArr; var i,j:integer):boolean;
begin
i:=1; j:=1;
while (what<>where[i,j]) and (i<=m) and (j<=n) do begin
inc(j);
if j>n then begin
j:=1; inc(i);
end;
end;
Search:=what=where[i,j];
end;
begin
{заполнение}
for i:=1 to m do for j:=1 to n do a[i,j]:=random(10);
{вывод}
for i:=1 to m do begin
for j:=1 to n do write(a[i,j]:4);
writeln;
end;
{запрос}
write('Введите b и c через пробел: '); readln(b,c);
{поиск}
if Search(b,a,i,j)
then writeln('Значение b найдено в позиции ', i, ':',j)
else writeln('Значение b в массиве не найдено');
if Search(c,a,i,j)
then writeln('Значение с найдено в позиции ', i, ':',j)
else writeln('Значение с в массиве не найдено');
writeln('Нажмите Enter');
readln;
end.
[/syntax]
const
m=4;
n=5;
type
TArr = array[1..m,1..n] of integer;
var
a:TArr;
b,c,i,j:integer;
function Search(what:integer; where:TArr; var i,j:integer):boolean;
begin
i:=1; j:=1;
while (what<>where[i,j]) and (i<=m) and (j<=n) do begin
inc(j);
if j>n then begin
j:=1; inc(i);
end;
end;
Search:=what=where[i,j];
end;
begin
{заполнение}
for i:=1 to m do for j:=1 to n do a[i,j]:=random(10);
{вывод}
for i:=1 to m do begin
for j:=1 to n do write(a[i,j]:4);
writeln;
end;
{запрос}
write('Введите b и c через пробел: '); readln(b,c);
{поиск}
if Search(b,a,i,j)
then writeln('Значение b найдено в позиции ', i, ':',j)
else writeln('Значение b в массиве не найдено');
if Search(c,a,i,j)
then writeln('Значение с найдено в позиции ', i, ':',j)
else writeln('Значение с в массиве не найдено');
writeln('Нажмите Enter');
readln;
end.
[/syntax]
Спасибо большое за помошь.
Подсажите пожалуста, а если в массиве будет несколько чисел одинаковых(например 3) можно ли както сделать чтоб выводилось несколько координат?
0 0 8 2 2
6 3 1 3 4
0 4 0 8 0
2 9 3 7 3
0 0 8 2 2
6 3 1 3 4
0 4 0 8 0
2 9 3 7 3
и если незатруднит поясните пожалуста значение write(a[i,j]:4);
Код: Выделить всё
{вывод}
for i:=1 to m do begin
for j:=1 to n do write(a[i,j]:4);
writeln;
end;
-
- Сообщения: 163
- Зарегистрирован: 05 мар 2009, 11:27
это код вывода массива, с форматированием. Он идет по строчно, и в другом цикле продолжает выводить по столбцам. Таким образом выводит красиво в виду прямоугольной таблички, потому что под кажное число выделено всего 4 знака.