Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите по Массиву
Форум «Всё о Паскале» > 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;

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