Форум: "Основная";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
Вниз
массив. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c