// PascalABC.NET 3.3, сборка 1555 от 21.10.2017 // Внимание! Если программа не работает, обновите версию!
begin Writeln('*** Исходный массив 8x7 ***'); var a:=MatrRandom(8,7,-99,99); a.Println(5); Writeln(5*a.ColCount*'-'); // исходный массив // заменить все элементы первых трех столбцов на их квадраты for var i:=0 to 2 do a.SetCol(i,a.Col(i).Select(x->x*x).ToArray); Writeln('*** После замены в 3х первых столбцах ***'); a.Println(5); Writeln(5*a.ColCount*'-'); // вставить между средними строками первую строку SetLength(a,9,7); for var i:=7 downto 4 do a.SetRow(i+1,a.Row(i)); a.SetRow(4,a.Row(0)); Writeln('*** После вставки первой строки в середину ***'); a.Println(5); Writeln(5*a.ColCount*'-'); // удалить все столбцы, в которых 1-й элемент больше последнего var d:=0; for var i:=0 to 6 do if a[0,i]>a[8,i] then d+=1 else if d>0 then a.SetCol(i-d,a.Col(i)); SetLength(a,9,7-d); Writeln('*** После удаления столбцов ***'); a.Println(5); Writeln(5*a.ColCount*'-'); // поменять местами первую и последнюю строку a.SwapRows(0,a.RowCount-1); Writeln('*** Результирующий массив ***'); a.Println(5) end.
Тут есть несколько ошибок: 1. Отсутствует ключевое слово begin в основной программе. Насколько я понял, оно должно стоять перед k:=0.
2. Внутри функции ODD не объявлена локальная переменная i, которая используется в цикле.
3. В основной программе вы вызываете функцию ODD и передаете ей аргумент с[i], хотя в описании функции аргумент не обозначен.
4. В функции ODD происходит обработка глобального массива C, что делать нельзя.
5. Функция должна возвращать какое-то значение. В описании вы указали integer, а в основной программе в строке if Odd(c[i])... вы подразумеваете, что оно должно быть булевым, т.е. или True или False.
Исправьте, и может быть (если ошибок больше нет) программа заработает.
1011
3 единицы в записи