М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации

Составить программу для ввода обработки и печати массивов (одномерных и двухмерных): дана действительная матрица a размера (n×m), n,m≤10. в каждом столбце матрицы a заменить элемент, больший по модулю 10 на 10, а меньший или равно по модулю 10 – на номер столбца, в котором элемент находится. подсчитать число замен обоих видов( 5 для всей матрицы и отдельно для каждого столбца).

👇
Ответ:
EllyGriendfil
EllyGriendfil
16.05.2023

const max=10;

var a:array[1..max,1..max] of integer;

   k1,k2:array[1..max]of byte;  

   n,m,i,j,s1,s2:integer;

begin

repeat

write('Количество строк до ',max,' n=');

readln(n);

until n in [1..max];

repeat

write('Количество столбцов до ',max,' m=');

readln(m);

until m in [1..max];

writeln('Исходная матрица:');

for i:=1 to n do

begin

 for j:=1 to m do

  begin

   a[i,j]:=-15+random(31);

   write(a[i,j]:4);

  end;

 writeln;

end;

s1:=0;

s2:=0;  

for j:=1 to m do

begin

 k1[j]:=0;

 k2[j]:=0;

 for i:=1 to n do

 if abs(a[i,j])>10 then

  begin

   a[i,j]:=10;

   inc(s1);

   inc(k1[j]);

  end

 else

  begin

   a[i,j]:=j;

   inc(s2);

   inc(k2[j]);

  end;

 end;

writeln('Измененная матрица');

for i:=1 to n do

 begin

  for j:=1 to m do

  write(a[i,j]:4);

  writeln;

 end;

writeln('          Количество замен');

writeln('           1 вида  2 вида');

for i:=1 to m do

writeln('Столбец ',i:2,k1[i]:5,k2[i]:5);

writeln('Всего     ',s1:5,s2:5);

end.

4,8(32 оценок)
Открыть все ответы
Ответ:
alexdias
alexdias
16.05.2023

1) текстовую, числовую, графическую, звуковую и видео.

2)графическая, звуковая и видео информации.

3)клавиатура нужна для того чтобы передовать информацию на комьпютер,а принтер для передачи информации из компьютера.

4) 1) функциональные клавиши (F1 - F12 на верхней части клавиатуры); 2) символьные (алфавитно-цифровые) клавиши (цифры, спец.

5)Для удобства. Допустим, человек делает на компьютере определённые расчёты, и для этого использует правую часть клавиатуры, где цифры для этого расположены куда удобнее. И рядом с ними установлен +, дабы не лезть к другому концу клавиатуры с целью написать его). А цифры над буквенной частью клавиатуры как раз больше нужны для их использования при написании текста. Согласитесь, если вам надо написать "У нас было 5 дней на это", вам будет удобнее написать 5, используя клавишу наверху клавиатуры, нежели справа, на её "калькуляторной" части

4,4(93 оценок)
Ответ:
Karjal
Karjal
16.05.2023
Программа работает неверно: даже на примере из условия вместо 2600 выводится 55*245 = 13475. В программе происходит что-то странное, например, сравниваются элементы последовательности и 8 (зачем?)



Подумаем, как можно было бы решать задачу.
- Наивный сохранить все числа в массив и пробежаться по нему в двойном цикле, в псевдокоде это выглядит примерно так:
max = 0
for i = 1 to n do
  for j = 1 to n do
    if |i - j| >= 8 and max < a[i] * a[j] then
      max = a[i] * a[j]
Это нехорошо и по времени (время выполнения порядка n^2), и по памяти (количество памяти растет с ростом n пропорционально n).
- Немного ускоряем: у нас пары i, j и j, i ничем не отличаются, так что будем считать, что j < i. Учитывая условие, что |i - j| >= 8, получаем, что j <= i - 8. Переписываем:
max = 0
for i = 9 to n do
  for j = 1 to i - 8 do
    if max < a[i] * a[j] then
      max = a[i] * a[j]
Это решение работает в 2 раза быстрее, но этого недостаточно. Памяти тоже слишком много.
- Продолжаем ускорять. Пусть i зафиксировано. Мы пытаемся сравнить a[i] * a[j] с max для всех j от 1 до i - 8. Очевидно, произведение будет максимально, если a[j] - максимум среди a[1], a[2], ..., a[i - 8]. Возможное решение: создадим массив из максимумов среди первых k чисел, и будем сравнивать уже с максимумом.
maximums[1..n]
maximums[1] = a[1]
for i = 2 to n do 
  maximums[i] = max(maximums[i - 1], a[i])
max = 0
for i = 9 to n do
  if max < a[i] * maximums[i - 8] then
    max = a[i] * maximums[i - 8]
Это решение уже работает быстро, но остались проблемы с большим расходом памяти.
- Последний рывок. Заметим, что для того, чтобы разобраться с числом под номером i, нам совсем не нужен массив a, а из массива maximums достаточно знать только maximums[i - 8], ..., maximums[i - 1] - 8 чисел. Так что большие массивы не нужны, их можно убрать. Тогда программа будет эффективна и по времени, и по памяти.

У меня максимумы хранятся в массиве maxs[0..7], все номера берутся по модулю 8. В вашей программе это может быть реализовано иначе.
Pascal:
var
  i, n, t, max: integer;
  maxs: array[0..7] of integer;
begin
  read(n);
  read(t);
  max := 0;
  maxs[1] := t;
  for i := 2 to n do
  begin
    read(t);
    if (i > 8) and (max < t * maxs[i mod 8]) then
      max := t * maxs[i mod 8];
    if t > maxs[(i + 7) mod 8] then
      maxs[i mod 8] := t
    else
      maxs[i mod 8] := maxs[(i + 7) mod 8];
  end;
  write(max);
end.
4,4(43 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ