6. Function Rus (mes:string):string
Функция перекодировки ANSI– строки в ASCII- строку, позволяет выдавать сообщения в консольном приложении на русском языке.
Таблица спецификаций локальных переменных.
Наименование |
Назначение |
Тип |
Область допустимых значений |
Единицы измерения |
mes |
Строка для перевода из ANSI кода в ASCII код. |
Строка |
До 255 букв |
- |
h |
Счетчик букв |
Целое число |
1..255 |
- |
Словесно-математический метод решения задачи.
h=1;
1 Если h ≤длине строки mes тогда:
2 Если h-ый элемент строки mes лежит между «А» и «п», то
Найти код символа, отнять от кода символа 64, присвоить символу символ с полученным кодом.
Иначе если h-ый элемент строки mes лежит между «р» и «я», то
Найти код символа, отнять от кода символа 16, присвоить символу символ с полученным кодом.
Конец условия 2.
h=h+1;
Проверка условия 1.
Тело основной программы.
Программа осуществляет поиск элемента, равный 10 и присваивание коэффициенту К одно из значений .
Словесно-математический метод решения задачи.
Если R 0, то:
Вывод надписи: «Введите выбранную цифру» с использованием функции rus;
Ввод R;
2. Если R=1, то вызов процедуры Input(mat);
Конец условия 2.
3. Если R=2, то вызов процедур RND(Mat) и Output(Mat);
Конец условия 3.
4. Если R=3, то вызов процедуры Output(Mat);
Конец условия 4.
5. Если R=4, то вызов процедуры Obmen14(Mat);
Конец условия 5.
6. Если R>4, то вывод надписи 'Данной цифры не указано в меню. Введите цифру от 0 до 4' с использованием функции rus;
Конец условия 6.
Проверка условия 1.
Если условие 1 не выполняется, закрыть программу.
Тесты.
Номер теста |
Начальная матрица |
Результат |
||||||||||||||||||||||||||||||||||||||||||||||||||
1 |
|
К=1 |
||||||||||||||||||||||||||||||||||||||||||||||||||
2 |
|
К=0 |
Блок-схема.
Исходный текст программы.
program Mat_obm_14_with_MENU;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
m=10;
n=5;
Type
TM = Array[1..m,1..n] of Integer;
var
Mat:TM;
R:integer;
function Rus(mes:string):string;
var h:byte;
begin
for h:=1 to length(mes) do
case mes[h] of
'А'..'п':mes[h]:=Chr(Ord(mes[h])-64);
'р'..'я':mes[h]:=Chr(Ord(mes[h])-16);
end;
rus:=mes;
end;
Procedure menu;
Begin
writeln;
writeln(rus('0-Выход'));
writeln(rus('1-Ввод от руки'));
writeln(rus('2-Заполнение матрицы случайными числами + вывод'));
writeln(rus('3-Вывод'));
writeln(rus('4-Поиск элемента'));
writeln;
end;
Procedure Input(var V:TM);
Var I,J:Integer;
Begin
Writeln(rus(Введите элементы матрицы: ));
For I:=1 to m do
begin
For j:=1 to n do
Read(V[i,j]);
Writeln;
end;
End;
Procedure RND(var V:TM);
Var I,J:Integer;
Begin
Randomize;
For I:=1 to m do
begin
For j:=1 to n do
V[i,j]:=Random(10);
end;
End;
Procedure Poisk14(var V:TM);
Var R,j:integer;
Begin
for j:= 1 to n do
begin
R:=V[1,j];
V[1,j]:=V[4,j];
V[4,j]:=R;
end;
End;
Procedure Output(Var V:TM);
var i,j:integer;
Begin
for i:=1 to m do
begin
for j:=1 to n do
Write(V[i,j],' ');
Writeln;
end;
End;
begin
Menu;
Repeat
writeln(rus('Введите выбранную цифру: '));
readln(R);
if R=1 then Input(Mat);
if R=2 then
begin
RND(Mat);
Output(Mat);
end;
if R=3 then Output(Mat);
if R=4 then Obmen14(Mat);
if R>4 then writeln(rus('Данной цифры не указано в меню. Введите цифру от 0 до 4'));
Until R=0;
End.
Результат работы.