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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2010, 19:51   #1
RUSSTUDENT
Пользователь
 
Аватар для RUSSTUDENT
 
Регистрация: 18.01.2010
Сообщений: 26
По умолчанию Доработка WHILE

Всем привет. Программа с WHILE. Тоже доработать надо. Сможете помочь?
Задание:"Вычислить число Фибоначчи с номером К. Напечатать чётные числа Фибоначчи, следующие за вычисленным, сумма которых не больше А. (А и Кзадаются)".

Прога вычисляет все числа разом до А, но как вычислить число с номером К не знаю. а также вычисляет все четные числа до А, а не только тех, которые стоят после числа с номером К.

Код:
program fwhile;
  var f1, f2, f, k, s:integer;
      a: real;
begin
  f1:= 1;
  f2:= 1;
  writeln('введите номер числа* k');
  readln(k);
  writeln('введите число а');
  readln(a);
  writeln('1 элемент:',f1);
  writeln('2 элемент:',f2);
  k:= 2;
  s:= 0;
  while s<a do
    begin
      inc(k);
      f:= f1 + f2;
      f1:= f2;
      f2:= f;
      if f mod 2 =0 then
      begin
        s:= s + f;
        if s > a then break;
        writeln(f,',');
      end;
    end;
    readln
end.

Последний раз редактировалось Stilet; 30.08.2010 в 08:27.
RUSSTUDENT вне форума Ответить с цитированием
Старый 28.08.2010, 20:04   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

нда скажу я вам
пробуй так
Код:
j := 0;
s := 0;
while s<a do
begin
inc(j);
f:= f1 + f2;
f1:= f2;
f2:= f;
if j >= k then begin
if f mod 2 =0 then
begin
s:= s + f;
if s > a then break
else
writeln(f,',');
end;
end;
end;
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 29.08.2010, 11:59   #3
chesser
Пользователь
 
Регистрация: 02.08.2010
Сообщений: 17
По умолчанию

Вот функция вычисления числа Фибоначчи. Правда, отрицательные номера не вычисляет.
Код:
function fib(k: integer): integer;
var
 i, r: integer;
 a1, a2: integer;
begin
 r:=0;
 if k>2 then
  begin
   i:=3;
   a1:=1;
   a2:=2;
   while i<=k do
    begin
     r:=a1+a2;
     a1:=a2;
     a2:=r;
     i:=i+1;
    end;
  end
 else
  if (k=1) or (k=2) then
   r:=1;
 fib:=r;
end;
chesser вне форума Ответить с цитированием
Старый 31.08.2010, 17:11   #4
RUSSTUDENT
Пользователь
 
Аватар для RUSSTUDENT
 
Регистрация: 18.01.2010
Сообщений: 26
По умолчанию

Огромное спасибо за помощь!
RUSSTUDENT вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доработка RUSSTUDENT Помощь студентам 2 28.08.2010 19:55
Доработка A93 Общие вопросы C/C++ 4 28.11.2009 13:29
Доработка портала muh Фриланс 1 29.09.2009 21:31
Доработка функции Черничный Работа с сетью в Delphi 6 01.08.2008 15:51