// PascalABC.NET 3.3, сборка 1573 от 04.11.2017 // Внимание! Если программа не работает, обновите версию!
begin var n:=ReadInteger('Количество строк в матрице:'); var m:=9; Writeln('*** Исходная матрица ***'); var a:=new real[n,m]; Randomize; for var i:=0 to n-1 do for var j:=0 to m-1 do a[i,j]:=Random(-100,100)/10; a.Println(5,1); Writeln(5*a.ColCount*'-'); var col:=1; Write('Средние арифметические: '); while col<=m-1 do begin Write(a.Col(col).Average:0:2,' '); col+=2 end; Writeln end.
Программа не работает, по тому, что в цикле после условия "if p=13", в блоке else у вас идет "зацикливание". По goto вы прыгаете опять обратно в начало итерации цикла. Очевидно, что успешность выполнения завершения цикла зависит от значения P, так как в любом случаи, если P != 13, вы возращаетесь в начало цикла.
Маленькое лирическое отступление: Отформатированный код будет приведен в коментариях, если кому-то не ясно.
Ваш код сложно назвать "спагетти кодом", т.к. у вас все довольно очевидно, с тем лишь отличием, что вы используете дериктиву goto, от неё откажитесь в вашей практике, сложнее понять как будет функционировать ваша программа, хотя вашем коллегам по старше будет это очевидно, при наличии опыта.
P.S. Создайте новый вопрос с описанием задачи и скиньте мне сообщением ссылку.
за отметку "Лучший ответ" и нажатую кнопочку " " тут и в моем профиле.
begin
var n := ReadInteger;
for var i := 1 to 9 do
$'{n}*{i}={n*i}'.Println
end.
55*1=55*2=105*3=155*4=205*5=255*6=305*7=355*8=405*9=45