массив и выполнение условий

rev.t
Offline
Зарегистрирован: 03.10.2018

Добрый день, никак не получается реализовать такую функцию

получаю данные с датчика. записываю в пемеменные a и b. Нужно создать условие что когда a>50 но а<160 и b>330 но  b<65 то.... 

написал такую функцию 

 if (s>50 && s<160 && b>330 && b<65)   и не работает никак и стало понятно почему тк это конфликт условий по b. если оставить только if (a>50 && a<160 && b>330)  то все ок те нет второго условия по b

Думаю что в целом это не самый лучший вариант, куда изящее было бы реализовать используя некий массив. данные у меня что по a что b идут от 0 до 350. Может тогда как то из массива оценивать, что при значении a от 50 до 160 и одновременно при значении b от 0 до 65 и b от 330 до 350  то {...}

Спасибо буду очень благодарен помощи. Всем хорошего дня!

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

 if (s>50 && s<160 && b>330 && b<65)  

Это было в феврале — 
Первого апреля,
Сухо было на дворе —
Грязи по колено!

По железному мосту 
Сделанном из досок,
Шёл высокий человек
Маленького роста.

https://www.inpearls.ru/41850

 ПС::  if (s>50 && s<160 && (b>330 |b<65))  

rev.t
Offline
Зарегистрирован: 03.10.2018

ну так я же указал что это абсурдное условие )) там получается выполение условия по b если попадает в значение от 330 до 350 либо от 0 до 65

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

rev.t пишет:

получаю данные с датчика. записываю в пемеменные a и b. Нужно создать условие что когда a>50 но а<160 и b>330 но  b<65 то.... 

Никакое число  не бывает > 330, но < 65.

rev.t пишет:

Может тогда как то ....

А может сесть и просто словами сформулировать разумное, непротиворечивое условие? А потом уже программу писать?

rev.t
Offline
Зарегистрирован: 03.10.2018

Смотрите

для обеих переменных я получаю значения от 0 до 350

условие выполняется когда

значение а попадает в отрезок от 50 до 160

и одновременно

значение b попадает в промежуток от 300 до 350 либо от 0 до 65

sadman41
Offline
Зарегистрирован: 19.10.2016

Напишите ваше условие в строчку русскими словами с использованием "и", "или"...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

rev.t пишет:

условие выполняется когда

значение а попадает в отрезок от 50 до 160

и одновременно

значение b попадает в промежуток от 300 до 350 либо от 0 до 65

Ну, так и пишите. А Вы чего написали-то? Пишите так, как словами написано.

rev.t
Offline
Зарегистрирован: 03.10.2018

вариант от qwone в отлично, но можно ли на будущее как то удобнее формироват такие уловия в коде.

sadman41

если a >50 но <160 и b>330 либо b>0 но <60 то... {}

по b такое хитрое условие тк это отрезок окружности усеченной.

sadman41
Offline
Зарегистрирован: 19.10.2016

Не надо "но", "либо". Поверьте - выражение простое и, если не будете фантазировать, напишете за две минуты.  Только во вторую часть скобок надо больше. Группируйте... должно быть три группы условий.

rev.t
Offline
Зарегистрирован: 03.10.2018

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

rev.t пишет:

Смотрите

для обеих переменных я получаю значения от 0 до 350

условие выполняется когда

значение а попадает в отрезок от 50 до 160

и одновременно

значение b попадает в промежуток от 300 до 350 либо от 0 до 65

Может так?
ЕСЛИ (a>=50 И а<=160) И ((b>=300 И b<=350) ИЛИ (b>0 И b<=65)) ТО {}
 

rev.t
Offline
Зарегистрирован: 03.10.2018

done! всем спасибо за то что откликнулись все работает как надо. Хорошего дня тему можно закрывать)