Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
1

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

22.06.2011, 21:18. Показов 792. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Только начал изучать 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 строку и говорит ошибка что не так как они связаны?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2011, 21:18
Ответы с готовыми решениями:

Как правильно засунуть две строчки в код программы?(
Вставить надо это: int ok; do { /********************************* *** Часть...

Как переставить две строчки матрицы не используя цикла?
Как переставить две строчки матрицы не используя цикла? Помогите пожалуйста с задачей.

В две строчки записать две цифры, а потом по закрытии программы и повторном открытии прочитать каждое число в отдельную переменную?
Как в с++ в две строчки записать две цифры, а потом по закрытии программы и повторном открытии...

Как сравниеть две строчки std string не учитывая геристр букв?
Как сравнить две строчки std string не учитывая геристр букв? :wall:

8
542 / 447 / 162
Регистрация: 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 строчке убрать "{", и вместо нее написать закрывающуюся "}"
1
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
22.06.2011, 21:41  [ТС] 3
Балин это не компилятор косячный а моя невнимательность(....
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
22.06.2011, 21:47 4
Цитата Сообщение от Mиxaил Посмотреть сообщение
здесь аргумент b должен быть вещественным, есть вариант заменить так:
Зачем? Компилятор и сам неплохо приведёт аргумент к даблу. А вот результат перед присваиванием целочисленной переменной можно было бы и округлить для надёжности.
0
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
22.06.2011, 21:58  [ТС] 5
Цитата Сообщение от grizlik78 Посмотреть сообщение
А вот результат перед присваиванием целочисленной переменной можно было бы и округлить для надёжности.
А вот по подробней можно?
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
22.06.2011, 22:04 6
Можно. Функция pow возвращает результат типа double. В принципе, если оба аргумента целые, то и результат будет целым, но поскольку алгоритм вычислений нам неизвестен, то мы должны быть готовы к тому, что функция вместо 16.0 может вернуть 15.9999999
Если такое число присвоить целочисленной переменной, то в неё запишется 15, так как дробная часть просто отбрасывается.
Чтобы этого избежать, если известно что результат должен быть целым и положительным, можно перед присваиванием прибавить к результату 0.5 (для отрицательных надо, наоборот, вычесть).
Ну а если результат может быть дробным, то переменная результата не должна иметь тип int
1
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
22.06.2011, 22:27  [ТС] 7
Задумчивое мдя.............
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
22.06.2011, 22:28 8
Для функции pow это, наверное, действительно перестраховка (по-крайней мере на интел-совместимых), но как только в формулах появляются логарифмы и экспоненты округление становится действительно актуальным.
1
easybudda
23.06.2011, 00:03     Как связаны эти две строчки?
  #9

Не по теме:

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

1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.06.2011, 00:03

Как объединить эти две функции?
Как объединить эти две функции? void AnsiToUnicode(){ char* szAnsi =...

Эти две строчки кода постоянно зависают
Добрый день. Написал эти две строчки кода Cells(Target.Row, 4)=Cells(Target.Row,...

Не могу понять как связаны две базы
Добрый день! У меня такая ситуация: на компьютере есть SCADA-система, которая постоянно...

Обьясните , как работают эти строчки в данном коде : с
Что озночают или что делают эти строки в данном коде ? Это программа , которая стирает первые два...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru