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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2012, 07:24   #1
gennadii
Пользователь
 
Регистрация: 12.01.2011
Сообщений: 37
По умолчанию Следующая закономерность

Напишите программу возведения натурального числа в квадрат, используя следующую закономерность:
1 = 1,
2 = 1+3,
3 = 1+3+5,
4 = 1+3+5+7,
..................
n = 1+3+5+7+9+...+2n-1

Я могу просто возвести в квадрат:
Код:
Program odin;
Uses crt;
Const
  n=15;
Var
  a,i:integer;
Begin
  clrscr;
  Writeln('Zakonomernost');
  Writeln;
    for i:=1 to n do begin
    a:=sqr(i);
    Writeln('',i,'=',a);
    end;
  Readkey;
End.
А вот как сделать по заданию, никак не врублюсь? Наведите пожалуйста на путь истинный, спасибо.
gennadii вне форума Ответить с цитированием
Старый 30.11.2012, 07:46   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Нужно зделать приращение шага не 1, а 2. Как это делается в Паскале не помню, но в С++ это делается так:
Код:
for(int i=1; i < n; i+=2){}
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 30.11.2012, 08:27   #3
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
i:=1;s:=0;
while i<=2*n-1 do
begin
s:=s+i;
inc(i,2);
end;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 30.11.2012, 08:36   #4
gennadii
Пользователь
 
Регистрация: 12.01.2011
Сообщений: 37
По умолчанию

А можно это сделать только с помощью цикла for?
gennadii вне форума Ответить с цитированием
Старый 30.11.2012, 09:20   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
А можно это сделать только с помощью цикла for?
Можно, но очень нежелательно.
оператор For в Паскаль/Delphi не допускает другого шага цикла, кроме как 1 (или -1 для downto )
поэтому, прийдётся,

или использовать хакерские приёмчики по изменению переменной внутри цикла,

или заводить дополнительную переменную (и её уже наращивать внутри цикла на 2),

или дополнительное условие, чтобы проверять, какое i сейчас (но цикл будет выполняться примерно в два раза дольше, т.к. число срабатываний в цикле будет для каждого i - хоть чётного, хоть нечётного...). Т.е. это будет не очень эффективно.

для последнего варианта:
Код:
s:=0;
for i:=1 to 2*n-1 do
  if odd(i) then s := s + i;
чем Вам while не угодил то?!

Последний раз редактировалось Serge_Bliznykov; 30.11.2012 в 09:22.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.11.2012, 10:32   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
оператор For в Паскаль/Delphi не допускает другого шага цикла, кроме как 1 (или -1 для downto )
поэтому, прийдётся,

или использовать хакерские приёмчики по изменению переменной внутри цикла,

или заводить дополнительную переменную (и её уже наращивать внутри цикла на 2),

или дополнительное условие, чтобы проверять, какое i сейчас
...или прибавлять к сумме на каждой итерации (2*i-1).
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти Закономерность и вычислить последовательность avega Помощь студентам 6 22.08.2012 22:13
следующая буква. zetr0 Помощь студентам 20 30.09.2010 08:40
Следующая дата neme4ta Общие вопросы по Java, Java SE, Kotlin 1 23.03.2010 06:58
Вот какая здесь закономерность? Анжелика Помощь студентам 6 13.01.2009 23:29