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

Написать программу в паскаль или исправить ошибку в моей программе. в матрице имеются как положительные так и отрицательные элементы.если отрицательных элементов больше половины, то значение элементов четных строк удвоить, в противном случае удвоить значения элементов только последнего столбца. моя программа: f: text; begin assign (f,'informat8.txt'); reset(f); writeln( 'исходная матрица'); for i: =1 to n do begin for j: =1 to n do begin read(f,b[i,j]); write (b[i,j]: 8: 2); end; writeln; end; writeln; n1: =0; for i: =1 to n do for j: =1 to n do if b[i,j]< 0 then n1: =n1+1; if n> =round(n/2) then begin for i: =1 to n do begin if not odd(i) then begin for j: =1 to n do b[i,j]: =b[i,j]*2; end; end; end; for i: = 1 to n do b[i,j]: =b[i,j]*2; writeln ('результирующая матрица'); for i: = 1 to n do begin for j: = 1 to n do write (b[i,j]: 8: 2); write; end; writeln('n=',n); end.

👇
Ответ:
kazimirova2009
kazimirova2009
05.04.2021
Var
  f: text;
  i, j, n, n1: integer;
  matrix: array[,] of real;
begin
  assign(f, 'informat8.txt');
  reset(f);
  //найдём количество строк в матрице
  while not eof(f) do
   begin
    readln(f);
    inc(n);
  end;
  writeln('исходная матрица размерности ', n, 'x', n);
  //инициализируем массив (размерность узнали выше)
  matrix := new real[n, n];
  reset(f);
  // далее работаем с матрицей размерности [0..n-1] (инициализация происходит, начиная с 0)
  for i := 0 to n - 1 do
  begin
    for j := 0 to n - 1 do
    begin
      read(f, matrix[i, j]);
      write(matrix[i, j]:8:2);
    end;
    readln(f);
    writeln;
  end;
  writeln;
  n1 := 0;
  for i := 0 to n - 1 do
    for j := 0 to n - 1 do
      if matrix[i, j] < 0 then inc(n1);
  if n1 > round(n * n / 2) then
  begin
    writeln('Отрицательных элементов больше половины');
    //удваиваем элементы в чётных строках
    for i := 0 to n - 1 do
    begin
      if odd(i) then begin
        for j := 0 to n - 1 do
           matrix[i, j] := matrix[i, j] * 2;
      end;
    end;
  end else
  begin
    writeln('Отрицательных элементов меньше половины или ровно половина');
    //удваиваем элементы последнего столбца
    for i := 0 to n - 1 do
      matrix[i, n - 1] := matrix[i, n - 1] * 2;
  end;
    writeln('результирующая матрица');
  for i := 0 to n - 1 do  begin
    for j := 0 to n - 1 do
      write(matrix[i, j]:8:2);
    writeln;
  end;
end.

Результат работы:


Написать программу в паскаль или исправить ошибку в моей программе. в матрице имеются как положитель
4,6(3 оценок)
Открыть все ответы
Ответ:
Roma1971
Roma1971
05.04.2021
Каждую букву можно закодировать какой-то последовательностью битов. Минимально количество битов, необходимых для кодирования всех букв таким образом, чтобы все последовательности различались хотя бы в одном бите, равно 3, так как 2^2<6<2^3
То есть одна буква несет 3 бита информации.
Например, был алфавит а,б,в,г,д,е,ж
Нельзя каждой букве сопоставить последовательность из 2 битов, поскольку максимально возможное количество таких последовательностей равно 2^2=4, что меньше 6.
А вот 3 битами закодировать можно, например так:
а - 000
б - 001
в - 010
г - 011
д - 100
е - 101
При этом еще останется неиспользованных две последовательности: 110 и 111.
Алфавит можно кодировать и бОльшим количеством бит, но это делать незачем.
4,5(85 оценок)
Ответ:
motay121
motay121
05.04.2021
Var dv,tr,pt,dv1,tr1,pt1,dv2,tr2,pt2 :real;

procedure nod( var dv,tr,pt,dv1,tr1,pt1,dv2,tr2,pt2 :real; );
var a:array[1..6] of real;
i : integer;
begin
dv1:=100;
tr1:=100;
pt1:=100;
for i:= low(a) to high (a) do begin
readln(a[i]);
repeat
if( (a[i] mod 2) =0) then begin
a[i]:=a[i]/2;
dv:=dv+1;
end
else if( ( a[i] mod 3)=0) then begin
a[i]:=a[i]/3;
tr:=tr+1;
end
else if ( ( a[i] mod 5)=0) then begin
a[i]:=a[i]/5;
pt:=pt+1;
end;

untill(a=1);
if dvif trif ptdv:=0;
tr:=0;
pt:=0;
end;
if dv1>0 then dv2:=dv1*2 else dv2:=1;
if tr1>0 then tr2:=tr1*3 else tr2:=1;
if pt1>0 then pt2:=pt1*5 else pt2:=1;
nod:=dv2*tr2*pt2;
writeln(nod);
end;
begin
nod( dv,tr,pt,dv1,tr1,pt1,dv2,tr2,pt2 );
end.

end;
4,8(40 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ