Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.009 c
14-72464
SerB
2003-01-05 11:54
2003.01.23
ActiveX в качестве ресурса


1-72179
Laist
2003-01-13 18:52
2003.01.23
массив.


14-72516
незнаика
2003-01-05 17:49
2003.01.23
Вопрос


7-72563
Konstantin
2002-11-13 19:05
2003.01.23
Помогите с программой-перехватчиком


1-72251
UltraFreak
2003-01-14 18:49
2003.01.23
Чтение файла по шаблону (...или чо-то в этом роде)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский