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

Добрый день!(а точнее вечер) Немогли бы объяснить почему зацикливается программа? - C++

Восстановить пароль Регистрация
 
Michanya
0 / 0 / 0
Регистрация: 21.11.2010
Сообщений: 50
22.11.2010, 00:00     Добрый день!(а точнее вечер) Немогли бы объяснить почему зацикливается программа? #1
Вычислить и вывести на экран в виде таблицы значения функции F на интервале
от Хнач. до Хкон. с шагом dX.
F= a*x*x +b*x +c(при a<0 и с не равном 0)
F=-a/(x-c)(при a>0 и с=0)
F=a(x+c)(в остальных случаях)
где а,b, с — действительные числа.
Функция F должна принимать действительное значение, если выражение
Ац И (Вц ИЛИ Сц)
не равно нулю, и целое значение в противном случае. Через Ац, Вц и Сц обозначены
целые части значений а, Ь, с, операции И и ИЛИ — поразрядные. Значения
а, b, с, Хнач., Хкон., dX ввести с клавиатуры.
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
#include <iostream>
using namespace std;
int main()
{
 
    int a, b, c;
    cout << "vvedite a = ";
    cin >> a;
    cout << "vvedite b = ";
    cin >> b;
    cout << "vvedite c = ";
    cin >> c;
    int x1, x2;
    cout << "vvedite x nachalnoe = ";
    cin >> x1;
    cout << "vvedite x konechnoe = ";
    cin >> x2;
    int dx;
    cout << "vvedite chag = ";
    cin >> dx;
    int p;
    p = x2 / dx;
 
            
                for (int i=0; i<p; i++)
                {
                    while ( x2 > i*dx)
                    {
                    if (a!=0 && b!=0 && c!=0)
                    { double f;
 
 
                            if ( a<0 && c!=0 )
                            {f = a * (x1 + i * dx) + (x1 + i * dx) + c;
                            }
                            if ( a>0 && c==0 )
                            {f = -a / ((x1 + i * dx)+c);
                            }
                            else 
                            {f = a * ((x1 + i * dx) + c);
                            }
                            cout << f ;
                    }
                    else
                    { int f;
 
                            if ( a<0 && c!=0 )
                            {f = a * (x1 + i * dx) * (x1 + i * dx) + (x1 + i * dx) + c;
                            }
                            if ( a>0 && c==0 )
                            {f = -a / ((x1 + i * dx)+c);
                            }
                            else 
                            {f = a * ((x1 + i * dx) + c);
                            }
                            cout << f ;
                
                    }
                    
                 }
                }
            
        
system ("pause");
return 0;
 
 
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2010, 00:00     Добрый день!(а точнее вечер) Немогли бы объяснить почему зацикливается программа?
Посмотрите здесь:

C++ Добрый вечер, прошу помощи по строкам и лексемам (strtok)
Добрый вечер, как сделать задержку экрана, после введенных цифр? C++
C++ Добрый вечер! если онлайн практика по С++
C++ Добрый вечер! Передача в функцию константного значения и обьявление им массива
C++ Почему зацикливается программа?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
22.11.2010, 03:37     Добрый день!(а точнее вечер) Немогли бы объяснить почему зацикливается программа? #2
А точно зацикливается? Может вы просто вводите очень большой x2 и очень маленький dx, т.е. p будет очень большим и программа будет очень долго выполняться (с учётом того, что каждую итерацию вложенного цикла происходит выводи на консоль - операция медленная).
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
22.11.2010, 06:30     Добрый день!(а точнее вечер) Немогли бы объяснить почему зацикливается программа? #3
Michanya, Вот смотрите, Вы начали цикл:
for (int i=0; i<p; i++)
{
Сейчас i равна 0 и соответственно входя в следующий цикл:
while ( x2 > i*dx)
условие x2>i*dx у Вас выполняется.
Внутри цикла
while ( x2 > i*dx)
у вас не меняется ни i, ни x2, ни dx. И соответственно он бесконечен.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
22.11.2010, 13:42     Добрый день!(а точнее вечер) Немогли бы объяснить почему зацикливается программа? #4
Цитата Сообщение от Michanya Посмотреть сообщение
если выражение
Ац И (Вц ИЛИ Сц)
не равно нулю
Цитата Сообщение от Michanya Посмотреть сообщение
операции И и ИЛИ — поразрядные
тобишь & - и, | - или
Yandex
Объявления
22.11.2010, 13:42     Добрый день!(а точнее вечер) Немогли бы объяснить почему зацикливается программа?
Ответ Создать тему
Опции темы

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