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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2011, 07:56   #1
Dimani4
Пользователь
 
Регистрация: 30.11.2010
Сообщений: 11
Вопрос "Замена знака каждого пятого элемента массива В(100) на противоположный", требуется совет.

Доброе утро всем, вот такая задача:
Написать программу, содержащую подпрограмму для замены знака каждого пятого элемента массива В(100) на противоположный.

Я не знаю как программе объяснить "каждый пятый элемент", какими командами и какой формулой задать? я догадываюсь что это в цикл закинуть, а какой формулой счетчик менять не могу сообразить. вроде и понимаю что заступорился на ерунде, но ничего не могу поделать.

попытался помудрить с шагом, программа не запускается, знаю в каких строках бред, не знаю что написать заместо этого:

Код:
Program JJ;
type
    Massiv = array[1..100] of real;
Var
B:massiv;
p,i,n:integer;
Procedure zamena(var k,m:integer;var y:massiv);
Begin
p:=round((m-k)/5)+1;  {вот от сюда}
for k:=1 to p do
begin
y[k]:=(-1)*y[k];
k:=k+5;                     {до сюда все не верно, что должно быть заместо - не представляю}
end;end;
begin
For i:=1 to n do
begin
Writeln('vvedite b[i]');Readln(b[i]);
end;
For i:=1 to n do
Writeln('b[',i,']=',b[i]:8:2);
Zamena(i,n,b);
For i:=1 to n do
Writeln('b[',i,']=',b[i]:8:2);end.

Последний раз редактировалось Dimani4; 05.01.2011 в 08:22.
Dimani4 вне форума Ответить с цитированием
Старый 05.01.2011, 09:26   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Условный оператор (if...). Если к делиться на 5 без остатка, то меняем.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 05.01.2011, 09:56   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Dimani4

подобную задачу можно решить используя различный подход (ну и разные типы циклов, разумеется).
во многих языках программирования цикл FOR имеет так называемый "шаг цикла" - это насколько будет увеличиваться переменная цикла каждый раз. Но не в Паскаль - тут цикл FOR всегда увеличивает переменную цикла на 1 (или, если вместо TO использовать DOWNTO на минус единицу) (т.е. шаг цикла всегда равен один или минус один). А нам надо, чтобы шаг был равен 5..
можно использовать такой трюк - перебираем в цикле переменную, а как только она становится кратным 5 (кратное - это делится на пять без остатка) - выполняем нужное действие:
Код:
for i:=1 to 100 do
       if (i mod 5) = 0 then B[i] := - B[i];
способ второй. С подготовкой формулы изменения..
Какие элементы нужно изменять? B[5], B[10], B[15] ... B[100]
а сколько таких элементов? очевидно, что 100/5 = 20
поэтому можно использовать такой способ:
Код:
for i:=1 to 20 do
       B[i*5] := - B[i*5];
ну и третий способ (я бы рекомендовал в данном случае использовать именно его) - воспользоваться другим видом цикла и там задать шаг цикла равным пяти:
Код:
i:=5;
while i<=100 do 
begin
   B[i] := - B[i]; 
   i := i + 5;  {ну или inc(i,5) - если так понятно, то лучше inc }
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.01.2011, 10:07   #4
Dimani4
Пользователь
 
Регистрация: 30.11.2010
Сообщений: 11
По умолчанию

Спасибо вам большое за советы, и отдельно за отзывчивость и оперативность! Все заработало.

Последний раз редактировалось Dimani4; 05.01.2011 в 10:12.
Dimani4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создайте квадратную матрицу, значение каждого элемента равно сумме номера строки и столбца C++ loloverg Помощь студентам 1 26.05.2010 21:28
подсчет каждого элемента массива счастливая Помощь студентам 1 26.05.2010 00:25
замена элемента массива shelest Помощь студентам 3 02.11.2009 00:14
PHP: использование элемента массива как массива Sudia Помощь студентам 1 20.02.2009 20:48
Дескрипторы потоков - Для каждого элемента списка необходимо создать поток, выполняющий требуемые функции kdv0403 Общие вопросы Delphi 2 09.06.2007 11:12