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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2014, 19:17   #1
aksdaqg
 
Регистрация: 03.04.2014
Сообщений: 3
По умолчанию поиск фибоначи ошибка в алгоритме

сортировка, чтение из файла все работает, но при выполнении алгоритма всегда выдает само число, а не его индекс. пробовал уже разные переменные ставить. что не так с алгоритмом? Заранее спасибо
Код:
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
type mas= array[1..1000] of integer;
 
var i, x , p, k, razm : integer;
    a , b : mas;
    tf :  text;
 
procedure SHELL( var a : mas);
var d, i, t : integer; k : boolean;
begin d:=razm div 2;         //razm=n
while d>0 do begin k:=true;
while k do begin k:=false; i:=1;
for i:=1 to razm-d do begin
if a[i]>a[i+d] then begin
t:=a[i]; a[i]:=a[i+d]; a[i+d]:=t;
k:=true; end; end; end;
d:=d div 2; end; end;
 
procedure zapfib;
var i:integer;
begin
b[1]:=0; b[2]:=1;
for i:=3 to razm do
  begin
  b[i]:=b[i-1]+b[i-2];
  if b[i]>=razm then b[i]:=razm;
  end;
end;
 
function Fib(k,razm:integer):integer;
var i, index, f:integer;
begin
if k=0 then begin fib:=0; exit; end;
if x=a[k] then begin fib:=k; exit; end;
f:=0;
for i:=1 to p do
begin
index:=k+b[i]-1;
if x>a[index] then continue;
if x=a[index] then f:=index else
  if b[i-1]<>1 then f:=fib(k+b[i-1]-1,razm)
          else f:=fib(0,razm);
          break;
          end;
          result:=f;
          end;
 
begin
 assign(tf,'input.txt');
    reset(tf);
      razm:=0;
 
 while not(eof(tf)) do begin
  inc(razm);
    read(tf,a[razm]);
 end;
 
 closefile(tf);
        writeln;
         for i:=1 to razm do
         write(a[i],' ');
         writeln;
writeln('Shell');
shell(a);
writeln;
 
         for i:=1 to razm do
         write(a[i],' ');
 
////////////////////////////////////////////////////////////////////////
writeln;
writeln('Vvedite iskomoe chislo');
readln(k);
writeln(fib(k,razm));
////////////////////////////////////////////////////////////////////////
readln;
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 04.04.2014 в 09:28.
aksdaqg вне форума Ответить с цитированием
Старый 04.04.2014, 11:40   #2
MDx64
Пользователь
 
Регистрация: 15.10.2011
Сообщений: 33
По умолчанию

У тебя везде выводится a[i]. Поэтому и не выходит толком ничего.
Попробуй вместо a[i] в нужном месте вывести просто i.
MDx64 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в алгоритме parkito Общие вопросы C/C++ 1 07.12.2011 04:25
Ошибка в алгоритме поиска murzilka6002 Общие вопросы C/C++ 15 24.11.2011 04:57
Ошибка в алгоритме слияние массивов ATAMAN200 Общие вопросы C/C++ 3 25.10.2010 20:37
Ошибка в алгоритме программы на бинарные фйлы ROD Общие вопросы C/C++ 0 15.04.2009 22:15