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

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

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

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

29.11.2013, 23:26. Просмотров 446. Ответов 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 тот, который получился в предыдущей строчке...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2013, 23:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Условные операторы (C++):

С++.Операторы в С++: условные операторы, операторы break и continue - C++
Выяснить, пересекаются ли параболы у=аx2+bx+с и у=dx2+ex + f. При положительном ответе найти точки пересечения.

«Языки и технологии программирования» «Операторы цикла. Условные операторы» - C++
Не получается сделать что бы программа выводила все значения в промежутке, она выводит только одно. условия | ((z^3)+sin...

Условные операторы.Операторы цикла - C++
1)По номеру y(y&gt;0) некоторого года определить с-номер его столетия(учесть что к примеру началом 20 столетия был 1901 а не 1900 год.)...

Условные операторы - C++
Написать программу, которая вычисляет дату следующего дня. Ниже представлен рекомендуемый вид экрана во время работы программы. Введите...

условные операторы - C++
для заданых a,x написать программу для определения значений функции http://s51.***********/i132/1112/29/7a8ea17823f7.jpg ...

Условные операторы - C++
Здравствуйте! Сразу же покажу нужный кусочек проги (полная версия будет ниже): if(b&gt;0) { c=a+b; d=2*c; } else {

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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.
0
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;
}

Но не я не уверен, что до конца въехал в задание.
1
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,847
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?
1
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'е, сразу что-то не обратил внимания
0
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,847
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
её надо в первую голову проверять
0
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... Вот сейчас все поправил...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2013, 00:37
Привет! Вот еще темы с ответами:

Условные операторы с++ - C++
Доброго времени программисты, ищу спасения на вашем портале! Писал программу: Вывести на экран таблицу значений функции Y(x) и ее...

Условные операторы - C++
Напечатать таблицу значений функций y=sqr(x)+4x на интервале от -5 до 5.

Условные операторы и массивы - C++
Ученики начальной школы сдают технику чтения. Нормы следующие: в 1 клас-се ребёнок должен читать не менее 20 слов в минуту; во втором...

Используя вложеные условные операторы IF и IF-ELSE - C++
Составить программу для нахождения вещественных корней квадратного уравнения ax2+bx+c=0.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.11.2013, 00:37
Ответ Создать тему
Опции темы

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