В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия

Pascal
дан двухмерный массив, нужно заменить первые k элементов на противоположные по знаку. ограничений нет, используйте сколько хотите переменных;

Показать ответ
Ответ:
andreewnamap0c5nx
andreewnamap0c5nx
03.09.2020 11:18

===== PascalABC.NET =====

begin

 var (m, n) := ReadInteger2('Число строк и столбцов массива:');

 var a := MatrRandom(m, n, -99, 99);

 a.Println(4);

 var k := ReadInteger('Сколько первых элементов обработать?');

 if not k.InRange(1, m * n) then

   Println('Введено недопустимое значение')

 else

 begin  // замена построчно

   var r := k div n;   // число полных строк

   if r > 0 then

   for var i := 0 to r - 1 do

     for var j := 0 to n - 1 do

       a[i,j] := -a[i,j];

   for var j := 0 to k - r * n - 1 do

     a[r,j] := -a[r,j];

   a.Println(4)  

 end

end.

Второй вариант использует более продвинутые возможности PascalABC.NET. Замена выполняется единственным оператором.

begin

 var (m, n) := ReadInteger2('Число строк и столбцов массива:');

 var a := MatrRandom(m, n, -99, 99);

 a.Println(4);

 var k := ReadInteger('Сколько первых элементов обработать?');

 if not k.InRange(1, m * n) then

   Println('Введено недопустимое значение')

 else

 begin  // замена построчно

   a.Transform((p, i, j) -> n * i + j < k ? -p : p);

   a.Println(4)  

 end

end.


Pascal дан двухмерный массив, нужно заменить первые k элементов на противоположные по знаку. ограни
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота