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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2014, 18:45   #1
ALEXandr20333
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 76
По умолчанию Осуществить циклический сдвиг элементов массива влево на К позиций (Delphi)

Дан массив А размера N и целое число К (1<=K<=4,K<N).Осуществить циклический сдвиг элементов массива влево на К позиций (при этом AN перейдет в AN-K,AN-1 -в AN-K-1,...,A1 -в AN-K+1). Допускается использовать вспомогательный массив из 4 элементов.
ALEXandr20333 вне форума Ответить с цитированием
Старый 12.02.2014, 19:06   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Алгоритм:
Сохраняем первые K элементов в вспомогательный массив
В цикле записываем в первые N - K ячеек нужные (a[i] := a[i + k])
Записываем в конец массива элементы из вспомогательного массива

Что не получается?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 12.02.2014, 22:19   #3
ALEXandr20333
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 76
По умолчанию

НЕ получается если можете скиньте полностью код
ALEXandr20333 вне форума Ответить с цитированием
Старый 12.02.2014, 22:20   #4
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Что именно не получается?
doktor255 вне форума Ответить с цитированием
Старый 13.02.2014, 15:37   #5
ALEXandr20333
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 76
По умолчанию

как хотя бы код будет выглядеть
ALEXandr20333 вне форума Ответить с цитированием
Старый 13.02.2014, 15:46   #6
ALEXandr20333
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 76
По умолчанию

код я нашел помогите переделать в делфи
Код:
var
a: array [1..10] of real;
temp: array [1..4] of real; // вспомогательный массив 
k,N:integer;
i:integer; // счетчик в цикле 
begin
// ввод данных 
writeln('Введите N (N<=10)');
readln(N);
writeln('Введите k ((1 <= K <= 4, K< N))');
readln(k);
writeln('Значения массива А');
// формирование исходного массива 
for i:=1 to n do begin write('a[',i,']=');readln(A[i]); end;
// решение 
for i:=1 to k do begin temp[i]:=a[i]; end; // копируем значения первых к элементов 
for i:=1 to n-k do begin a[i]:=a[i+k]; end; // присвоение значения текущему элементу 
for i:=1 to k do begin a[n-k+i]:=temp[i]; end; // вставляем скопированные значения 
// вывод результата 
Writeln('Ответ');
Writeln;
Write(' A[]: '); for i:=1 to n do Write(A[i],' ');
end.

Последний раз редактировалось Stilet; 13.02.2014 в 15:57.
ALEXandr20333 вне форума Ответить с цитированием
Старый 13.02.2014, 15:58   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Эм... Это как-бы подходит для Делфи полностью. Его не нужно переделывать. подставь в консольный тип программы и запускай.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.02.2014, 21:57   #8
ALEXandr20333
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 76
По умолчанию

мне не нужно в консоле а так чтобы форма была
ALEXandr20333 вне форума Ответить с цитированием
Старый 13.02.2014, 23:04   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну и народ пошел... В СССР таких студентов давно бы в армии муштрували.
Хорошо. Вот код оконного приложения:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
var
a: array [1..10] of real;
temp: array [1..4] of real; // вспомогательный массив
k,N:integer;
i:integer; // счетчик в цикле
begin
// ввод данных
N:=StrToIntDef(InputBox('Введите N (N<=10)','',''),0);
k:=StrToIntDef(InputBox('Введите k ((1 <= K <= 4, K< N))','',''),0);
// формирование исходного массива
for i:=1 to n do begin A[i]:=StrToInt(InputBox(format('a[%d]',[i]),'','0')); end;
// решение
for i:=1 to k do begin temp[i]:=a[i]; end; // копируем значения первых к элементов
for i:=1 to n-k do begin a[i]:=a[i+k]; end; // присвоение значения текущему элементу
for i:=1 to k do begin a[n-k+i]:=temp[i]; end; // вставляем скопированные значения
// вывод результата
for i:=1 to n do ListBox1.Items.Append(Format('%10.2f',[A[i]]);

end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов вправо или вниз Nekro95 Помощь студентам 12 07.11.2012 22:31
проблемка с масивчиком - осуществить циклический сдвиг элементов матрицы (Delphi) Makspane Помощь студентам 2 08.05.2012 09:03
Описать процедуру,осуществляющую циклический сдвиг элементов массива на k позиций Bloodpoisoning Общие вопросы C/C++ 0 29.11.2010 15:50
Не получается циклический сдвиг элементов списка влево Джиксер Общие вопросы C/C++ 5 02.06.2010 23:38