Помощь - Поиск - Пользователи - Календарь
Полная версия: Составить одномерный массив В...
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
pabota
Не могу понять условия задачи не говоря уж об ее решении.
Как я понял, 1)надо сначала пробежать по массиву и найти Min,Max элемент, это я предположим сделаю.2) Не знаю что делать. 3)Проверить если такие числа в массиве А затрудняюсь, как это надо реализовать. 4) Надо отсортировать их В массиве по возрастанию. 5) Ну это понятно как делать.

---------
(1)Дан одномерный целочисленный массив А, состоящий из N элементов. Пусть МАХ - наибольшее, а MIN - наименьшее среди элементов массива. (2)Составить одномерный массив В из чисел, являющихся степенью двух и принадлежащих сегменту [MIN,MAX],и, (3)которые не являются элементами массива A, (4)располагая элементы в массиве В в порядке не убывания. (5)Если таких элементов нет, то выдать соответствующее сообщение.
мисс_граффити

index:=1;
for i:=min to max do
  if {i - степень двойки. как это сделать - читай FAQ} then
    begin
    fl:=true;
    for j:=1 to n do
      if A[j]=i then
        fl:=false;
    if fl then
      begin
      B[index]:=i;
      inc(index);
      end;
   end; 

не поняла только, почему написано не убывания, а не возрастания. Что, элементы могут повторяться?

З.Ы. компилятора под рукой нет, но вроде должно работать.
pabota
Спасибо smile.gif
сейчас попробую разобраться.
pabota
Вот решил smile.gif
Код выложил, вдруг кому-нибудь понадобиться еще.
var
a: array of Longint;
B: array of Longint;
i,j, n :integer;
min,max,index: integer;
  fl :boolean;
begin
 writeln ('vvedite chiclo celix chisel massiva');
 readln(n);
 SetLength(a, n);
 writeln ('Massiv A');
   for i:= 0 to n-1 do
     begin
       readln(a[i]);
     end;
     Max:=1;
     for i:=0 to n-1 do
         if ((a[i]>Max)and (a[i]<>0)) then
             begin
                 Max:=a[i];
             end;
    Min:=Max;
     for i:=0 to n-1 do
         if ((a[i]<Min)and (a[i]<>0)) then
             begin
                 Min:=a[i];
             end;
index:=0;
for i:=min to max do
 if frac(ln(i)/ln(2)) = 0   then
   begin
     for j:=0 to high(A) do
      begin
        if A[j] = i then break;
         if j = high(A) then
           begin
             setlength(B, length(B)+1);
             B[high(B)] := i;
           end;
      end;
   end;
  writeln ('Massiv B');
    for index:=0 to high(B) do
    begin
    writeln(inttostr(B[index]));
     //writeln(B[index]);
    end;
    if length(B)=0 then
    writeln ('net takix elementov!!!');
 readln;
end. 
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.