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

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

Войти
Регистрация
Восстановить пароль
 
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
#1

Запись условия - C++

21.08.2011, 21:32. Просмотров 907. Ответов 12
Метки нет (Все метки)

Здравствуйте, не подскажите как правильно записать условие, если скажем есть int a и оно должно быть равно 1 или 5:
C++
1
2
3
if(a== (1||5)
\\or
if(a==1||5)
Может я что-то делал не так, но у меня ни один из этих методов не работал, или надо только так писать:
if (a==1 || a==5)?
Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2011, 21:32     Запись условия
Посмотрите здесь:

Запись логического условия - C++
как записать данную операцию на с++ операция во вложении

Объясните запись условия в if - C++
if (Index&(1<<1)) Не могу понять, что этот IF делает? Index - некая переменная (по сути индекс)...

Условия If - C++
Привет, сразу прошу прощения за глупый вопрос но я только начинающий программист и поэтому я не знаю как реализовать мою идею, но я уверен...

Условия с++ - C++
Здравствуйте! Нужно решить то, что во вложении ниже. Можете подсказать принцип решения? Или рассказать с чего начать?

3 условия - C++
помогите составить программу для решения системы уравнений задание: y=1-sqrt(2/x^5+1), при x>0 y=log(abs(x-3)+abs(x+1)), при x<0 ...

Условия if - C++
Компилятор выдает ошибки: miplased else, expression syntax, missing ;. Не могу разобраться что не так в условиях... if...

условия с++ - C++
помогите составить правильное условие не проходимости стены змейкой if(next.X < 3 || next.Y < 3 || next.X > 75 || next.Y > 23) ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
21.08.2011, 21:50     Запись условия #2
Цитата Сообщение от hepr Посмотреть сообщение
Может я что-то делал не так, но у меня ни один из этих методов не работал, или надо только так писать:
if (a==1 || a==5)?
только так
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
21.08.2011, 21:51     Запись условия #3
Именно так
C++
1
if (a == 1 || a == 5)
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
21.08.2011, 21:55     Запись условия #4
Если надо запутать врага, то я бы написал
C
1
if (2 == abs(3 - a))
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
21.08.2011, 22:07     Запись условия #5
Цитата Сообщение от grizlik78 Посмотреть сообщение
Если надо запутать врага, то я бы написал
C
1
if (2 == abs(3 - a))
Интересно, сейчас не ринутся все свои знания показывать, как со случаем "Hello, world"
-=ЮрА=-
Заблокирован
Автор FAQ
21.08.2011, 22:15     Запись условия #6
Туповастый, но как вариант
C++
1
2
3
4
5
6
7
8
switch(a){
case 1:
//Действия если а == 1
break;
case 5:
//Действия если а == 5
break;
};
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
21.08.2011, 22:16     Запись условия #7
А вот и посмотрим. Вариантов, мне кажется, не слишком много.
C
1
if (4 == (a - 3)*(3 - a))
C
1
if (5 == (4 | a))
C
1
if (1 == (~4 & a))
-=ЮрА=-
Заблокирован
Автор FAQ
21.08.2011, 22:16     Запись условия #8
Цитата Сообщение от grizlik78 Посмотреть сообщение
if (2 == abs(3 - a))
- нравится
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
21.08.2011, 22:22     Запись условия #9
Корень уравнения:
C++
1
if ((a-1)*(a-5) == 0)
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
21.08.2011, 22:26     Запись условия #10
Вообще, варианты с умножением вызывают у меня опасения в связи с возможным переполнением. Но сильно думать что-то лень уже
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
21.08.2011, 22:41     Запись условия #11
Цитата Сообщение от grizlik78 Посмотреть сообщение
Вариантов, мне кажется, не слишком много.
Вариантов бесконечное множество (ну, в компьютерном представлении конечное ) Достаточно взять любую функцию f(x) (определенную на множестве целых чисел), пересекающую ось Ox только в точках 1 и 5. И условие будет

C
1
if (f(a) == 0)
Добавлено через 9 минут
Более точно, функции определены в кольце вычетов по модулю n, а n уже от типа переменной зависит.
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
21.08.2011, 23:33     Запись условия #12
Цитата Сообщение от Olga_ Посмотреть сообщение
Достаточно взять любую функцию
А вот не такое это и просто дело, оказывается. Оба наши варианта с умножениями (я там ещё ошибку сделал, -4 должно быть) не годятся. Как я и предполагал, из-за переполнения на 32-битном int возможны ложные срабатывания: -2147483647, -2147483643, -1073741823, -1073741819, 1073741825, 1073741829
Варианты с модулем и побитовыми операциями работают надёжно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2011, 09:23     Запись условия
Еще ссылки по теме:

условия - C++
скажите все ли я условия учёл ? #include <stdio.h> #include <conio.h> #include <math.h> int main(void) ...

Оператор условия - C++
Есть массив в нём есть 10 элементов(например цифр 1). Например я могу изменять любой элемент массива на 0. Как мне прописать, что бы при...

Поливариантные условия - C++
Пусть элементами прямоугольного равнобедренного треугольника являются:1- катет a; 2-гипотенуза b; 3-высота h, опущенная из вершины прямого...

Пояснения условия - C++
Пожалуйста поясните следующую задачу. (Прошу решения не предлагать, мне нужно самому решить) ...

Условия не работают - C++
почему условия if (((x-x1)||(x1-x))<10) или if (((x-x1)<10)||((x1-x)<10)) неработают ? Как быть?


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

Или воспользуйтесь поиском по форуму:
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 09:23     Запись условия #13
Цитата Сообщение от grizlik78 Посмотреть сообщение
А вот не такое это и просто дело, оказывается.
Это чисто теоретически. А переполнение и от a+1 и a-1 бывает Просто корни найти уравнения
(a-1)*(a-5) = MAX_UINT, которые приведут к критическому результату. Поэтому всего лишь не более двух случаев ошибки. Во всех других случаях ошибки не будет (переполнение не страшно), так как все происходит в кольце вычетов http://www.cyberforum.ru/cgi-bin/latex.cgi?\mathbb{Z}_{MAX_UINT}.

Вариант с битами:
C
1
   if (((a-1) & ~0  &  (a-5) & ~0) == 0),
да и отрицание исходного подойдет
C
1
   if (!(a != 1 && a != 5))
Добавлено через 37 минут
А, да, в кольце вычетов больше корней получается, поэтому не надежный вариант, спасибо.
Yandex
Объявления
22.08.2011, 09:23     Запись условия
Ответ Создать тему
Опции темы

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