Не могу понять условия задачи не говоря уж об ее решении. Как я понял, 1)надо сначала пробежать по массиву и найти Min,Max элемент, это я предположим сделаю.2) Не знаю что делать. 3)Проверить если такие числа в массиве А затрудняюсь, как это надо реализовать. 4) Надо отсортировать их В массиве по возрастанию. 5) Ну это понятно как делать.
--------- (1)Дан одномерный целочисленный массив А, состоящий из N элементов. Пусть МАХ - наибольшее, а MIN - наименьшее среди элементов массива. (2)Составить одномерный массив В из чисел, являющихся степенью двух и принадлежащих сегменту [MIN,MAX],и, (3)которые не являются элементами массива A, (4)располагая элементы в массиве В в порядке не убывания. (5)Если таких элементов нет, то выдать соответствующее сообщение.
мисс_граффити
28.12.2006 21:58
index:=1;
for i:=min to max doif{i - степень двойки. как это сделать - читай FAQ}thenbegin
fl:=true;
for j:=1to n doif A[j]=i then
fl:=false;
if fl thenbegin
B[index]:=i;
inc(index);
end;
end;
не поняла только, почему написано не убывания, а не возрастания. Что, элементы могут повторяться?
З.Ы. компилятора под рукой нет, но вроде должно работать.
pabota
28.12.2006 22:06
Спасибо сейчас попробую разобраться.
pabota
29.12.2006 3:22
Вот решил Код выложил, вдруг кому-нибудь понадобиться еще.
var
a: arrayof Longint;
B: arrayof 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:= 0to n-1dobegin
readln(a[i]);
end;
Max:=1;
for i:=0to n-1doif ((a[i]>Max)and (a[i]<>0)) thenbegin
Max:=a[i];
end;
Min:=Max;
for i:=0to n-1doif ((a[i]<Min)and (a[i]<>0)) thenbegin
Min:=a[i];
end;
index:=0;
for i:=min to max doif frac(ln(i)/ln(2)) = 0thenbeginfor j:=0to high(A) dobeginif A[j] = i then break;
if j = high(A) thenbegin
setlength(B, length(B)+1);
B[high(B)] := i;
end;
end;
end;
writeln ('Massiv B');
forindex:=0to high(B) dobegin
writeln(inttostr(B[index]));
//writeln(B[index]);
end;
if length(B)=0then
writeln ('net takix elementov!!!');
readln;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.