Автор Тема: помогите, плиз...очень нужно(((  (Прочитано 4641 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн bifshtex

  • Пользователь
  • **
  • Сообщений: 70
    • Просмотр профиля
помогите, плиз...очень нужно(((
« : 26 Октября 2009, 22:30:48 »
Элементы массива х циклически сдвинуть на k позиций влево

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
Re: помогите, плиз...очень нужно(((
« Ответ #1 : 26 Октября 2009, 23:01:10 »
for i:=1 to n do
x[i-k]:=x[ i ]

единственное,не понятно что должно происходить с первым элементом?куда его девать?
« Последнее редактирование: 26 Октября 2009, 23:05:26 от Данила »
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн Asix

  • Администратор
  • *****
  • Сообщений: 7257
  • Математик
    • Просмотр профиля
Re: помогите, плиз...очень нужно(((
« Ответ #2 : 26 Октября 2009, 23:02:44 »
Считаем количество элементов в массиве (k).
Делаем замены на "n" влево (m-ый элемент, делаем элементом номер "m-n"), если номер элемента, который сдвигают меньше  "n" , то делаем его элементом номер "k+m-n". И так k раз.
Все просто =))
Математика онлайн - онлайн калькуляторы по математике, геометрии и теории вероятности!
Решение задач | Примеры решения задач | Рефераты | Заказать решениеШпаргалки | Теоретический материал

Выполнение студенческих работ на заказ!
Выполняем - Контрольные работы | Курсовые работы | Рефераты | Решение задач

За советы можете мне плюсики в репутацию ставить =)) Разрешаю =))

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
Re: помогите, плиз...очень нужно(((
« Ответ #3 : 26 Октября 2009, 23:06:16 »
блин,не заметил что написано "циклически" )
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн bifshtex

  • Пользователь
  • **
  • Сообщений: 70
    • Просмотр профиля
Re: помогите, плиз...очень нужно(((
« Ответ #4 : 27 Октября 2009, 00:11:17 »
хмм...как будет программа выглядеть?...

Оффлайн Asix

  • Администратор
  • *****
  • Сообщений: 7257
  • Математик
    • Просмотр профиля
Re: помогите, плиз...очень нужно(((
« Ответ #5 : 27 Октября 2009, 09:17:21 »
Я Вам написал полностью алгоритм.
Проанализируйте его и напишите пробную программу, напишите ее здесь.
А мы проверим программу и исправим, если где-то будут недочеты =))
Математика онлайн - онлайн калькуляторы по математике, геометрии и теории вероятности!
Решение задач | Примеры решения задач | Рефераты | Заказать решениеШпаргалки | Теоретический материал

Выполнение студенческих работ на заказ!
Выполняем - Контрольные работы | Курсовые работы | Рефераты | Решение задач

За советы можете мне плюсики в репутацию ставить =)) Разрешаю =))

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
Re: помогите, плиз...очень нужно(((
« Ответ #6 : 27 Октября 2009, 22:01:39 »
в том алгоритме нужно следить за тем чтобы не потерять значения при сдвиге

я вот что подумал...

предположим у нас массив А={1,2,3,4,5} n=5
создаем массив B и пишем туда А 2 раза B={1,2,3,4,5,1,2,3,4,5}
а потом просто берем оттуда элементы с k+1 до k+n
например у нас сдвиг k=2
исходный массив
А={1,2,3,4,5}
B={1,2,3,4,5,1,2,3,4,5}
берем элементы с 3 по 7 и переписываем в А
А={3,4,5,1,2}
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн Asix

  • Администратор
  • *****
  • Сообщений: 7257
  • Математик
    • Просмотр профиля
Re: помогите, плиз...очень нужно(((
« Ответ #7 : 27 Октября 2009, 23:26:17 »
Разумеется нужен некоторый склад для хранения информации, а то рано или поздно мы получим наложение данных и их потерю =))
Математика онлайн - онлайн калькуляторы по математике, геометрии и теории вероятности!
Решение задач | Примеры решения задач | Рефераты | Заказать решениеШпаргалки | Теоретический материал

Выполнение студенческих работ на заказ!
Выполняем - Контрольные работы | Курсовые работы | Рефераты | Решение задач

За советы можете мне плюсики в репутацию ставить =)) Разрешаю =))

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
Re: помогите, плиз...очень нужно(((
« Ответ #8 : 28 Октября 2009, 20:59:55 »
эх...разглагольствуем тут,а ТС видимо уже пофигу)
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн bifshtex

  • Пользователь
  • **
  • Сообщений: 70
    • Просмотр профиля
Re: помогите, плиз...очень нужно(((
« Ответ #9 : 01 Ноября 2009, 12:14:06 »
нее, мне не пофигу...очень многое, что вы написали помогло, спасибо, вот что в итоге я сделал

for i:=1 to k do
 y:=x;

for i:=1 to (n-k) do                                                         
   x:=x[i+k];                                                             
j:=1;                                                                       
 for i:=(n-k+1) to n do                                                       
 begin                                                                     
 x:=y[j];                                                               
 j:=j+1;                                                                   
 end;   
 и потом x вывел
а массив у был вспомогательныи для временного хранения

вроде все получилось)

Оффлайн chezen

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: помогите, плиз...очень нужно(((
« Ответ #10 : 01 Ноября 2009, 20:16:06 »
У меня в прошлом году было похожее задание...собственно вот оно:

Осуществить циклический сдвиг элементов квадратной матрицы
размерности M x N вправо на k элементов таким образом:
элементы 1-й строки сдвигаются в последний столбец сверху
вниз, из него - в последнюю строку справа налево, из нее -
в первый столбец снизу вверх, из него - в первую строку;
для остальных элементов - аналогично ( оформить в виде
процедуры ).


А вот моё, решение:

uses crt;
var

  a: array [1..10, 1..10] of integer;

procedure sdvig(zx, zy, dx, dy: integer);
var
  i: integer;
  temp: integer;
begin
  if (dx-zx < 1) or (dy-zy < 1) then
    exit;
  temp := a[zx, zy];
  for i := zy to dy - 1 do
    a[i, zx] := a[i + 1, zx];
  for i := zx to dx - 1 do
    a[dy, i] := a[dy, i + 1];
  for i := dy downto zy + 1 do
    a[i, dx] := a[i - 1, dx];
  for i := dx downto zx + 2 do
    a[zy, i] := a[zy, i - 1];
  a[zy, zx + 1] := temp;
  sdvig(zx + 1, zy + 1, dx - 1, dy - 1);
end;

var
i,n,j,k: integer;
begin
clrscr;
repeat
write('Vvedite razmer massiva : ');
read(n);
until (n > 0) and (n<11);

begin
  for i := 1 to n do
    for j := 1 to n do begin
      write('a[',i,',',j,'] = ');
      read(a[i, j]);
    end;
end; writeln;

begin
 for i := 1 to n do
  begin
    for j := 1 to n-1 do
      write(a[i, j]:3);
      writeln(a[i, n]:3);
  end;
end;
  writeln;
  write('Vvedite chislo ciklicheskogo sdviga: ');
  readln(k);
  writeln;

for i := 1 to k do
    sdvig(1, 1, n, n);

 begin
  for i := 1 to n do
  begin
    for j := 1 to n-1 do
      write(a[i, j]:3);
      writeln(a[i, n]:3);
  end;
end;
readln;
end.

Надеюсь тебе это чем-нибудь поможет)


Оффлайн v1rus

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: помогите, плиз...очень нужно(((
« Ответ #11 : 22 Октября 2010, 17:49:53 »
у меня задача чтото вроде этой но у меня никак не выходит решить(

 в матрице сдвинуть циклически строки вверх на p позиций. размеры n на m и элементы матрицы вводить с клавиатуры

просветите плиз как ее делать а лучше напишите циклы, которые так будут бвигать строки