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

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

Войти
Регистрация
Восстановить пароль
 
Alek70694
4 / 4 / 0
Регистрация: 27.10.2012
Сообщений: 247
#1

Условные операторы - C++

29.11.2013, 23:26. Просмотров 400. Ответов 6
Метки нет (Все метки)

Задание: создайте условный оператор, который присваивал бы x*y для четного x, в противном случае для нечетного x и y, не равного 0, присваивал бы x/y; наконец, если ни одно из предыдущих условий не вычисляется в true, выводил бы на экране сообщение, что значения равны 0.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
int main (void)
{
int x, y;
cin >> x >> y;
x = (x % 2 != 0 && x != 0) ? x/y : x * y;
y = (y % 2 != 0 && y != 0) ? x/y : x == 0;
cout << x << endl << y;
return 0;
}
Вот попытка написать, но в строчке "y = (y % 2 != 0 && y != 0) ? x/y : x == 0;" берется x тот, который получился в предыдущей строчке...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vensus
41 / 23 / 9
Регистрация: 29.11.2013
Сообщений: 74
29.11.2013, 23:34     Условные операторы #2
Цитата Сообщение от Alek70694 Посмотреть сообщение
C++
1
2
x = (x % 2 != 0 && x != 0) ? x/y : x * y;
y = (y % 2 != 0 && y != 0) ? x/y : x == 0;
Кто вам предложил так писать? Лучше напиши по стандарту:
C++
1
2
3
4
5
6
if(!x)
{
    if(x%2) x = x/y;
    else x = x*y;
}
else x = y = 0;
Зато ошибок сразу меньше станет...
P.S. Не понял чему надо присвоить значение x*y или x/y, поэтому присвоил их просто x.
hwmlex
41 / 41 / 3
Регистрация: 30.01.2013
Сообщений: 133
29.11.2013, 23:43     Условные операторы #3
Вроде бы так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int main()
{
    int x = 0, y = 0;
    std::cin >> x >> y;
 
    x = !(x % 2) ? (x * y) : 0;
    x = (x % 2) && !(y) ? (x / y) : 0;
 
    std::cout << x << y;
}

Но не я не уверен, что до конца въехал в задание.
ValeryS
Модератор
6506 / 4972 / 459
Регистрация: 14.02.2011
Сообщений: 16,474
30.11.2013, 00:06     Условные операторы #4
Цитата Сообщение от Alek70694 Посмотреть сообщение
(x % 2 != 0 && x != 0)
лишнее условие
если x % 2 не равно 0 то оно нечетное следовательно никак не будет равно 0
а если x ==0 то первое же сравнение x % 2 даст ложь и до второго сравнения дело не дойдет
Цитата Сообщение от Alek70694 Посмотреть сообщение
Вот попытка написать, но в строчке "y = (y % 2 != 0 && y != 0) ? x/y : x == 0;" берется x тот, который получился в предыдущей строчке...
правильно
вторая строчка выполняется всегда
если так хочешь тернарный оператор то это будет выглядеть примерно так
x = (x % 2) ? ((!y)? 0: x/y) : x * y;
ну не знаю более понятно это или нет, чем то решение которое написал Vensus,

Добавлено через 21 минуту
Цитата Сообщение от Vensus Посмотреть сообщение
if(x%2) x = x/y;
подумай что будет если y равен 0?
Vensus
41 / 23 / 9
Регистрация: 29.11.2013
Сообщений: 74
30.11.2013, 00:09     Условные операторы #5
C++
1
2
3
4
5
6
if(x)
{
    if(x%2) x = x/y;
    else x = x*y;
}
else x = y = 0;
ValeryS, я исправил Да ошибся с воскл. знаков в if'е, сразу что-то не обратил внимания
ValeryS
Модератор
6506 / 4972 / 459
Регистрация: 14.02.2011
Сообщений: 16,474
30.11.2013, 00:17     Условные операторы #6
Цитата Сообщение от Vensus Посмотреть сообщение
ValeryS, я исправил
не а не исправил
смотри по шагам
допустим x = 5 а y = 0;
C++
1
if(x)
срабатывает входим в тело
C++
1
if(x%2)
5%2=1 сиречь истина срабатывает входим в тело
C++
1
x = x/y;
и получаем
x = 5/0;
на 0 делить нельзя получим исключение
посему самая страшная здесь y
её надо в первую голову проверять
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2013, 00:37     Условные операторы
Еще ссылки по теме:

C++ Флаг eofbit в потоке и условные операторы
Трабл с решением задания, условные операторы C++
C++ Арифметиеские выражения и условные операторы
Условные операторы C++
C++ Условные операторы с++

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

Или воспользуйтесь поиском по форуму:
Vensus
41 / 23 / 9
Регистрация: 29.11.2013
Сообщений: 74
30.11.2013, 00:37     Условные операторы #7
ValeryS,
C++
1
2
3
4
5
6
if(y)
{
    if(x%2) x = x/y;
    else x = x*y;
}
else x = y = 0;
я просто вопроса сначала не понял... У меня ночь, и я забыл что на 0 делить нельзя, вот теперь исправил
P.S. Я думал при x = 0 надо и x и y приравнивать к 0, а это оказывается условие для y... Вот сейчас все поправил...
Yandex
Объявления
30.11.2013, 00:37     Условные операторы
Ответ Создать тему
Опции темы

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