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

Как связаны эти две строчки? - C++

Восстановить пароль Регистрация
 
lqazxsazl
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
22.06.2011, 21:18     Как связаны эти две строчки? #1
Только начал изучать c++ и для закрепления основ решил написать программку для решения квадратных уравненй. И возникли небольшие проблемы при компиляции и с компилятором вообще

Вот сам код:

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 <windows.h> 
#include <math.h> 
using namespace std; 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    cout << "Введите a, b, c" << endl;
    int a, b, b2, c, d, x1, x2, y;
    cin >> a;
    cin >> b;
    cin >> c;
    y = 2;
    b2 = pow(b,y);
    d = b2-(4*a*c); 
    cout << "d=" << d << endl;
    x1 = (-(b)+(sqrt(d)))/(2*a); 
    x2 = (-(b)-(sqrt(d)))/(2*a); 
           if (d>0)
           {
    cout << "d>0 Два корня." << endl;
    }        
        else
        {
    cout << "d<0 Нет решений" << endl;
    cout << "Ответ:" << endl;
    cout << "x1=" << x1 << endl;
    cout << "x2=" << x2 << endl;
{    
    system("PAUSE");
}
Как связаны между собой строчки 15 и строчки со скобками в условии if когда их нет все нормально компилируется когда они стоят он выделяет мне 15 строку и говорит ошибка что не так как они связаны?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2011, 21:18     Как связаны эти две строчки?
Посмотрите здесь:

Как переставить две строчки матрицы не используя цикла? C++
C++ Как правильно засунуть две строчки в код программы?(
Подправить две строчки в задаче C++
C++ Как сравниеть две строчки std string не учитывая геристр букв?
C++ В две строчки записать две цифры, а потом по закрытии программы и повторном открытии прочитать каждое число в отдельную переменную?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
22.06.2011, 21:26     Как связаны эти две строчки? #2
C++
1
b2 = pow(b,y);
здесь аргумент b должен быть вещественным, есть вариант заменить так:
C++
1
b2 = pow(b * 1.0,y); // b2 = pow ( static_cast < float > (b), y )
с sqrt () тоже самое

в 30 строчке убрать "{", и вместо нее написать закрывающуюся "}"
lqazxsazl
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
22.06.2011, 21:41  [ТС]     Как связаны эти две строчки? #3
Балин это не компилятор косячный а моя невнимательность(....
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
22.06.2011, 21:47     Как связаны эти две строчки? #4
Цитата Сообщение от Mиxaил Посмотреть сообщение
здесь аргумент b должен быть вещественным, есть вариант заменить так:
Зачем? Компилятор и сам неплохо приведёт аргумент к даблу. А вот результат перед присваиванием целочисленной переменной можно было бы и округлить для надёжности.
lqazxsazl
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
22.06.2011, 21:58  [ТС]     Как связаны эти две строчки? #5
Цитата Сообщение от grizlik78 Посмотреть сообщение
А вот результат перед присваиванием целочисленной переменной можно было бы и округлить для надёжности.
А вот по подробней можно?
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
22.06.2011, 22:04     Как связаны эти две строчки? #6
Можно. Функция pow возвращает результат типа double. В принципе, если оба аргумента целые, то и результат будет целым, но поскольку алгоритм вычислений нам неизвестен, то мы должны быть готовы к тому, что функция вместо 16.0 может вернуть 15.9999999
Если такое число присвоить целочисленной переменной, то в неё запишется 15, так как дробная часть просто отбрасывается.
Чтобы этого избежать, если известно что результат должен быть целым и положительным, можно перед присваиванием прибавить к результату 0.5 (для отрицательных надо, наоборот, вычесть).
Ну а если результат может быть дробным, то переменная результата не должна иметь тип int
lqazxsazl
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
22.06.2011, 22:27  [ТС]     Как связаны эти две строчки? #7
Задумчивое мдя.............
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
22.06.2011, 22:28     Как связаны эти две строчки? #8
Для функции pow это, наверное, действительно перестраховка (по-крайней мере на интел-совместимых), но как только в формулах появляются логарифмы и экспоненты округление становится действительно актуальным.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2011, 00:03     Как связаны эти две строчки?
Еще ссылки по теме:

C++ Компилятор пропускает две строчки
Объясните две строчки кода C++
Расскажите что значат эти строчки (работа со строками и функциями) C++

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

Или воспользуйтесь поиском по форуму:
easybudda
23.06.2011, 00:03     Как связаны эти две строчки?
  #9

Не по теме:

Цитата Сообщение от lqazxsazl Посмотреть сообщение
Балин это не компилятор косячный
Не, это винда глючная...

Yandex
Объявления
23.06.2011, 00:03     Как связаны эти две строчки?
Ответ Создать тему
Опции темы

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