Консультация № 166816
09.05.2009, 11:23
0.00 руб.
0 5 1
Приветствую! В институте задали курсовую, никак не могу разобраться с одним моментом! Дан массив размером N/ Продублировать в нём элементы с чётными номерами (2, 4, ...). Условный оператор не использовать. Написал код, но он именно вытаскивает чётные номера, т.е. совсем не то) прошу помочь разобраться! заранее благодарен!

Приложение:
Листинг программы
Program kursovaya;
uses CRT;
const N=10;
var
a: array [1..N] of integer ;
i,j,c: integer;
begin
clrscr;
Randomize;
writeln ('Исходный массив');
for i:=1 to N do
begin
a [i]:=random(31)-15
write(a[i]:4);
end;
writeln;
writeln(‘Продублированные чётные номера:’);
for i:=1 to n do
if (a[i] mod 2)=0
then write(a[i]:4);
writeln;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]<=a[j] then begin c:=a[i]; a[i]:=a[j]; a[j]:=c;
end;
writeln(‘Сортировка исходного массива в порядке не возрастания:’
for i:=1 to n do write(a[i]:4);
readkey;
end.

Обсуждение

Неизвестный
09.05.2009, 12:00
общий
А что имеется в виду под "продублировать"?
Неизвестный
09.05.2009, 13:20
общий
допустим исходный массив 6 чисел: 2 6 8 5 4 9, чётные номера из них - 6 (2 число), 5(4). 9(6 число) вот их и продублировать) т.е. преобразованный массив будет выглядить вот так:
2 6 6 8 5 5 4 9 9
давно
Профессор
401888
1232
09.05.2009, 19:13
общий
А четность массива не указана? А то у меня для четных n работает, а для нечетных, если не использовать условный оператор, придумать не могу.
Вот код для четных массивов.
Код:
uses crt;
var a,b:array[1..100] of integer;
n,i,j,k:integer;
begin
clrscr;
randomize;
write('n=');readln(n);
writeln('Ishodnyj massiv:');
for i:=1 to n do
begin
a[i]:=random(20);
write(a[i],' ');
end;
writeln;
i:=1;j:=1;
repeat
b[j]:=a[i];
b[j+1]:=a[i+1];
b[j+2]:=a[i+1];
i:=i+2;
j:=j+3;
until i>=n;
for k:=1 to j-1 do
write(b[k],' ');
readln
end.
Неизвестный
09.05.2009, 20:28
общий
благодарю)
Неизвестный
10.05.2009, 12:31
общий
это ответ
Здравствуйте, Derri!

Модифицировал код предложенный Юрием Борисовичем. В таком виде он работает при любом N, как четном так и нечетном.

Приложение:
program Massiv;
uses crt;
var a,b:array[1..100] of integer;
n,i:integer;
begin
clrscr;
randomize;
write('n=');
readln(n);
writeln('Исходный массив:');
for i:=1 to n do begin
a[i]:=random(20);
write(a[i],' ');
end;
writeln;
{ Создание нового массива }
for i:=0 to n div 2-1 do begin
b[i*3+1]:=a[i*2+1];
b[i*3+2]:=a[i*2+2];
b[i*3+3]:=a[i*2+2];
end;
{ Присвоение последнего элемента }
b[n div 2*3+n mod 2]:=a[n];
{ Вывод результата }
writeln('Результат:');
for i:=1 to n div 2*3+n mod 2 do write(b[i],' ');
readln;
end.
5
Форма ответа