Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите по Массиву
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
bloodpirates
1)дан массив из n элементов (n-четное ).В ней элементы с четными и нечетными номерами поменять местами a[1] с a[2] .a[3] c a[n]и т.д


2)дан массив из VxV элементов (А-четное). Распечатать его в следующем порядке: a[1],a[n]....a[n]/2,a[n]/2-1
//эту задачу я нефига не понял !


3)дан массив из NxN элементов (N-четное).В ней элементы с четными и нечетными номерами поменять местами
a[1] с a[2] .a[3] c a[n]и т.д

4)даны два массива из N- элементов. Составить трети массив в который поочеродно входят элементы из 1-го и из 2-го массивов и вывести его на печать wacko.gif
Freedom
Цитата(bloodpirates @ 8.06.2010 10:43) *

1)дан массив из n элементов (n-четное ).В ней элементы с четными и нечетными номерами поменять местами a[1] с a[2] .a[3] c a[n]и т.д
2)дан массив из VxV элементов (А-четное). Распечатать его в следующем порядке: a[1],a[n]....a[n]/2,a[n]/2-1
//эту задачу я нефига не понял !
3)дан массив из NxN элементов (N-четное).В ней элементы с четными и нечетными номерами поменять местами
a[1] с a[2] .a[3] c a[n]и т.д

4)даны два массива из N- элементов. Составить трети массив в который поочеродно входят элементы из 1-го и из 2-го массивов и вывести его на печать wacko.gif


Вот первое, 3 аналогично сами переделаете
 
var a:array [1..100] of integer;
i,k,n:integer;
begin
writeln('VVedite n');
readln(n);
writeln('VVedite elementi massiva');
For i:=1 to n do readln(a[i]);
for i:=1 to n do
If odd(i)=true then begin
k:=a[i];
a[i]:=a[i+1];
a[i+1]:=k;
end;
For i:=1 to n do write (a[i],' ');
readln;
end.


4ое. Насчёт печати незнаю, остально так
 
var a,b,c:array [1..1000] of integer;
i,k,l,n:integer;
begin
l:=0;
k:=0;
writeln('Vvedite razmer massivov');
readln(n);
writeln('1 massiv');
For i:=1 to n do readln(a[i]);
writeln('2 massiv');
For i:=1 to n do readln(b[i]);
For i:=1 to n*2 do begin
If odd(i)=True then
begin
inc(k);
c[i]:=a[k];
end else
begin
inc(l);
c[i]:=b[k];
end; end;
For i:=1 to n*2 do write (c[i],' ');
readln;
end.
bloodpirates
СПс good.gif
Ozzя
var a:array [1..100] of integer;
i,k,n:integer;
begin
writeln('VVedite n');
readln(n); // при n=100 будет rte
writeln('VVedite elementi massiva');
For i:=1 to n do readln(a[i]);
for i:=1 to n do
If odd(i)=true then begin // лишнее сравнение, достаточно просто odd()
k:=a[i];
a[i]:=a[i+1]; // ... тут
a[i+1]:=k;
end;
For i:=1 to n do write (a[i],' ');
readln;
end.


Добавлено через 1 мин.
var a,b,c:array [1..1000] of integer;
i,k,l,n:integer;
begin
l:=0;
k:=0;
writeln('Vvedite razmer massivov');
readln(n);
writeln('1 massiv');
For i:=1 to n do readln(a[i]);
writeln('2 massiv');
For i:=1 to n do readln(b[i]);
For i:=1 to n*2 do begin // А что будет при n =1000?
If odd(i)=True then
begin
inc(k);
c[i]:=a[k];
end else
begin
inc(l);
c[i]:=b[k];
end; end;
For i:=1 to n*2 do write (c[i],' ');
readln;
end.



Добавлено через 1 мин.
Цитата
Насчёт печати незнаю

Uses Printer;
...
writeLn(Lst,...);
volvo
Цитата
// при n=100 будет rte
Оззя, совсем не обязательно smile.gif Я бы сказал так: при n = 100 программа перестанет работать правильно. Может и не вылететь (при отключенном контроле границ), но это мало что меняет.

Цитата
// А что будет при n =1000?
Это вообще не нужно делать... Зачем идти по НОВОМУ массиву, и проверять, какой индекс сейчас обрабатывается? Не проще:
k := 1;
for i := 1 to n do
begin
c[k] := a[ i ]; c[k + 1] := b[ i ];
inc(k, 2);
end;

?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.