3, тк во время цикла он смещается на (2, 1), не считая команду 1, в итоге он смещается на (6, 8), значит в цикле он должен смещаться на (-3, -4)
Пропускная способность сист.шины=разрядность шины(бит)*частота шины(Гц)
64*1066*1000000=68224000000 бит/с, т.е. после перевода ок.8133 Мб/с
// PascalABC.NET 3.1, сборка 1230 от 27.04.2016
const
КолСтрок=3;
КолСтолбцов=5;
begin
var Массив: array [1..КолСтрок,1..КолСтолбцов] of integer;
var СуммыПоСтрокам: array[1..КолСтолбцов] of integer;
Writeln('Введите элементы массива (',КолСтрок,',',
КолСтолбцов,') построчно:');
for var строка:=1 to КолСтрок do
for var столбец:=1 to КолСтолбцов do begin
Read(Массив[строка,столбец]);
СуммыПоСтрокам[строка]+=Массив[строка,столбец]
end;
Writeln('Суммы построчно:');
for var строка:=1 to КолСтрок do Print(СуммыПоСтрокам[строка])
end.
<u><em>Тестовое решение</em></u>
Введите элементы массива (3,5) построчно:
7 -5 13 19 -11
8 23 -15 -6 0
12 -6 -9 0 12
Суммы построчно:
23 10 9
Зависит от того в сколькобитовой кодировке оно закодировано.
Считаешь количество символов в строке (включая пробелы и знаки препинания), и умножаешь на количество бит, приходящееся на 1 символ.
если на 1 символ приходится 8 бит (8-битовая кодировка, например koi-8), то информационный объем слова "Дмитрий" будет равен 7*8=56 бит
если кодировка 16-битная, то 7*16=112 бит.
Инвариантные фрагменты кода
Оптимизация инвариантных фрагментов кода тесно связана с проблемой оптимального программирования циклов. Внутри цикла могут встречаться выражения, фрагменты которых никак не зависят от управляющей переменной цикла. Их называют инвариантными фрагментами кода. Современные компиляторы часто определяют наличие таких фрагментов и выполняют их автоматическую оптимизацию. Такое возможно не всегда, и иногда производительность программы зависит целиком от того, как запрограммирован цикл. В качестве примера рассмотрим следующий фрагмент программы (язык Turbo Pascal):
for i := 1 to n do
begin
...
for k := 1 to p do
for m := 1 to q do
begin
a[k, m] := Sqrt(x * k * m - i) + Abs(u * i - x * m + k);
b[k, m] := Sin(x * k * i) + Abs(u * i * m + k);
end;
...
am := 0;
bm := 0;
for k := 1 to p do
for m := 1 to q do
begin
am := am + a[k, m] / c[k];
bm := bm + b[k, m] / c[k];
end;
end;
Здесь инвариантными фрагментами кода являются слагаемое Sin(x * k * i) в первом цикле по переменной m и операция деления на элемент массива c[k] во втором цикле по m. Значения синуса и элемента массива не изменяются в цикле по переменной m, следовательно, в первом случае можно вычислить значение синуса и присвоить его вспомогательной переменной, которая будет использоваться в выражении, находящемся внутри цикла. Во втором случае можно выполнить деление после завершения цикла по m. Таким образом, можно существенно сократить количество трудоёмких арифметических операций.
<span>[править] Приоритеты оптимизации</span>