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

Все компилируется, ничего не работает, cout не выводит текст - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
oleksandra
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 5
27.10.2012, 14:32     Все компилируется, ничего не работает, cout не выводит текст #1
Приветствую! Проблема заключается в следующем:
Ни разу не срабатывает строка из первого же цикла.
C++
1
cout << "Fibonacci_int(" << i << ") = " << Fibonacci_int(i) << endl;
Также не срабатывают другие циклы.
Сама программа компилируется, запрашивает число у пользователя, затем завершает свою работу.

Помогите разобраться, пожалуйста.Заранее благодарна.
П.С. прикрепляю архив готового проекта.

Программа подсчитывает и последовательно выводит все числа Фибоначчи <= числу, которое ввел пользователь. Имеется 3 функции, которые выполняют одну и ту же работу, но с разными типами данных - int, unsigned int, double.
Таково задание преподавателя - понять машинную арифметику, как числа располагаются в памяти компьютера и тд. Сначала считаются числа Фибоначчи для диапазона int, затем , когда значения выходят за пределы диапазона int, вызывается функция для unsigned int, затем для double.



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
#include <iostream>
#include "fibonacci.h"
using namespace std;
 
int main(){
    double n = 1;
    double i = 0;
    try{
        cout << "Enter n (the quantity of fibonacci numbers to count):";
        cin >> n;
        if (n < 0) throw n;
        
        while ( ( Fibonacci_int(i) < Fibonacci_int(i+1) ) && (i <= n) ){
                cout << "Fibonacci_int(" << i << ") = " << Fibonacci_int(i) << endl;
                i++;
            }
 
            while ( ( Fibonacci_uns_int(i) < Fibonacci_uns_int(i+1) ) && (i <= n) ){
                cout << "Fibonacci_uns_int(" << i << ") = " << Fibonacci_uns_int(i) << endl;
                i++;
            }
 
            while ( ( Fibonacci_double(i) < Fibonacci_double(i+1) ) && (i <= n) ){
                if (Fibonacci_double(i)/1e16 > 1 ){
                        cout << "Estimated values: " << endl
                            << "Fibonacci_double(" << i << ") = " 
                            << Fibonacci_double(i) << endl;
                }else{
                cout << "Fibonacci_double(" << i << ") = " << Fibonacci_double(i) << endl;
                }
                i++;                
            }
            
        }
    catch (double n){
        cout << "negative n!!" << endl;
    }
 
return 0;
}
Код реализации :
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
#include "fibonacci.h"
 
int Fibonacci_int(int n)
{
    int f, a, b;
    if (n<0) throw n; //на цьому завершується функція?
    if (n<2) return 1;
 
    a = 1; b = 1; f = 0;
    for (int k = 1; k < n; k++)
    {
        f = a+b;
        a = b;
        b = f;
    }
    return f;
};
 
 
unsigned int Fibonacci_uns_int(unsigned int n)
{
    unsigned int f, a, b;
    if (n<0) throw n; //на цьому завершується функція?
    if (n<2) return 1;
 
    a = 1; b = 1; f = 0;
    for (int k = 1; k < n; k++)
    {
        f = a+b;
        a = b;
        b = f;
    }
    return f;
};
 
double Fibonacci_double(double n)
{
    double f, a, b;
    if (n<0) throw n; //на цьому завершується функція?
    if (n<2) return 1;
 
    a = 1; b = 1; f = 0;
    for (int k = 1; k < n; k++)
    {
        f = a+b;
        a = b;
        b = f;
    }
    return f;
};
Вложения
Тип файла: rar dif types fibonacci.rar (2.0 Кб, 3 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
27.10.2012, 14:44     Все компилируется, ничего не работает, cout не выводит текст #2
C++
1
2
3
4
5
6
7
 catch (double n){
        cout << "negative n!!" << endl;
    }
 
system("pause");
return 0;
}
oleksandra
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 5
27.10.2012, 14:52  [ТС]     Все компилируется, ничего не работает, cout не выводит текст #3
и как это должно помочь?
прога не работает, даже когда пользователь вводит нормальное, положительное значение, "10", например.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
27.10.2012, 15:04     Все компилируется, ничего не работает, cout не выводит текст #4
oleksandra, это не даст консоли закрыться.
Посмотрел код. Вы проверяете каждый раз одно и то же условие Fibonacci_тип(i) < Fibonacci_тип(i+1)
Вначале i у вас равно 0. Получаем
Fibonacci_тип(0) < Fibonacci_тип(1)
1 < 1 - что неверно. Соответственно, вы не заходите ни в один из while
Darkauron
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 5
27.10.2012, 15:12     Все компилируется, ничего не работает, cout не выводит текст #5
oleksandra
Ты все усложнила!
Вот написал Все проще и понятнее=) Проверял, работает 100%
Причем текст в консоль будет выводить на РУССКОМ языке

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
int fib(int x);
int main ()
{
    setlocale(0,"");
    int x, i, otvet;
    while (0==0)
    {
    cout << "Введите число: ";
    cin >> x;
    cout << "Под номером: " << x << " число фибоначи: " << fib(x) << endl;
    }
}
int fib(int x)
{
    if (x < 3)
        return 1;
    else 
    return fib(x-2) + fib (x-1);
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2012, 15:35     Все компилируется, ничего не работает, cout не выводит текст #6
Цитата Сообщение от Darkauron Посмотреть сообщение
Ты все усложнила!
Задание сложнее:

Цитата Сообщение от oleksandra Посмотреть сообщение
Сначала считаются числа Фибоначчи для диапазона int, затем , когда значения выходят за пределы диапазона int, вызывается функция для unsigned int, затем для double.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2012, 15:39     Все компилируется, ничего не работает, cout не выводит текст
Еще ссылки по теме:

Выводит на экран сразу два cout C++
Cout не выводит числа C++
C++ Cout не выводит информацию на экран

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
oleksandra
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 5
27.10.2012, 15:39  [ТС]     Все компилируется, ничего не работает, cout не выводит текст #7
числа Фибоначчи рекурсией? за это можно убивать. хотя мой алгоритм не лучше, я думаю.

Добавлено через 1 минуту
Цитата Сообщение от I.M. Посмотреть сообщение
oleksandra, это не даст консоли закрыться.
Посмотрел код. Вы проверяете каждый раз одно и то же условие Fibonacci_тип(i) < Fibonacci_тип(i+1)
Вначале i у вас равно 0. Получаем
Fibonacci_тип(0) < Fibonacci_тип(1)
1 < 1 - что неверно. Соответственно, вы не заходите ни в один из while
Спасибо!
такие ошибки запоминаются надолго.
Yandex
Объявления
27.10.2012, 15:39     Все компилируется, ничего не работает, cout не выводит текст
Ответ Создать тему
Опции темы

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