Напечатать те матрицы, в которых под главной диагональю нет заданного пользователем символа - PascalABC.NET
Формулировка задачи:
Доброго времени суток. Помогите разобраться с задачей.
Задана последовательность символьных матриц. Напечатать те их них, в которых под главной диагональю нет заданного пользователем символа.
Решение задачи: «Напечатать те матрицы, в которых под главной диагональю нет заданного пользователем символа»
textual
Листинг программы
Type st=array[1..4] of char;
sr=array[1..4] of st;
Var p:array[1..4] of sr;
i:integer;
s:char;
Procedure read_matr (var matr:sr);
Var i,j:integer;
Begin
For i:=1 to 4 do
For j:=1 to 4 do
Readln(matr[i,j]);
End;
Procedure write_matr (var matr:sr);
Var i,j:integer;
Begin
For i:=1 to 4 do
Begin
For j:=1 to 4 do
Write(matr[i,j]);
Writeln;
End;
End;
Function search (var matst:st):boolean;
Var i:integer;
ok:boolean;
Begin
ok:=true;
i:=1;
While ok and (i<=3) do
If matst[i]=s then ok:=false
Else inc(i);
search:=ok;
End;
Function all(var matr:sr):boolean;
Var i:integer; ok:boolean;
Begin
ok:=true;
i:=2;
While ok and (i<=4)do
If search(matr[i]) then inc(i)
Else ok:=false;
all:=ok;
End;
Begin
Writeln('Введите символ');
Readln(s);
Writeln('Введите матрицы');
For i:=1 to 2 do
Read_matr(p[i]);
Writeln('До');
For i:=1 to 2 do
Write_matr(p[i]);
Writeln('После');
For i:=1 to 2 do
If all(p[i]) then write_matr(p[i]);
End.
Объяснение кода листинга программы
Список элементов кода:
- Объявление переменных:
- Type st=array[1..4] of char; (строка, массив из 4 символов)
- sr=array[1..4] of st; (массив из строк, массив из 4 строк)
- Var p:array[1..4] of sr; (массив из 4 строк, каждая строка - массив из 4 символов)
- i:integer; (целочисленная переменная для цикла)
- s:char; (символьная переменная для сравнения)
- Процедуры чтения и записи матрицы:
- Procedure read_matr (var matr:sr); (чтение матрицы в переменную matr)
- Procedure write_matr (var matr:sr); (запись матрицы из переменной matr)
- Функции поиска и проверки всех элементов матрицы:
- Function search (var matst:st):boolean; (поиск заданного символа в строке)
- Function all(var matr:sr):boolean; (проверка наличия заданного символа во всех строках матрицы)
- Основной цикл программы:
- Begin
- Writeln('Введите символ');
- Readln(s);
- Writeln('Введите матрицы');
- For i:=1 to 2 do
- Read_matr(p[i]);
- Writeln('До');
- For i:=1 to 2 do
- Write_matr(p[i]);
- Writeln('После');
- For i:=1 to 2 do
- If all(p[i]) then write_matr(p[i]);
- End; При вводе символа и двух матриц, программа проверяет наличие этого символа в каждой строке матрицы и выводит на экран только те матрицы, в которых символ не найден.