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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Cancion2able
7 / 7 / 0
Регистрация: 08.12.2012
Сообщений: 108
#1

Путаница в условном операторе - C++

15.12.2013, 12:59. Просмотров 256. Ответов 9
Метки нет (Все метки)

Задача:
Если сумма трех попарно различных действительных чисел x, y, z меньше единицы, то наименьшее из этих трех чисел заменить полусуммой двух других; в противном случае заменить меньшее из x и y полусуммой двух оставшихся значений.

Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main(int argc, char* argv[])
{
        double x,y,z;
        if (x+y+z < 1) {
          if ((x<y) & (x<z)) {
          x = (y+z)/2;
          }
          else if ((y<x) & (y<z)) {
          y = (x+z)/2;
          } else z = (x+y)/2;
        }
        else if (x<y) {
        x = (y+z)/2;
        } else y = (x+z)/2;
 
        cout<<x;
        cout<<y;
        cout<<z;
 
        getch();
        return 0;
}
С результатом как-то не клеится, выводит "2.56091e+3032.53991e-3145.12181e+303". Поправьте, пожалуйста
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2013, 12:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Путаница в условном операторе (C++):

Ошибка в условном операторе - C++
Есть задача: создать класс, который бы имитировал стандартный тип данных int, но предупреждал о переполнении переменной (±2147483648). И...

Расстановка скобок в условном операторе - C++
Никак не могу понять где поставить скобки(begin end), чтобы если квадраты чисел равны не выводилось второе сообщение. #include...

Логическое выражение в условном операторе - C++
На поле (k, l) расположен слон. Угрожает ли он полю (m, n)?

Логическое выражение в условном операторе - C++
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8: первое – номер вертикали, второе – номер...

Тип double в условном выражении - C++
Добрый день, вопрос про тип double в условном выражении. В книге Б. Страуструпа &quot;Язык программирования C++&quot; приведен пример в программе...

путаница с указателями - C++
Люди, помогите, пожалуйста! Имеется двумерный динамический массив, объявленный и проинициализированный следующим образом: int i, j, n =...

9
scenotaph
120 / 120 / 15
Регистрация: 29.03.2013
Сообщений: 237
15.12.2013, 13:02 #2
Cancion2able, не & a &&
0
Cancion2able
7 / 7 / 0
Регистрация: 08.12.2012
Сообщений: 108
15.12.2013, 13:05  [ТС] #3
Цитата Сообщение от scenotaph Посмотреть сообщение
Cancion2able, не & a &&
Упс, дописывал строчку при правке и допустил такую ошибку. Изначально было 2 символа, результат тот же. Мб, у меня сам алгоритм неправильный, помогите, кто понимает.
0
S_el
2109 / 1628 / 308
Регистрация: 15.12.2013
Сообщений: 6,533
15.12.2013, 13:35 #4
Оно так и будет выводить.Ты не проинициализировал переменные.
0
Cancion2able
7 / 7 / 0
Регистрация: 08.12.2012
Сообщений: 108
15.12.2013, 13:42  [ТС] #5
Цитата Сообщение от S_el Посмотреть сообщение
Оно так и будет выводить.Ты не проинициализировал переменные.
Спасибо, но я все равно сомневаюсь на счет правильности алгоритма. Получается, он на выходе выдает тоже самое, что и было введено.
0
S_el
2109 / 1628 / 308
Регистрация: 15.12.2013
Сообщений: 6,533
15.12.2013, 13:47 #6
В алгоритме тоже есть ошибка,в 12 строчке твой элсеиф не связан с условием сумма меньше 1.То есть независимо от этой суммы присваивание будет выполнятся.
0
zss
Модератор
Эксперт С++
6486 / 6049 / 1987
Регистрация: 18.12.2011
Сообщений: 15,691
Завершенные тесты: 1
15.12.2013, 13:50 #7
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
int main(int argc, char* argv[])
{
        double x,y,z;
        cout<<"vvedite x:";
        cin>>x;
        cout<<"vvedite y:";
        cin>>y;
        cout<<"vvedite z:";
        cin>>z;
        if (x+y+z < 1) 
        {
              if ( x<y && x<z) 
                   x = (y+z)/2.;
              else if ( y<x  && y<z)
                   y = (x+z)/2.;
              else 
                   z = (x+y)/2.;
        }else if (x<y) 
                   x = (y+z)/2;
                else 
                   y = (x+z)/2;
         cout<<x<<" "<<y<<" "<<z<<endl;
         getch();
        return 0;
}
1
Ev_Hyper
Заблокирован
15.12.2013, 13:54 #8
А в случае равенства минимальных чисел что надо делать?
0
S_el
2109 / 1628 / 308
Регистрация: 15.12.2013
Сообщений: 6,533
15.12.2013, 13:59 #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main(int argc, char* argv[])
{
        double x,y,z;
        cin>>x>>y>>z;
        if (x+y+z<1) 
        {
        if(x==y || x==z || y==z) cout<<"2 ulu 3 peremennye ravnu"<<endl;    
         else if (x<y && x<z) x = (y+z)/2;
         else if (y<x && y<z) y = (x+z)/2;
         else if (z<x && z<y)  z = (x+y)/2;
        }
        else 
        {
            if (x<y) x=(y+z)/2;
            else if(y<x) y=(x+z)/2;
        } 
 
        cout<<x<<" "<<y<<" "<<z<<endl;
        return 0;
}
0
Cancion2able
7 / 7 / 0
Регистрация: 08.12.2012
Сообщений: 108
15.12.2013, 14:02  [ТС] #10
Спасибо всем, товарищи! Разобрался
0
15.12.2013, 14:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2013, 14:02
Привет! Вот еще темы с ответами:

Путаница в операторах - C++
Что же возвращает 6-ая строка? BOOL String::Invariants() const { #ifdef SHOW_INVARIANTS cout &lt;&lt; &quot;Invariants Tested&quot; &lt;&lt; endl; ...

Путаница в массиве - C++
setlocale(LC_ALL, &quot;Russian&quot;); const int B = 11; int A; int index(-1); int count; cout &lt;&lt; &quot;\n\t***Оценки стундентов в...

Путаница с sftream и операторами << и >> - C++
Значит так, иду спокойно по книжке по темам &quot;Открытие и закрытие текстовых файлов&quot;, а также &quot;Чтение и запись текстовых файлов&quot; и тут я...

Путаница среди IDE - C++
Доброго времени суток, Я начинаю изучать С++, и первая проблема, с которой я столкнулся - большое количество разных IDE со...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru