PDA

View Full Version : !!! Информатика 10 клас !!! Помощ за една задача!



kris4ety14
01-12-2010, 17:22
Даден е масив с n-елементи реални числа. Нека n<=30 . Да се напише програма, която разменя елементите на масива, тоест инвертира първия елемент става последен и първия – последен.

a1, a2 … ak … aj … an

ak:= aj;
aj:= ak;
buf:=a[k];
a[k]:=a[j];
a[j]:=buf;
mid:=n div 2
a[i]<—>a[n-i+1]
i+j=n+1-i

Ужасно ще съм благодарна, ако някой обърне внимание на тази трудна задача за мен и ми напише решението :-)

P.S. Трябва ми за утре!

Chacho
01-12-2010, 17:59
Ще пиша на паскал.

n - броят на елементите
masiv - предварително дефиниран тип масив


procedure InvertArray(var a:masiv);
var
buf, i, j: integer

j:=n;

for i := 1 to n div 2 do
begin
buf:=a[i];
a[i]:=a[j];
a[j]:=buf;
j:=j-1;
end;
end;



Обяснение: Имаме два брояча на цикъла. Единият обхожда от началото до средата (i), а другият от края до средата (j). На всяка стъпка се разменят първия и последния елемент по познатата процедура за размяна на стойностите на две променливи (чрез въвеждането на буферна променлива). Цикълът свършва когато се разменят и средните елементи. ЛС, ако има неясни неща.