Матрица: заполнение - Pascal
Формулировка задачи:
Как заполнить квадратную матрицу, таким способом (дана при n = 5):
Решение задачи: «Матрица: заполнение»
textual
Листинг программы
uses crt; var a:array[1..20,1..20]of integer; n,i,j:integer; x,y,number,add,direction:integer; begin clrscr; write('n=');readln(n); x:=n+1; y:=n;//по вертикали number:=1;//номера по порядку Add:=n;//длина пути direction:=-1;//напраление, минус влево и вверх, + вправо и вниз while (add<>0) do//пока не конец маршрута begin i:=0; while (i<>Add) do//пока не конец по горизонтали begin x:=x+direction; a[y,x]:=number; number:=number+1; i:=i+1; end; i:=0; Add:=Add-1; while (i<>Add) do//пока не конец по вертикали begin y:=y+direction; a[y,x]:=number; number:=number+1; i:=i+1; end; direction:=direction*(-1);//меняем знак end; for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln; end; readln end.
Объяснение кода листинга программы
- Объявлены переменные: n, i, j, x, y, number, add, direction и массив a размером 20x20.
- Пользователю предлагается ввести значение переменной n.
- Значение переменной n сохраняется в переменной x, а y устанавливается равным n.
- Инициализируются переменные number, add и direction.
- Запускается цикл while, который выполняется до тех пор, пока add не станет равным 0.
- Внутри цикла while запускается вложенный цикл while, который выполняет заполнение матрицы a по горизонтали.
- Значение переменной direction меняется на противоположное, что меняет направление движения.
- После окончания вложенного цикла while запускается цикл while, который выполняет заполнение матрицы a по вертикали.
- После окончания цикла while выводится заполненная матрица a.
- Пользователю предлагается ввести значение для завершения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д