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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 18.05.2009, 10:13   #1
Евгений2
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 12
По умолчанию

В данном линейном массиве A[1..N] поменять местами пары элементов, индексы которых при делении на 4 дают в остатке соответственно 1 и 0. (Например, для массива 0, 1, 2, 3, 4, 5, 6, 7, 8 получим в результате 3, 1, 2, 0, 7, 5, 6, 4, 8.)

Проблема в написании заключается в том, что я сам не программирую, а эта задачка нужна знакомой девушке.

Код:
Program Kr_2_3;
 Const NMax = 100;
 Type LinMass = Array[1..NMax] Of Integer;
 Var A : LinMass; N, I, M, temp, temp2 : Integer;
 Begin
   Write('введите размер массива? '); ReadLn(N);
   For I := 1 To N Do
   Begin
       Write('элемент A[', I, '] '); ReadLn(A[I]);
       If i mod 4 = 0 then temp:= A[i];
       if i mod 4 = 1 then temp2:=A[i];
       end;
   for I := 1 to N do
   Begin
       if i mod 4 = 0 then A[i]:=temp2;
       if i mod 4 = 1 then A[i]:=temp;
   End;
   For I := 1 To N Do Write(A[I] : 6);
   WriteLn
 End.
подскажите я на правильном пути?
Никогда не говори "никогда"!!!

Последний раз редактировалось Stilet; 18.05.2009 в 16:43.
Евгений2 вне форума
Старый 18.05.2009, 13:42   #2
Jora_Kornev
Пользователь
 
Аватар для Jora_Kornev
 
Регистрация: 06.01.2009
Сообщений: 72
По умолчанию

Цитата:
В данном линейном массиве A[1..N] поменять местами пары элементов, индексы которых при делении на 4 дают в остатке соответственно 1 и 0. (Например, для массива 0, 1, 2, 3, 4, 5, 6, 7, 8 получим в результате 3, 1, 2, 0, 7, 5, 6, 4, 8.)
так индексы или значения?
ася: тристадевяносто 068 ноль восемь шесть
Jora_Kornev вне форума
Старый 18.05.2009, 13:49   #3
Евгений2
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 12
По умолчанию

делим индексы, а меняем местами элементы....
Никогда не говори "никогда"!!!
Евгений2 вне форума
Старый 18.05.2009, 13:51   #4
Jora_Kornev
Пользователь
 
Аватар для Jora_Kornev
 
Регистрация: 06.01.2009
Сообщений: 72
По умолчанию

a[i]=b
a[i] -элемент массива
i - индекс
b - значение
ася: тристадевяносто 068 ноль восемь шесть
Jora_Kornev вне форума
Старый 18.05.2009, 13:54   #5
Евгений2
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 12
По умолчанию

ну да...
именно это я имеею ввиду
Никогда не говори "никогда"!!!
Евгений2 вне форума
Старый 18.05.2009, 14:02   #6
Jora_Kornev
Пользователь
 
Аватар для Jora_Kornev
 
Регистрация: 06.01.2009
Сообщений: 72
По умолчанию

значит тебе просто надо поменять местами
a[0] и a[4]
так как 0/4=0
а 4/4=1
ася: тристадевяносто 068 ноль восемь шесть
Jora_Kornev вне форума
Старый 18.05.2009, 14:05   #7
Евгений2
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 12
По умолчанию

да, но это надо делать по всему массиву...
то есть массив 0 1 2 3 4 5 6 7 8 к примеру
надо менять A[1] = 0 с A[4] =3 и A[5] = 4 c A[8]= 7...
Никогда не говори "никогда"!!!
Евгений2 вне форума
Старый 18.05.2009, 14:22   #8
Jora_Kornev
Пользователь
 
Аватар для Jora_Kornev
 
Регистрация: 06.01.2009
Сообщений: 72
По умолчанию

ага, стоп, в условии сказано: "остаток от деления"
тогда надо использовать Mod, который дает остаток от деления делимого на делитель

исходя из этого нужен примерно такой кусок кода:
Код:
z:=-1;
for i:=1 to n-1 do
 for j:=i+1 to n do
  begin
   if (i mod j) = 0 then z:=i;
   if ((i mod j) = 1) and (z<>-1) then
    begin
     temp:=a[z];
     a[z]:=a[i];
     a[i]:=temp;
     z:=-1;
    end;
  end;
примерно так...
ася: тристадевяносто 068 ноль восемь шесть
Jora_Kornev вне форума
Старый 18.05.2009, 14:32   #9
Евгений2
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 12
По умолчанию

этот кусок кода мне надо вставить в свою программу... а можешь ткнуть меня куда именно вставлять, пожалуйста, просто я в этом круглый ноль...
Никогда не говори "никогда"!!!
Евгений2 вне форума
Старый 18.05.2009, 15:06   #10
Jora_Kornev
Пользователь
 
Аватар для Jora_Kornev
 
Регистрация: 06.01.2009
Сообщений: 72
По умолчанию

чтото типа такого должно получиться. не проверял лично
Код:
program Kr_2_3;
 type
  LinMass = Array[1..100] Of Integer;
 var 
  a : LinMass;
  z, i, j, temp, n : Integer;
BEGIN
 write('введите размер массива? ');
 readln(n);
 for i:=1 to n do
  begin
   write('элемент A[', i, ']= ');
   readln(a[i]);
  end;
 z:=-1;
 for i:=1 to n-1 do
  for j:=i+1 to n do
   begin
    if (i mod j) = 0 then z:=i;
    if ((i mod j) = 1) and (z<>-1) then
     begin
      temp:=a[z];
      a[z]:=a[i];
      a[i]:=temp;
      z:=-1;
     end;
   end;
 for i:=1 to n do
  write('A[',i,']='a[i],' ');
END.
ася: тристадевяносто 068 ноль восемь шесть
Jora_Kornev вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачка в Паскале. koshkarjov Помощь студентам 6 13.03.2009 17:52
Задачка в паскале на матрицы Марик Помощь студентам 2 25.06.2008 00:18
задачка на паскале evrey Паскаль, Turbo Pascal, PascalABC.NET 4 04.06.2008 20:59
Задачка на Паскале Dissid Помощь студентам 2 09.10.2007 21:28