Главная страница
    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.012 c
3-72116
Nikolai_S
2002-12-25 18:02
2003.01.23
ADO.


1-72319
Gumbert-Gumbert
2003-01-15 15:58
2003.01.23
Как с помощью директив компилятора определить, что стоит WinXP?


1-72263
IronHawk
2003-01-14 03:34
2003.01.23
Приветствую Мастеров! Вопрос простой но интересный ...


3-72089
VS2002
2002-12-29 06:32
2003.01.23
Поле со списком в DBGrid


1-72300
maks
2003-01-15 14:30
2003.01.23
Создание отчетов в Word





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский