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

Правила преобразования Числовой информации


Правила преобразования Числовой информации

Показать ответ
Ответ:
Рома228119
Рома228119
28.05.2020 04:30

Считаем, что вначале данные неупорядочены. Полагаем, что первый элемент находится на своем месте, поэтому граница между отсортированными и неотсортированными элементами находится после первого элемента. На каждом шаге, начиная от границы, ищем максимальный элемент и определяем его место в отсортированной части последовательности, после чего сдвигаем необходимую часть отсортированных элементов вправо и производим вставку элемента на освободившееся место. Алгоритм выполняем до тех пор, пока не граница отсортированных данных не выйдет за границу массива.

PascalABC.NET 3.4.2, сборка 1881 от 19.11.2018Внимание! Если программа не работает, обновите версию!

procedure SortByInsert(a: array of real);

// сортировка простыми вставками

begin

 for var Граница := 1 to a.Length - 1 do

   if a[Граница - 1] < a[Граница] then

   begin

     // сдвиг вправо

     var (Элемент, Позиция) := (a[Граница], Граница - 1);

     while (Позиция >= 0) and (a[Позиция] < Элемент) do

       (a[Позиция + 1], Позиция) := (a[Позиция], Позиция - 1);

     // вставка на нужное место

     a[Позиция + 1] := Элемент

   end

end;


begin

 var a := ReadArrReal(8);

 SortByInsert(a); a.Println

end.

Пример2.9 -25 8.1 31.9 -30.9 20.9 47.6 6.647.6 31.9 20.9 8.1 6.6 2.9 -25 -30.9
0,0(0 оценок)
Ответ:
foxylol1
foxylol1
16.02.2021 14:20
PascalABC.NET 3.4.2, сборка 1881 от 19.11.2018Внимание! Если программа не работает, обновите версию!

begin

 var n := ReadlnInteger('N=');

 var R := new integer[n];

 repeat

   var a := ReadlnString.ToCharArray;

   if a.Length <> N then break;

   if a.Where(c -> c = '+').Count = 1 then

     Inc(R[a.IndexOf('+')])

 until False;

 R.Transform(t -> t >= 0.07 * N ? 1 : 0);

 R.Numerate.Where(t -> t[1] = 1).Select(t -> t[0]).Println

end.

Пример

(окончание ввода - строка длины отличной от N)

N= 5

-+---

--+--

-+---

+

-+---

--+--

-+---

+

+

-+---


1 2 3 5

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