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

не могу понять что с выводом - C++

Восстановить пароль Регистрация
 
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
21.09.2012, 15:27     не могу понять что с выводом #1
помогите найти косяк,у меня при отрицательном "a" он выдаёт результат и "error" хотя должен только "error" таже проблема если b=0 a>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
#include <stdafx.h>
#include <iostream>
 
using namespace std;
int main()
{
    double a,b;
    cout<<"VVedite a and b";
    cin>>a>>b;
    if (b>=a && a>0)
        cout<<sin(a)+cos(b)<<endl;
    else
    {
        if (b<a && b==0)
            cout<<"error"<<endl;
        else
            cout<<(a+b)/b*b-a;
        if (b>=a && a<=0 && 3*a+b<0)
            cout<<"error"<<endl;
        else
            cout<<sqrt(3*a+b)<<endl;
    }
    system("pause");
    return 0;
}
потом когда у меня a=0 и b<0 выдаёт непонятно чего так же если оба 0
Миниатюры
не могу понять что с выводом  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2012, 15:27     не могу понять что с выводом
Посмотрите здесь:

C++ Не могу понять что сделать!
C++ не могу понять что не так
не могу понять что не так((((( C++
Не могу понять что от меня хотят :( C++
C++ что не верно? не могу понять.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
serejkus
46 / 44 / 4
Регистрация: 31.10.2011
Сообщений: 98
21.09.2012, 15:48     не могу понять что с выводом #2
У вас получается следующий код:
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
#include <stdafx.h>
#include <iostream>
 
using namespace std;
int main()
{
    double a,b;
    cout<<"VVedite a and b";
    cin>>a>>b;
    if (b>=a && a>0)
        cout<<sin(a)+cos(b)<<endl;
    else
    {
        if (b<a && b==0) {
            cout<<"error"<<endl;
        } else {
            cout<<(a+b)/b*b-a;
        }
 
        if (b>=a && a<=0 && 3*a+b<0) {
            cout<<"error"<<endl;
        } else {
            cout<<sqrt(3*a+b)<<endl;
        }
    }
    system("pause");
    return 0;
}
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
21.09.2012, 16:21  [ТС]     не могу понять что с выводом #3
всё также
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6166 / 2895 / 282
Регистрация: 04.12.2011
Сообщений: 7,695
Записей в блоге: 3
21.09.2012, 16:30     не могу понять что с выводом #4
serejkus, проверьте логику:
Цитата Сообщение от serejkus Посмотреть сообщение
У вас получается следующий код:
C++
1
2
3
4
5
6
7
        if (b>=a && a<=0 && 3*a+b<0)//вот тут сработает если все истинны потому что && это И, то есть если подкоренное  выражение отрицательно, 
//скажем а остальные не выполнены, - будем извлекать корень из отрицательного числа :)
 {
            cout<<"error"<<endl;
        } else {
            cout<<sqrt(3*a+b)<<endl;
}
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
21.09.2012, 16:31     не могу понять что с выводом #5
if-else правь.
C++
1
2
3
4
5
6
7
8
        if (b<a && b==0)
            cout<<"error"<<endl;//выполнится или это
        else
            cout<<(a+b)/b*b-a;//или это
        if (b>=a && a<=0 && 3*a+b<0)
            cout<<"error"<<endl;//а потом выполнится еще и это
        else
            cout<<sqrt(3*a+b)<<endl;//или это. итого - 2 выполнения вместо одного
Если не прав - распиши, что за результат ты хочешь получить
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
21.09.2012, 16:51     не могу понять что с выводом #6
3*a+b - отрицательное значение судя по скрину, нужно еще проверку добавить на подкоренное выражения
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6166 / 2895 / 282
Регистрация: 04.12.2011
Сообщений: 7,695
Записей в блоге: 3
21.09.2012, 16:56     не могу понять что с выводом #7
Цитата Сообщение от IGPIGP Посмотреть сообщение
serejkus, проверьте логику:
serejkus, простите, реплика относится к SKS-65. Цитировал из Вашего поста, вот имя и скопипастил.
SKS-65, нужно использовать || OR (ИЛИ), что бы ни одно не выполнилось.
Почему, например, не оставить if((3*a+b)<0) - это полностью обезопасит корень?
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
21.09.2012, 17:45  [ТС]     не могу понять что с выводом #8
Цитата Сообщение от I.M. Посмотреть сообщение
Если не прав - распиши, что за результат ты хочешь получить
мне нужно чтобы при b>=a и a>0 он мне считал sin(a)+cos(b) при b>=a и a<=0 корень из 3a+b а при b>0 (a+b)/b*b-a
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
22.09.2012, 15:02     не могу понять что с выводом #9
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 main()
{
    double a, b;
    cout << "VVedite a and b";
    cin >> a >> b;
    if (b >= a){
       if(a > 0)
         cout << sin(a) + cos(b) << endl;
       else if(a <= 0 && (3 * a + b) > 0)
               cout << sqrt(3 * a + b) << endl;
            else
               cout<<"error"<<endl;
    };
    if (b > 0)
       cout << (a + b) / b * b - a << endl;
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2012, 00:00     не могу понять что с выводом
Еще ссылки по теме:

C++ Не могу что-то понять с указателями
C++ Что-то с циклом в программе не могу понять
Не могу понять, что это значит: while(i<10/2) C++

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

Или воспользуйтесь поиском по форуму:
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
23.09.2012, 00:00  [ТС]     не могу понять что с выводом #10
vitaska, не так тоже не совсем правильно считает,я вот так решил сделать,может немного банально,но вс работает как надо
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
#include <stdafx.h>
#include <iostream>
 
using namespace std;
int main()
{
    double a,b,k;
    cout<<"VVedite a and b";
    cin>>a>>b;
    if (b>=a && a>0)
        k=0;
    else
    {
        if (b>=a && a<=0)
            k=1;
        else
        {
            if (b<a && a>0 || b<a && a<=0)
                k=2;
        }
    }
        if (k!=1 && k!=2)
            cout<<sin(a)+cos(b)<<endl;
        if (k!=0 && k!=2 && (3*a+b)>=0)
            cout<<sqrt(3*a+b)<<endl;
        if (k!=0 && k!=2 && (3*a+b)<0)
            cout<<"error"<<endl;
        if (k!=0 && k!=1 && b!=0)
            cout<<(a+b)/b*b-a<<endl;
        if (k!=0 && k!=1 && b==0)
            cout<<"error"<<endl;
    
    system("pause");
    return 0;
}
Yandex
Объявления
23.09.2012, 00:00     не могу понять что с выводом
Ответ Создать тему
Опции темы

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