Форум программистов, компьютерный форум CyberForum.ru

Последовательность фибоначи - C++

Восстановить пароль Регистрация
 
AMATORY_Nik
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 4
18.05.2010, 08:05     Последовательность фибоначи #1
Дан фаил f компоненты u0,u1,....un которого являются последовательными числами Фибоначчи, получить в фаиле f последовательные числа Фибоначчи u0,u1,....u n+1(тобиж u эное +1)

сама последовательность Фибоначчи - u0=0; u1=1; ui=u i-1 + ui-2 (i=2,3...)

помогите с этой последовательностью я ни как не могу сделать эту прогу а через 2 дня ее сдавать!
Пожалуйста люди помогите! заранее вам буду благодарен!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-Xeon-
2 / 2 / 0
Регистрация: 15.02.2010
Сообщений: 26
18.05.2010, 11:08     Последовательность фибоначи #2
AMATORY_Nik, Тебе надо на С или С++?
AMATORY_Nik
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 4
18.05.2010, 11:21  [ТС]     Последовательность фибоначи #3
на с++ хотя можно и на Си=)
AMATORY_Nik
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 4
19.05.2010, 12:17  [ТС]     Последовательность фибоначи #4
ребят плз помогите мне с этой прогой буду вам очень признателен....=)

Добавлено через 16 часов 47 минут
ребят я сам кое что написал но не правильно что то там не так... помогите исправить прогу во т ещё раз условия Дан фаил f компоненты u0,u1,....un которого являются последовательными числами Фибоначчи, получить в фаиле f последовательные числа Фибоначчи U0,U1,....Un+1
сама последовательность Фибоначчи - u0=0; u1=1; ui=u i-1 + ui-2 (i=2,3...)
вот прога -
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
#define n 8
main()//0, 1, 1, 2, 3, 5, 8, 13 chisla Fobonachi
{FILE * out;
out=fopen("C:\\f.txt","a+");
int F[n],i;
int f[n];
printf("Vvedite chisla Fibonachi:");
for(i=0;i<n;i++)
scanf("%d",&f[i]);
F[n]=f[n+1];
f[i+1]=f[i]+f[i-1];
printf(" %d",F[i]);
while(F[i])
fputc(F[i++],out);
fclose(out);
getchar();
getchar();
return 0;
}
dev001
36 / 36 / 3
Регистрация: 13.05.2010
Сообщений: 70
19.05.2010, 16:23     Последовательность фибоначи #5
может что то в таком духе?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdio.h>
 
using namespace std;
 
long fib(long a) {
    if(a < 3)
        return 1;
    return fib(a - 2) + fib(a - 1);
}
 
int main(int argc, char **argv) {
    FILE *fp;
    long a, r;
    char buf[11];
 
    fp = fopen("result.txt", "w");
    cout << "Vvedite chislo: ";
    cin >> a;
    r = fib(a);
    sprintf(buf, "%ld", r);
    cout << "resultat: " << buf << endl;
    fputs(buf, fp);
    fclose(fp);
}
 
int main(int argc, char **argv) {
    FILE *fp;
    long *S, *F, n, l, i = 0;
    
    fp = fopen("fseq.txt", "w");
    cout << "Vvedite limit chisel: ";
    cin >> l;
    F = new long[sizeof(long) * l];
    S = new long[sizeof(long) * l];
    while(i < l) {
        cout << "Vvedite chislo Vibonacci: ";
        cin >> n;
        F[i++] = n;
    }
    
    i = 0; 
    while(i < l) {
        S[i] = i > 0 ? F[i] + F[i - 1] : 0;
        cout << "resultat = " << S[i] << endl;
        fprintf(fp, "%ld ", S[i]);
        i++;
    }
    fclose(fp);
}
Добавлено через 1 час 19 минут
или что то типа такого
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
 
using namespace std;
 
int main(int argc, char **argv) {
    FILE *fp;
    long *F, n, l, i = 0;
    
    fp = fopen("fseq.txt", "w");
    cout << "Vvedite limit chisel: ";
    cin >> l;
    F = new long[sizeof(long) * l + sizeof(long)];
    while(i < l) {
        cout << "Vvedite chislo Fibonaci: ";
        cin >> n;
        F[i] = n;
        i++;
    }
    F[0] = 0;
    F[1] = 1;
    for(i = 2; i < l + 1; i++) {
        F[i] = F[i-1] + F[i-2];
    }
    for(i = 0; i < l + 1; i++) {
        cout << "resultat = " << F[i] << endl;
        fprintf(fp, "%ld ", F[i]);
    }
    delete[] F;
    fclose(fp);
}
в l записывается количество вводимых цифер, т.е при вводе 8 будет последовательность 0 1 1 2 3 5 8 13, на выходе 0 1 1 2 3 5 8 13 21

* где ж мое студенческие годы %)
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,670
19.05.2010, 20:54     Последовательность фибоначи #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//Дан фаил f компоненты u0,u1,....un которого являются последовательными 
//числами Фибоначчи, получить в фаиле f последовательные числа Фибоначчи U0,U1,....Un+1
//сама последовательность Фибоначчи - u0=0; u1=1; ui=u i-1 + ui-2 (i=2,3...)
#include <iostream>
#include <fstream>
#include <locale>
#include <string>
#include <iomanip>
 
void  read_fib_file
    (
        const std::string&  filename,
        double&             predp_fib_num,
        double&             posledn_fib_num
    )
{
    std::ifstream  file(filename.c_str());
    
    if (!file) 
    {        
        std::cerr << "Невозможно открыть файл \"" 
                  << filename 
                  << "\""
                  << std::endl;
        exit(EXIT_FAILURE);
    }
 
    //Вывод содержимого файла в cout.    
    std::cout << "В файле содержатся числа Фиббоначчи: "              
              << std::endl;
    double  cur_fib_num;
    while(file >> cur_fib_num)
    {
        std::cout << cur_fib_num
                  << std::endl;
        predp_fib_num    = posledn_fib_num;
        posledn_fib_num  = cur_fib_num;
    }   
}   
 
void add_fib_num_to_file(const std::string&  filename)
{
    double predp_fib_num    = -1;
    double posledn_fib_num  = -1;
    read_fib_file(filename, predp_fib_num, posledn_fib_num);
    double next_fib_num;
    if(posledn_fib_num < 0)        next_fib_num = 0;
    else if(posledn_fib_num == 0)  next_fib_num = 1; 
    else next_fib_num = predp_fib_num + posledn_fib_num;    
 
    std::ofstream file(filename.c_str(), std::ios::out|std::ios::app);
    
    if (!file) 
    {        
        std::cerr << "Невозможно открыть файл \"" 
                  << filename 
                  << "\""
                  << std::endl;
        exit(EXIT_FAILURE);
    }
 
    //Вывод в файл следующего числа Фиббоначчи.
    std::cout << std::endl
              << "Добавляем следующее число Фиббоначчи: "
              << next_fib_num
              << std::endl;
 
    file << next_fib_num
         << ' ';
}
 
int main()
{
    std::cout << std::fixed
              << std::setprecision(0);
    std::locale::global(std::locale("rus"));
    //Назначаем имя файлу.
    std::string  file_name = "D:\\files_for_cpp_pr\\chisla_fib.txt";
 
    //Добавляем в файл очередное число Фиббоначчи.
    add_fib_num_to_file(file_name);
    std::cout << std::endl
              << std::endl;
    return 0;
}
Yandex
Объявления
19.05.2010, 20:54     Последовательность фибоначи
Ответ Создать тему
Опции темы

Текущее время: 06:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru