Помощь - Поиск - Пользователи - Календарь
Полная версия: Составить одномерный массив В...
Форум «Всё о Паскале» > 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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.