Другие языки программирования и технологии

Помогите плиз, язык программирования паскаль

Одномерный массив, заполненный рандомно. Преобразовать массив таким образом, чтобы сначала распологались все положительные элементы, а потом все отрицательные. ( ноль считать положительным)
Nariman Nazirov
Nariman Nazirov
128
Вот, пожалуйста:

var D:array of integer;
V:array of integer;
Z:array of integer;
P:array of integer;
n,e,c:integer;
a,b,r,y,g,f,s,i:integer;

Begin
Randomize;
readln(n); // Здесь вводим количество элементов массива
readln(a); // Здесь вводим начало диапазона случайных чисел
readln(b); // А здесь - его конец
writeln;
SetLength(D,n); // Задается размер массива в программе
for e:= 0 to n-1 do begin
D[e]:= random(b-a+1)+a; // Массив заполняется случайными числами от a до b
end;
write ('Массив до обработки: ',D); // Вывод массива до перестановки чисел
writeln;
SetLength(V,n); // Использование двух временных массивов для временного хранения, отдельно друг от друга, положительных и отрицательных чисел
SetLength(Z,n);
for e:= 0 to n-1 do begin
if (D[e]>0) or (D[e]=0) then begin
Z[c]:=D[e]; // Заполнение первого временного массива положительными числами
c:=c+1;
end;
end;
for e:=0 to n-1 do begin
if D[e]<0 then begin
V[r]:=D[e]; // Заполнение второго временного массива отрицательными числами
r:=r+1;
end;
end;
writeln;
for e:= 0 to c do begin
D[e]:=Z[e]; // Заполнение главного массива (с которым мы имеем дело с самого начала) положительными числами
end;
i:=0;
for f:= c to n-1 do begin
D[f]:=V[i]; // Заполнение главного массива (с которым мы имеем дело с самого начала) отрицательными числами после положительных
i:=i+1;
end;
write('Массив после обработки: ',D); // Вывод измененного главного массива
end.

Объяснение я к коду написал, но, так как вы не написали о диапазоне случайных чисел и о размере массива - я сделал возможность изменять и то, и другое. Надеюсь, что я вам помог. Удачи.

P.S. Если что-то будет не так, то я могу изменить код.
Maqsud Qobilov
Maqsud Qobilov
2 379
Лучший ответ
Int n, i, j=0;
cout<<"Vvedite kolichestvo elementov\n";
cin>>n;
float *mas=new float [n];
if(!massiv)
{
cout<<"Nedostatochno pamyati\n";
cout<<"Najmite klavishu dlya zaversheniya programmi\n";
getch();
return 0;
}
cout<<"Vvedite massiv iz"<<' '<<n<<' '<<"elemetov\n";
for(i=0; i>*(massiv+i);
for(int i=0; i<n; i++)
cout<<*(mas+i)<<' ';

float *mas2=new float [n];
if(!mas2)
{
cout<<"Nedostatochno pamyati\n";
cout<<"Najmite klavishu dlya zaversheniya programmi\n";
getch();
return 0;
}

for(i=0; i=0)
{
mas2[j]=mas[i];
j++;
}

for(i=0; i<n; i++)
if(mas[i]<0)
{
mas2[j]=massiv[i];
j++;
}

for(int j=0; j<n; j++)
cout<<'\n'<<mas2[j]<<' ';

delete [] mas;
delete [] mas2;
Переписывай во второй массив сначала положительные, затем в другом цикле все отрицательные, Не сможешь сам - пиши в адрес
Азиз Юлдашев Не вздумай платить "Зотикову", https://otvet.mail.ru/profile/id14126244/ - ВОТ ЕГО ПОЧТА: ggzot@mail.ru который тебе ответил, будет у тебя деньги выпрашивать за решения– кидает тут всех тупо на бабки! Сидит на даче старпёр С НЕМЫТЫМИ САЛЬНЫМИ ВОЛОСАМИ и кидает студентов!!! Моего друга кинул на 320 руб – денег не вернул!!! У этого мошенника Зотикова – есть вторая страница http://otvet.mail.ru/profile/id85810161/answers/all/ - он с двух кидает одновременно!!! Имя сменил только.
Азиз Юлдашев перебьешься кидала - никто тебе не напишет)))
Цикл for примени и условный оператор if
Kurama^.^ Kurosaki
Kurama^.^ Kurosaki
8 776
Nariman Nazirov Я сделал до заполнения, мне подсказали не больше, чем Вы (цикл for и оператор if). Я не могу понять..
var
i,c:integer;
s,gl:string;
begin
c:=0;
writeln('stroka= '); readln(s);
gl := 'aeouy';
for i := 1 to length(s) do
if (pos( s[ i ], gl ) > 0) then inc(c);
writeln(c);
end.
Размер массива известен? Если да, то циклом for и условием if: сначала записываешь те, которые больше или равны 0, а потом остальные. Можно временно сохранять в другой массив
Константин Воронков А если неизвестен, сначала определить длину, а затем выполнить всё, что написать чуть выше
i=1;j=length(a);
while (i <> j){
while (a[i]>0 AND i<=length(a)) i=i+1;
while(a[j]<0 AND j > 0)j=j-1;
if (i<j) swap(a[i], a[j])
}
алгоритм примерно такой
как я вам завидую
лалалала-Научись вот и все))) 00))0))))
C помощью For и If