Дан массив из N элементов . Каждый элемент равен 0, 1 или 2. Переставить элементы...

0 голосов
110 просмотров

Дан массив из N элементов . Каждый элемент равен 0, 1 или 2. Переставить элементы так,чтобы сначала располагались все нули, затем все единицы и, наконец все двойки.(дополнительный массив не использовать) Помогите пожалуйста.


Информатика (42 баллов) | 110 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
1. В "реальном мире" это решается примерно так:

// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
begin
  var a:=ArrRandom(ReadInteger('n='),0,2); a.Println;
  a.Sorted.Println
end.

Тестовое решение:
n= 15
1 2 0 2 2 0 2 0 2 0 0 1 0 0 2
0 0 0 0 0 0 0 1 1 2 2 2 2 2 2

2. Но, поскольку считается, что школьникам больше заняться нечем, их заставляют писать примерно в таком стиле (и время займет, и ощибок понаделают):

// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
const
  nn=100;
var
  i,j,n,t:integer;
  a:array[1..nn] of integer;
begin
  Write('n='); Read(n);
  Randomize;
  for i:=1 to n do begin
    a[i]:=Random(3);
    Write(a[i],' ')
    end;
  Writeln;
  for i:=1 to n-1 do
    for j:=1 to n-1 do
      if a[j]>a[j+1] then begin
        t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t
        end;
  for i:=1 to n do Write(a[i],' ');
  Writeln;
end.

Тестовое решение:
n=15
0 1 1 0 2 1 0 2 1 2 1 0 0 2 0
0 0 0 0 0 0 1 1 1 1 1 2 2 2 2
(142k баллов)
0

Спасибо.

0

за 7 лет работы программистом поверьте, ни разу даже не слышал про паскаль.абц.....

0

Бог ты мой... да кто же сейчас ODBC использует? Разве что в вузе при изучении методов доступа к данным. И писать промышленные системы на С++ сейчас себе могут позволить только очень немногие богатые компании. Слишком дорогой получается разработка и сопровождение. На С++ надо писать то, для чего он предназначен - операционные системы и их компоненты. Любой из языков на .NET-платформе в разработке клиента уделает С++ в разы.

0

Я не знаю, где Вы работаете, но если на С++ c ODBC - то даже обсуждать это не буду.

0

А с чего Вы взяли, что все пишут исключительно под "окна"? Акститесь! В MacOS, Linux, BSD никто про .нет и слыхом не слыхивал! не ограничивайте себя одной (не самой лучшей) операционкой!

0

Т.е. для "окошек" Вы согласны, С++ не идеал. Отлично.

0

Ну конечно, вне "окон" кроме С++ языков не существует! "А мужики-то и не знают!" (с) Ладно, бессмысленны эти религиозные споры. Жизнь уже все по полочкам расставила и активное существование других языков, созданных гораздо позднее С++ - уже повод задуматься, так ли он супер-пупер-для-всего.

0

языком много для любой платформы и для любых целей. скажем, писать сайт на плюсах я бы не стал. но для системного программирования - лучше не найдёшь. да и в прикладном показывает себя далеко не с худшей стороны

0

Ну зачем же по кругу? Я выше писал, что С++ СОЗДАН для системного программирования.

0

А для прикладного, если без библиотек сторонних - это уровень полуассемблера))) А с библиотеками - такой же, как и все другие.