Домашние задания: Другие предметы
Задачка в Pascale, никак не получается..
Здравствуйте, с праздником!Надо на курсовую, в суть задания вник, но как написать в программе - не пойму все никак.. Может у кого будут соображения?Дан массив размера N. Продублировать в нем элементы с четными номерами (2, 4, ..). Условной оператор не использовать. Исходный массив отсортировать в порядке невозрастания. Числа сформировать с помощью генератора случайных чисел.Насколько я понимаю, программа должна выглядеть так:1 2 2 3 4 4 5 6 6 и так далее, в зависимости от величины N. Для сортировки использовал "пузырьковой" метод, то есть метод сортировки обменом. Но само задание сделать никак не удается. Очень прошу помочь знающих и понимающих людей в решении данного вопроса.
я так понимаю, что другой массив использовать не слудует, поэтому так
nmax=100;
var
a:array[1..nmax] of integer;
maxn,temp,i,j,n:integer;
flag:boolean;
begin
readln(n);
randomize;
for i:=1 to n do
begin
a[ i ]:=random(100);
write(a[ i ],' ');
end;
writeln;
j:=1;
repeat
flag:=true;
for i:=1 to n-j do
if a[ i ] < a[ i+1 ]
then begin
temp:=a[ i ];
a[ i ]:=a[ i+1 ];
a[ i+1 ]:=temp;
flag:=false
end;
until flag;
for i:=1 to n do
write(a[ i ],' ');
writeln;
i:=2;
maxn:=n div 2+n;
repeat
for j:=n downto i+1 do
a[ j+1 ]:=a [j ];
n:=n+1;
a[ i+1 ]:=a[ i ];
i:=i+3;
until n=maxn;
for i:=1 to n do
write(a[ i ],' ');
readln
end.
nmax=100;
var
a:array[1..nmax] of integer;
maxn,temp,i,j,n:integer;
flag:boolean;
begin
readln(n);
randomize;
for i:=1 to n do
begin
a[ i ]:=random(100);
write(a[ i ],' ');
end;
writeln;
j:=1;
repeat
flag:=true;
for i:=1 to n-j do
if a[ i ] < a[ i+1 ]
then begin
temp:=a[ i ];
a[ i ]:=a[ i+1 ];
a[ i+1 ]:=temp;
flag:=false
end;
until flag;
for i:=1 to n do
write(a[ i ],' ');
writeln;
i:=2;
maxn:=n div 2+n;
repeat
for j:=n downto i+1 do
a[ j+1 ]:=a [j ];
n:=n+1;
a[ i+1 ]:=a[ i ];
i:=i+3;
until n=maxn;
for i:=1 to n do
write(a[ i ],' ');
readln
end.
Фрагмент программы (ai -элемент массива, не печатаются []):
...
var a:array[20]of integer;
f:booleah;
i:ingeger;
begin
f:=false;
for i:=1 to 4 do
begin
case f of
true:writeln(ai,' ,',ai);f:=false;end;
false:f:=true;
end;
end;
end;
Пример исходного массива:
[3,12,5,7]
Сортировка:
[12,7,5,3]
Результат:
[12,7,7,5,3,3]
Вместо вывода на экран осталось переписывать в другой массив.
Или реализовать механизм вставки со сдвигом, как в линейном списке.
...
var a:array[20]of integer;
f:booleah;
i:ingeger;
begin
f:=false;
for i:=1 to 4 do
begin
case f of
true:writeln(ai,' ,',ai);f:=false;end;
false:f:=true;
end;
end;
end;
Пример исходного массива:
[3,12,5,7]
Сортировка:
[12,7,5,3]
Результат:
[12,7,7,5,3,3]
Вместо вывода на экран осталось переписывать в другой массив.
Или реализовать механизм вставки со сдвигом, как в линейном списке.
А While- условный оператор, Если нет, можно писать
While (a mod 2)=0 do
begin
for n:=k downto i do {k-количество элементов в массиве}
begin
a[n+1]:=a[n];
end;
end;
И будет пахать.
While (a mod 2)=0 do
begin
for n:=k downto i do {k-количество элементов в массиве}
begin
a[n+1]:=a[n];
end;
end;
И будет пахать.
Похожие вопросы
- Задача по математике 7-8 класса, условие внутри! Никак не получается... :(
- помогите решить номера по алгебре. 7 - ой класс. у самой никак не получается. нужно, ну оооочень срочно!
- просклоняйте по падежам...никак не получается(( Сорок шесть, пятьдесят семь, одна тысяча девятьсот семьдесят девять.
- Мне нужно найти любое произведение Георгия Авдеевича Раевского, но никак не получается. Помогите кто чем может!
- Найдите наименьшее значение функции y=x^3+18x^2+11 на отрезке [-3; 3]. Помогите пожалуйста, никак не получается
- Задача, вроде бы легко, но никак не получается)
- Помогите пожалуста решить задачу.Простенькая,а решить ну никак не получается.
- Помогите пожалуйста решить задачку 1-ого класса????Никак не могу( почти с высшем эконом.образованием...!))))))))
- Как решить эти две задачки?
- Помогите решить задачку брату!!!!Срочно! Сама никак! Даже интересно стало как она решаеться..