
23.04.2010, 14:31
|
|
Новичок
Регистрация: 01.01.2009
Сообщений: 14
С нами:
9135178
Репутация:
2
|
|
как на языке С можно реализовать вычисления чисел фибоначчи до 5000?
|
|
|

23.04.2010, 15:36
|
|
Новичок
Регистрация: 08.02.2010
Сообщений: 11
С нами:
8554717
Репутация:
2
|
|
Сообщение от saransko_o
как на языке С можно реализовать вычисления чисел фибоначчи до 5000?
Ряд Фибоначчи хорошо описан в книге "С++ за 21 день".
#include <iostream.h>
int s=0;
int fib (int n);
int main()
{
int n, answer;
cout << "Enter number to find: ";
cin >> n;
cout << "\n\n";
answer = fib(n);
cout << answer << " is the " << n << "th Fibonacci number\n";
cout << "\n" <<s <<"\n";
return 0;
}
int fib (int n)
{
cout << "Processing fib(" << n << ")... ";
s++;
if (n < 3 )
{
cout << "Return 1!\n";
return (1);
}
else
{
cout << "Call fib(" << n-2 << ") and fib(" << n-1 << ").\n";
return (fib(n-2) + fib (n-1));
}
|
|
|

24.04.2010, 23:28
|
|
Участник форума
Регистрация: 18.07.2009
Сообщений: 272
С нами:
8850336
Репутация:
330
|
|
Сообщение от Katya.sx
Ряд Фибоначчи хорошо описан в книге "С++ за 21 день".
#include <iostream.h>
int s=0;
int fib (int n);
int main()
{
int n, answer;
cout << "Enter number to find: ";
cin >> n;
cout << "\n\n";
answer = fib(n);
cout << answer << " is the " << n << "th Fibonacci number\n";
cout << "\n" <<s <<"\n";
return 0;
}
int fib (int n)
{
cout << "Processing fib(" << n << ")... ";
s++;
if (n < 3 )
{
cout << "Return 1!\n";
return (1);
}
else
{
cout << "Call fib(" << n-2 << ") and fib(" << n-1 << ").\n";
return (fib(n-2) + fib (n-1));
}
Все очень рады, что вы читали о рекурсии в книге "С++ за 21 день", но ваш, а точнее, пример автора этой книги не сосчитает ряд чисел Фибоначчи до 5000.
2saransko_o, поищите в гугле по запросу "Длинная арифметика".
|
|
|

25.04.2010, 11:18
|
|
Познающий
Регистрация: 07.06.2009
Сообщений: 30
С нами:
8909709
Репутация:
0
|
|
Рисуем график в Chart - Delphi.
Вот у меня такой примерчик: нужно построить график, используя значения x, y - из СтрингГрида. График у меня построился, но теперь мне нужно, чтобы ось ОХ как бы была выделенной, а она у меня ничем не выделяется.
И еще 1 вопрос: в Chart`е есть такая функция, чтобы график рисовался не весь сразу, а с неким интервалом, допустим 1 точка за 1 сек?
Вот код:
procedure TForm1.Button2Click(Sender: TObject);
var i,j:longint;
begin
Series1.Clear;
for i:=1 to StringGrid1.RowCount-1 do
Series1.AddXY(StrToFloat(StringGrid1.Cells[0,i]),
StrToFloat(StringGrid1.Cells[1,i]),
'',clGreen);
Chart1.Title.Text.Clear;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked=true then Series1.Pointer.Visible:=true
else Series1.Pointer.Visible:=false;
end;
|
|
|

23.04.2010, 18:20
|
|
Новичок
Регистрация: 01.01.2009
Сообщений: 14
С нами:
9135178
Репутация:
2
|
|
да я не знаю c++, мне именно на C надо..
|
|
|

24.04.2010, 19:25
|
|
Новичок
Регистрация: 21.08.2008
Сообщений: 7
С нами:
9326708
Репутация:
9
|
|
как на языке С можно реализовать вычисления чисел фибоначчи до 5000?
Код:
# include <stdio.h>
int main(){
int M[500] = {1,1};
int i;
for (i = 0; M[i] < 5001; ++i)
{
printf ("%d - %d\n", i+1, M[i]);
M[i+2] = M[i+1] + M[i];
}
return 0;
}
Последний раз редактировалось Idainet; 24.04.2010 в 19:29..
|
|
|

24.04.2010, 19:42
|
|
Постоянный
Регистрация: 24.05.2008
Сообщений: 589
С нами:
9454841
Репутация:
504
|
|
как на языке С можно реализовать вычисления чисел фибоначчи до 5000?
как-то так, только тут первые 80, потому что дальше у меня нехорошо получется
Код:
#include<stdio.h>
int main()
{
double a = 1.0, b = 1.0, i;
printf("%.0f\n%.0f\n", a, b);
for(i = 0; i< 40; i++)
{
printf("%.0f\n", a+b);
a+=b;
printf("%.0f\n", a+b);
b+=a;
}
return 0;
}
Последний раз редактировалось gisTy; 24.04.2010 в 19:49..
|
|
|

25.04.2010, 16:27
|
|
Новичок
Регистрация: 07.04.2009
Сообщений: 19
С нами:
8997603
Репутация:
3
|
|
Народ, помогите в Delphi на канве нарисовать относительно вертикальной оси, n - угольную призму ! 
Заранее спасибо !
|
|
|

25.04.2010, 22:03
|
|
Новичок
Регистрация: 03.03.2010
Сообщений: 1
С нами:
8521738
Репутация:
0
|
|
выручите плиз)) в четеверг лаба будет, делаю дома заранее, чтобы долгов небыло и чтобы во всем самому разбираться... но тут пропустил пару занятий по уважительной причине и не особо понял матерьял по указателям в СИ, поэтому прошу помощи.
вобщем, лаба про функции и про указатели.
задание такое:
написать программу сортировки массива строк, ввод данных сортировку и вывод результатво оформить в виде функциий.
использовать указатели.
вариант ** : расположить строки по возрастанию количества цифр в строках.
то что я написал <помощь и состоит в том чтобы исправить этот бред до рабочего состояния>
Код:
#include <stdio.h>
#pragma hdrstop
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#pragma argsused
int in (char *str, int i)
{
printf ("\n Enter %d string", i);
gets(str);
return (str);
}
void out (char *str)
{
printf ("\n String %s", str);
}
void main ()
{
char *s[10], *p;
int i, j, k[10], m=0, str[10], l;
for(i=0; i<10; i++)
{
s[i]=(char *) malloc (80);
str[i]=in(s[i], i);
}
/*
k - массив в котором будут собранны количества цифр в строке, т.е. к[6]=5 значит что в строке нумбер шесть встречалось 5 цифр. идея в том чтобы потом при помощи этого массива переменять указатели s[i] в соответствии масиву К НЕ трогая сами строки.
*/
for(i=0; j<10; i++)
{
k[i]=0;
}
for (i = 0; i <= 9; i++)
{
l=strlen(str);
for(j=0; j<l; j++)
{
if(str[i][j]>='0' && str[i][j]<='9')
{
k[i]=k[i]+1;
}
}
}
for (i = 9; i>0; --i)
{
for( j=0; j<10; j++)
{
if (k[j]>k[j+1])
{
m=s[i];
s[i]=s[j];
s[j]=m ;
}
}
}
printf("\n Sort. mass");
for (i=0; i<10; i++)
{
out(s[i]);
free(s[i]);
}
getch();
}
|
|
|

26.04.2010, 21:27
|
|
Участник форума
Регистрация: 10.08.2009
Сообщений: 107
С нами:
8816828
Репутация:
10
|
|
Всем доброго дня и снова задача на Pascal ABC:
Задание содержит задачи, которые сводятся к нахождению суммы или произведения некоторого количества слагаемых
Вычислить приближенное значение бесконечной суммы с заданной степенью точности E=0.1, 0.2, 0.01, 0.001 для получения суммы членов ряда следует использовать реккурентную формулу для получения следующего члена ряда через предыдущий. Считать, что заданная степень точности достигнута, если общий член ряда по модулю станет меньше Е.
Задачу решить в двух вариантах, а именно с использованием оператора цикла с предусловием (while) и оператора с постусловием (repeat).
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|