Лабораторная работа № 4. Excel 2. Создание автоматических таблиц для расчетов в Excel 14
15
область ввода
Начальное значение по вертикали
11
Начальное значение по горизонтали
11
Шаr по вертикали
0,5
Шаr nо горизонтали
0,5
область вычислений
11,5 12 12,5 13 13,5
121 126,5 132 137,5 143 148,5
11,5 126,5 132,25 138 143,75 149,5 155,25
12 132 138 144 150 156 162
12,5 137,5 143,75 150 156,25
162,5
168,75
13
143 149,5 156 162,5 169 175,5
13,5 148,5 155,25 162 168,75 175,5 182,25
14
154 161 168 175
189
14,5 159,5 166,75 174 181,25 188,5 195,75
15
172,5
187,5 195 202,5
178 25 186 193,75 201,5 209,25
154
161
168
14,5
159,5
166,75
174
181,2,
1885
193, 75
15
15,5
170,5
178,25)
196
193,75
201,5
09,25
217
224,75
232.5
165
12,5
180
187,5
195
202,5
210
217,5
225
182
183
16
182
203
13
210
20.25
217,5
224,75
165
180
217
2325
240.5
170 S
N = 10;
var
A: array[1..N] of integer;
function Fun: integer;
var
i, M: integer;
begin
writeln('Введите число M=');
readln(M);
for i := 1 to N do
if A[i] = M then Fun := i;
end;
procedure CreateMassive;
var
i: integer;
begin
for i := 1 to N do
begin
A[i] := Random(199) - 100;
write(A[i],' ');
end;
Writeln;
end;
begin
CreateMassive;
Writeln(Fun);
end.
вот вариант исправления который работает, хотя конечно не факт что он работает как там кто-то задумывал)))
не понятно было назначение функции Fun потому она делает поиск номера элемента равного М
а вообще глобальные переменные это зло. Так что проектирование тут в корне не верно
procedure MatInput(a:array[,] of integer);
begin
Writeln('Вводите элементы матрицы построчно, в конце нажимая Enter');
for var i:=0 to Length(a,0)-1 do begin
Write(i+1,': ');
for var j:=0 to Length(a,1)-1 do Read(a[i,j]);
end
end;
procedure MatPrint(a:array[,] of integer);
begin
for var i:=0 to Length(a,0)-1 do begin
for var j:=0 to Length(a,1)-1 do Print(a[i,j]);
Writeln
end
end;
function IsEqual(a:array[,] of integer; j1,j2:integer;
flag:array of boolean):boolean;
// равны ли столбцы с индексами j1 и j2
begin
if flag[j2]=False then begin
Result:=True;
for var i:=0 to Length(a,0)-1 do
if a[i,j1]<>a[i,j2] then begin Result:=False; Break end;
flag[j2]:=Result
end
end;
begin
var n:=ReadInteger('Задайте число строк (столбцов) матрицы:');
var a:array[,] of integer;
var m:=ArrFill(n,False);
SetLength(a,n,n);
MatInput(a);
Writeln('*** Принятая матрица ***');
MatPrint(a);
var k:=1;
for var i:=0 to n-2 do
for var j:=i+1 to n-1 do
if IsEqual(a,i,j,m) then Inc(k);
if k>1 then Writeln('Количество совпадающих столбцов равно ',k)
else Writeln('нет совпадающих столбцов')
end.
Тестовое решение
Задайте число строк (столбцов) матрицы: 3
Вводите элементы матрицы построчно, в конце нажимая Enter
1: 1 2 2
2: 3 5 5
3: 2 2 2
*** Принятая матрица ***
1 2 2
3 5 5
2 2 2
Количество совпадающих столбцов равно 2