Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2008, 14:02   #1
Леди Уинтер
 
Регистрация: 07.01.2008
Сообщений: 8
Восклицание Поменять местами две половины массива, сохраняя их порядок.

Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-50,50]. Поменять местами две половины массива, сохраняя их порядок.
Если массив бдет состоять из нечетного числа элементов,рисоединить центральный элемент к любой его половине!!!
Помогите пожалуйста!!!Буду очень признательна!
Леди Уинтер вне форума Ответить с цитированием
Старый 07.01.2008, 14:07   #2
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Вот код. Но у нево есть один недостаток. Надо чтоб строка заканчивалась пробелом. Если этого несделать то последнее слово программа непосчитает.
Решение этой проблеммы сводится к написанию одной строки...

Код:
procedure TForm1.Button1Click(Sender: TObject);
VAR i, z : Integer;
    S : String;
    Flag : Boolean;
begin
S := Edit1.Text; z := 0; Flag := False;
For i := 1 To Length(S) Do
  Begin
   If S[i] = 'а' Then Flag := True;
   If (S[i] = ' ') And (Flag = True) Then Begin
    Flag := False;
    z := z + 1; End;
  End;
Label1.Caption := IntToStr(z);
end;
АДД: ^x^..... нетуда.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Последний раз редактировалось Карась; 07.01.2008 в 14:11.
Карась вне форума Ответить с цитированием
Старый 07.01.2008, 14:29   #3
Леди Уинтер
 
Регистрация: 07.01.2008
Сообщений: 8
Радость Спасибо!ВопросиК

А как сделать так,чтобы строка всегда заканчивалась пробелом?
Леди Уинтер вне форума Ответить с цитированием
Старый 07.01.2008, 14:45   #4
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Цитата:
Сообщение от Леди Уинтер Посмотреть сообщение
...Поменять местами две половины массива, сохраняя их порядок.
Если массив бдет состоять из нечетного числа элементов,рисоединить центральный элемент к любой его половине!!!
Этот код меняет половинки массива, учитывается нечетное количество элементов.
Код:
const
  N = 100; // Длина массива
var
  M: array[1..N] of Integer;
  I, L, X: Integer;
begin
  L := N div 2;
  if N mod 2 <> 0 then Inc(L);

  for I := 1 to N div 2 do
    begin
      X := M[I];
      M[I] := M[I + L];
      M[I + L] := X;
    end;
end;
Jeni вне форума Ответить с цитированием
Старый 07.01.2008, 20:30   #5
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Цитата:
А как сделать так,чтобы строка всегда заканчивалась пробелом?
Этот код был не к вашей задачи... я просто перепутал темы.....

Мой вариант кода вашей задачи....

Код:
program Project1;

{$APPTYPE CONSOLE}

var
  M: array[1..100] of Integer;
  I, L, N: Integer;
  y : Byte;

begin
Readln (N);

Randomize;
For i := 1 to N do begin
M[i] := Random(100) - 50; Write(M[i],' '); End;

Writeln;

If n mod 2 = 1 then
   Begin
   L := N div 2;
   For i := (L + 2) to N do Write (M[i],' ');
   For i := 1 to L do Write (M[i],' ');
   Write(M[L + 1]);
   End
Else
   Begin
   L := N div 2;
   For i := (L + 1) to N do Write (M[i],' ');
   For i := 1 to L do Write (M[i],' ');
   End;

  Readln;
end.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 07.01.2008, 22:41   #6
Леди Уинтер
 
Регистрация: 07.01.2008
Сообщений: 8
По умолчанию

Спасибо большое!Но нельзя ли всё это в Делфи перевести?
Леди Уинтер вне форума Ответить с цитированием
Старый 08.01.2008, 08:24   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пример карася это и есть программа для Делфи, только консольная.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.01.2008, 22:23   #8
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Единственное, строку
Код:
M[i] := Random(100) - 50; Write(M[i],' '); End;
нужно поменять на
Код:
M[i] := 50 - Random(101); Write(M[i],' '); End;
Jeni вне форума Ответить с цитированием
Старый 09.01.2008, 02:36   #9
FliPP
 
Аватар для FliPP
 
Регистрация: 03.01.2008
Сообщений: 9
По умолчанию

Jeni, при нечетном кол-ве элементов "центральный элемент" остается на своем же месте!!! а по условию дожен бы стать в начале или в конце.
FliPP вне форума Ответить с цитированием
Старый 09.01.2008, 09:01   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Jeni, при нечетном кол-ве элементов "центральный элемент" остается на своем же месте!!! а по условию дожен бы стать в начале или в конце.
И это првда. В приведенных выше кодах нарушается последовательность элементов.
Чтобы этого избежать, нужно сделать примерно так.
Код:
uses crt;
var m:array[1..50]of integer;
    n,i,l,x:integer;
begin
clrscr;
write('n=');readln(n);
for i:=1 to n do
  begin
   m[i]:=i;          //для наглядности введем числа по порядку
   write(m[i],' ');
  end;
readln;
l:=n div 2;
if n mod 2=0 then
for i:=1 to n div 2 do
   begin
     x:=m[i];m[i]:=m[i+l];
     m[i+l]:=x;
   end  else
if n mod 2<>0then
   begin
      x:=m[(n div 2)+1];    //ставим средний элемент на первую позицию
      for i:=(n div 2)+1 downto 1 do
      m[i]:=m[i-1];
      m[1]:=x;
//Для того, чтобы поставить средний элемент на последнее место, все делается в зеркальном отображении.
      for i:=2 to (n div 2)+1 do
         begin
           x:=m[i];m[i]:=m[i+l];
           m[i+l]:=x;
         end;
   end;
for i:=1 to n do
write(m[i],' ');
readln;
end.
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как поменять строки местами? ar. Microsoft Office Word 1 05.09.2008 11:36
поменять местами столбцы veter_s_morya SQL, базы данных 4 29.06.2008 13:36
Поменять местами строки в memo Бублик Помощь студентам 5 18.11.2007 15:27
Как поменять строки в текстовом файле местами _ares_ Помощь студентам 8 13.11.2007 02:14