Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.23;
Скачать: CL | DM;

Вниз

массив.   Найти похожие ветки 

 
Laist   (2003-01-13 18:52) [0]

Ребята помогите решить задачку, не успеваю, на носу зачет.
Вводится массив. Вынуть элемент, стоящий посередине в массиве и вставить его в начало. Например, если введен массив
5 1 4 6 2 10 8,
результат должен быть:
6 5 1 4 2 10 8
Если длина массива четная, то вынимать элемент, стоящий левее середины. Динамическими массивами не пользоваться.
В первой строке входа дан размер вводимого массива N (1<=N<=100). Затем следуют N элементов массива (целые числа, по одному в каждой строке).
На выход напечатать N чисел, по одному в каждой строке


 
Palladin ©   (2003-01-13 19:02) [1]

мда...

обмен числами между серединой и началом
M[1]:=M[1]+M[N div 2];
M[N div 2]:=M[1]-M[N div 2];
M[1]:=M[1]-M[N div 2];

M - массив
N - кол элементов


 
Palladin ©   (2003-01-13 19:03) [2]

остальное надеюсь сам сможешь?


 
Palladin ©   (2003-01-13 19:06) [3]

oops
вместо "N div 2" лучше использовать round(N/2)


 
Palladin ©   (2003-01-13 19:09) [4]

сорри невнимательно прочитал условие...

idxMiddle:=round(N/2);
oldMiddleValue:=N[idxMiddle];
for i:=idxMiddle downto 2 do N[i]:=N[i-1];
N[1]:=oldMiddleValue;


 
Fors   (2003-01-13 19:14) [5]

Sorry, но я не понимаю, а в четверг зачетб времени не хватает вникать, расчитываю на вашу помощь


 
Palladin ©   (2003-01-13 19:23) [6]

может за тебя зачет сдать?
прими мои соболезнования.


 
Neox ©   (2003-01-13 20:00) [7]

Неужели так сложно?


var N, c, ps: integer;
F: Text;
Ar: array [0..100] of integer;

begin
Assign(F, "C:\massive.in");
Reset(F);
ReadLn(F, N);
for c:=1 to N do ReadLn(F, Ar[c]);
Close(F);

if N mod 2 <> 0 then ps:=N div 2+1 else ps:=N div 2; //находим центр
Ar[0]:=Ar[ps]; //центральный элемент копируем в свободную ячейку массива

for c:=ps-1 downto 1 do
Ar[c+1]:=Ar[c]; //переставляем эл-ты, что бы не было "дырки"

Ar[1]:=Ar[0]; //"вставляем" центральный элемент на первую позицию

Assign(F, "C:\massive.out");
Rewrite(F);
for c:=1 to N do WriteLn(F, Ar[c]);
Close(F);
end.


 
Palladin ©   (2003-01-13 20:07) [8]

хм...
а с round(N/2) чем не понравилось...
то же самое только в одну строчку умещается...
тем более в случае четности левый элемент от центра надо а не правый....


 
Neox ©   (2003-01-13 20:11) [9]

аха...
тогда вот так:
if N mod 2 <> 0 then ps:=N div 2+1 else ps:=N div 2-1;


 
Fors   (2003-01-13 20:35) [10]

Было бы все хорошо, но конструкцией assign в данной программе использовать нельзя, этим методом я пробовал, поэтому и попросил помощи
var N, c, ps: integer;
F: Text;
Ar: array [0..100] of integer;
begin
Assign(F, "C:\massive.in");
Reset(F);
ReadLn(F, N);
for c:=1 to N do ReadLn(F, Ar[c]);
Close(F);
if N mod 2 <> 0 then ps:=N div 2+1 else ps:=N div 2; //находим центр
Ar[0]:=Ar[ps]; //центральный элемент копируем в свободную ячейку массива
for c:=ps-1 downto 1 do
Ar[c+1]:=Ar[c]; //переставляем эл-ты, что бы не было "дырки"
Ar[1]:=Ar[0]; //"вставляем" центральный элемент на первую позицию
Assign(F, "C:\massive.out");
Rewrite(F);
for c:=1 to N do
WriteLn(F, Ar[c]);
ReadLn;
Close(F);
end.


 
Palladin ©   (2003-01-13 21:01) [11]

для Delphi
AssignFile
CloseFile


 
Neox ©   (2003-01-13 23:21) [12]

или тогда вообще
var
List: TStringList;
...
List.LoadFromFile();



Страницы: 1 вся ветка

Текущий архив: 2003.01.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
7-72567
_toltec
2002-11-14 02:06
2003.01.23
Имя функций в DLl


14-72490
Kair
2003-01-06 05:04
2003.01.23
Спокойной ночи программисты!


1-72232
W0land
2003-01-14 14:31
2003.01.23
WinXP+Delphi5 - проблема с отладчиком


1-72351
TTCustomDelphiMaster
2003-01-12 16:08
2003.01.23
Variant Conversion


1-72226
pavel_ak
2003-01-10 21:52
2003.01.23
*.doc в *.txt, и снести форматирование!