объяснение:
здесь полная аналогия с тем, как мы складываем в обычной, десятичной системе. объясню лучше на примере.
мы знаем, что можно складывать числа "в столбик":
24
+13
37
то есть строго разряд под разрядом. но что мы делаем, когда в одном разряде получается число, больше 9? правильно, переносим десяток в старший разряд!
15
+19
24 (не 214! )
здесь та же ситуация, отличие только в том, что максимальная цифра в разряде равна 7 (как в нашей десятичной записи максимальная цифра в записи разряда равна 9, а следующее число - 10 - уже состоит из двух цифр в записи - 1 и 0). значит, если мы хотим записать число 8 в восьмеричной записи, мы напишем это как 10₈ (нижний индекс показывает систему счисления)
а теперь попробуем сложить два числа в восьмеричной системе:
21₈
+ 16₈
37₈
разряд под разрядом, ничего сложно. а давайте возьмем пример поинтереснее:
77₈
+ 77₈
7₈ + 7₈ = 16₈, это значит, что в младшем разряде мы напишем 6, а десятки припишем в старший разряд.
1
77₈
+ 77₈
*6
так как 7₈ + 7₈ + 1₈ = 17₈, то 7 записываем в свой, соответствующий, разряд, а единицу в старший, получив при этом ответ 176₈
в правильности ответа можем убедиться, переведя это все в десятичную запись: 77₈ = 63, 176₈ = 126, 63 + 63 = 126, все верно.
единственный дискомфорт при таком методе - непривычные результаты сложения. например, 7 + 7 = 14 (в десятичной записи), но в примере выше 7₈ + 7₈ = 16₈. поэтому тут нужно быть аккуратным!
Поделитесь своими знаниями, ответьте на вопрос:
uses crt; var i,j,min,n,m : integer; s: real; a: array[1..100,1..100] of integer; b: array[1..100] of integer; beginreadln(n,m); s: =0; for i: =1 to n do beginfor j: =1 to m doa[i,j]: =random(25)+1; end;
for i: =1 to n do begin writeln; for j: =1 to m dowrite(a[i,j],' ');
end; writeln; writeln('ìèíèìàëüíûå ýëåìåíòû ñòðîê: '); for i: =1 to n do begin min: =a[i,j]; for j: =2 to m do begin if min> a[i,j] then begin min: =a[i,j]; end; end; s: =s+min;
write(min,' '); end; writeln('avg = ',(s/n): 0: 1); end.