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

Использовать подпрограммы (ввода, вывода, обрабатывающей части). даны 3 массива целых чисел: (4*5), (5*5), (5*4). вставить после каждого столбца, содержащего хотя бы один нулевой элемент, столбец из единиц.

👇
Ответ:
allonso
allonso
10.11.2021
// PascalABC.NET 3.3, сборка 1559 от 01.11.2017
// Внимание! Если программа не работает, обновите версию!

function MasInput(s:string; m,n:integer):array[,] of integer;
begin
  Writeln('Введите построчно элементы массива ',s,'[',m,',',n,']');
  Result:=ReadMatrInteger(m,n)
end;

procedure MasPrint(s:string; a:array[,] of integer; k:integer:=5);
begin
  Writeln('*** Полученный массив ',s,' ***');
  a.Println(5);
  Writeln(5*a.ColCount*'=')
end;

procedure MasTransform(var a:array[,] of integer);
begin
  var s:=a.Cols.Select(col->col.Any(t->t=0));
  var k:=s.Where(t->t).Count;
  if k>0 then begin
    var ns:=a.ColCount-1; // номер передающей колонки
    var s1:=s.Numerate.Where(t->t[1]).Select(t->t[0]-1);
    var St:=new Stack<integer>;
    foreach var t in s1 do St.Push(t);
    SetLength(a,a.RowCount,a.ColCount+k);
    var nt:=a.ColCount-1; // номер принимающей колонки
    for var i:=ns downto 0 do
      if St.Count>0 then
        if St.Peek=i then begin
          a.SetCol(nt,ArrFill(a.RowCount,1));
          a.SetCol(nt-1,a.Col(i));
          nt-=2; St.Pop
          end
        else begin
          a.SetCol(nt,a.Col(i));
          nt-=1
          end
    end;
end;
 

begin
  var a:=MasInput('A',4,5);
  MasTransform(a);
  MasPrint('A',a);
  var b:=MasInput('B',5,5);
  MasTransform(b);
  MasPrint('B',b);
  var c:=MasInput('C',5,4);
  MasTransform(c);
  MasPrint('C',c)
end.

Пример
Введите построчно элементы массива A[4,5]
3 5 6 3 8
6 4 0 1 3
-2 0 0 4 1
2 3 5 -7 0
*** Полученный массив A ***
    3    5    1    6    1    3    8    1
    6    4    1    0    1    1    3    1
   -2    0    1    0    1    4    1    1
    2    3    1    5    1   -7    0    1

Введите построчно элементы массива B[5,5]
1 6 3 9 2
2 4 8 5 7
1 3 1 4 5
3 5 7 6 4
8 9 2 7 3
*** Полученный массив B ***
    1    6    3    9    2
    2    4    8    5    7
    1    3    1    4    5
    3    5    7    6    4
    8    9    2    7    3

Введите построчно элементы массива C[5,4]
2 3 -1 -2
0 6 7 9
3 4 8 6
7 -2 2 -5
4 0 1 7
*** Полученный массив C ***
    2    1    3    1   -1   -2
    0    1    6    1    7    9
    3    1    4    1    8    6
    7    1   -2    1    2   -5
    4    1    0    1    1    7
4,4(50 оценок)
Открыть все ответы
Ответ:
LOL8KEKYC
LOL8KEKYC
10.11.2021

Для определения информационного объема сообщения воспользуемся формулой: I = K * i,  где K - количество символов, i - вес одного символа.

1)  1024 стра­ни­цы, на одной стра­ни­це по­ме­ща­ет­ся 64 стро­ки, а в стро­ке по­ме­ща­ет­ся 64 сим­во­ла. Каж­дый сим­вол в ко­ди­ров­ке КОИ-8 за­ни­ма­ет 8 бит па­мя­ти.

i = 8 бит

K = 1024 * 64 * 64 = 4194304 символов,

I = 4194304 * 8 = 33554432 бит = 4194304 байт = 4096  Кбайт = 4 Мбайт

2) 512 стра­ниц, на одной стра­ни­це в сред­нем по­ме­ща­ет­ся 64 стро­ки, а в стро­ке 64 сим­во­ла. (Каж­дый сим­вол в ко­ди­ров­ке Unicode за­ни­ма­ет 16 бит па­мя­ти.)

i = 16 бит

K = 512 * 64 * 64 = 2097152 символов,

I = 2097152 * 16 = 33554432 бит = 4194304 байт = 4096 Кбайт = 4 Мбайт

*8 бит = 1 байт

1024 байт = 1 Кбайт

1024 Кбайт = 1 Мбайт

4,5(71 оценок)
Ответ:
Olechka77
Olechka77
10.11.2021
1. Программа для создания файла

// PascalABC.NET 3.1, сборка 1239 от 08.05.2016
type
  tBook=record
    author:string[30];
    naim:string[50];
    pages:integer;
    godizd:integer
    end;
begin
  var f:file of tBook;
  Rewrite(f,'books.dat');
  Writeln('Ввод данных по книгам');
  var s1,s2:string;
  var i1,i2:integer;
  var book:tBook;
  repeat
    s1:=ReadlnString('Автор или * для окончания ввода:');
    if s1<>'*' then begin
      s2:=ReadlnString('Название книги:');
      i1:=ReadlnInteger('Количество страниц:');
      i2:=ReadlnInteger('Год издания:');
      (book.author,book.naim,book.pages,book.godizd):=(s1,s2,i1,i2);
      Write(f,book)
      end
  until s1='*';
  Writeln('*** Ввод завершен ***');
  f.Close
end.

Тестовое решение
Ввод данных по книгам
Автор или * для окончания ввода: Жюль Верн
Название книги: 80 тысяч километров под водой
Количество страниц: 573
Год издания: 1951
Автор или * для окончания ввода: Сергей Лукьяненко
Название книги: Дозор
Количество страниц: 934
Год издания: 2004
Автор или * для окончания ввода: Жюль Верн
Название книги: Властелин мира
Количество страниц: 104
Год издания: 2011
Автор или * для окончания ввода: *
*** Ввод завершен ***

2. Программа для выборки

// PascalABC.NET 3.1, сборка 1239 от 08.05.2016
type
  tBook=record
    author:string[30];
    naim:string[50];
    pages:integer;
    godizd:integer
    end;
begin
  var f:file of tBook;
  Reset(f,'books.dat');
  var s:=ReadlnString('Автор книги:');
  var y:=Readinteger('Год издания, не ранее:');
  var k:=0;
  var book:tBook;
  while not f.Eof do begin
    Read(f,book);
    if (book.author=s) and (book.godizd>=y) then begin
      Writeln(book);
      Inc(k)
      end;
  end;
  if k=0 then Writeln('Таких книг не найдено');
  f.Close
end.

Тестовое решение
Автор книги: Жюль Верн
Год издания, не ранее: 2005
(Жюль Верн,Властелин мира,104,2011)
4,7(65 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ