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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2009, 20:55   #1
M1987
Новичок
Джуниор
 
Регистрация: 22.01.2009
Сообщений: 1
По умолчанию Вопрос новичка

Привет! В процессе работы возникла необходимость решения множества уравнение разных типов и чтобы не решать их вручную я написал такой код (здесь на примере некоторых квадратных уравнений):
Код:
#include <iostream.h>

int main()
{
    double a, b, c, x, z, y, counter;
    cin >> a; cin >> b; cin >> c;
    for( ; ; )
    {
               x += 0.001;
               y = a * (x * x) - b * x - c;
               if(!y) 
               {
                     cout << x << " is root\n"; counter++;
                     }
               z -= 0.001;
               y = a * (z * z) - b * z - c; 
               if(!y)
               {
                     cout << z << " is root\n"; counter++;
                     }
               if(counter == 2) break;
               }
               getchar();
               getchar();
               return 0;
               }
Когда значение выражения должно становиться равным 0, программа выдает значения типа х.ххххe -хх и условие не выполняется(в остальных случаях значения адекватные), если увеличиваю х и у на целые значения, все работает нормально...
Подскажите, пожалуйста, в чем может быть причина(использую DEV-C++)...
M1987 вне форума Ответить с цитированием
Старый 22.01.2009, 21:10   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

А почему цикл вечный? Решения уравнения ищутся на каком-то промежутке.
Почему счетчик типа double? И почему он не инициализирован?
если вы напишете
Код:
double a;
cout<<a;
то увидите, что а не равно 0. Так что инициализируйте переменные.
counter должен быть типа int. И начальное значение установите в 0.

Последний раз редактировалось MaTBeu; 22.01.2009 в 21:13.
MaTBeu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание функции вопрос от новичка C CKent Общие вопросы C/C++ 2 07.12.2008 17:31
Как же нарисовать линию на форме? (Вопрос новичка) grey Помощь студентам 11 24.11.2008 10:31
Вопрос (новичка) по переменным. grey Помощь студентам 5 03.11.2007 17:25
Не все готовые исходники компилируются (Вопрос новичка) grey Помощь студентам 9 28.10.2007 19:18