![]() |
На входе имеем 4-е переменные, на выходе 2-е.
К примеру есть переменные a,b,c,d. Я их проверяю по какому то принцыпу и у меня остается всегда 2-е каких то, либо a и d, либо c и b и.т.д. Как мне записать их в переменные x и y по умному, обычными условиями надоело пользоваться да и не кошерно вроде.
|
Ответ: На входе имеем 4-е переменные, на выходе 2-е.
chek1=0
chek2=0 chek3=0 chek4=0 if(a) chek1=1 if(b) chek2=1 if(c) chek3=1 if(d) chek4=1 x=? y=? Как быстро записать какие то две переменные в x и y если сумма всех chek всегда равна 2 либо ни одного? |
Ответ: На входе имеем 4-е переменные, на выходе 2-е.
не понятно.
что у тебя в переменных, числа? целые? по какому принципу ты их проверяешь? на равенство нулю, на положительность? ну например так: Код:
int a = 45; |
Ответ: На входе имеем 4-е переменные, на выходе 2-е.
HolyDel, ты намикаеш на то, что с разным исходным условием действовать нужно по разному?
у меня функция InLine(movs2\P1x,movs2\P1z) возвращает булеан. Поэтому и подписал chek1 chek2... Я просто хотел узнать универсальный способ, может он существует, а то 5-ти этажные условия нагромождать не хочется. |
Ответ: На входе имеем 4-е переменные, на выходе 2-е.
что у тебя должно быть в x, y? приведи более подробный пример. все еще не понятно.
|
Ответ: На входе имеем 4-е переменные, на выходе 2-е.
я выбрал из a,b,c,d к примеру c,d. Как по умному присвоить их x,y? С учетом того что могут быть и a,d и b,c?
|
Ответ: На входе имеем 4-е переменные, на выходе 2-е.
Загнать a, b, c, d в массив и выбрать 2 индекса.
|
Ответ: На входе имеем 4-е переменные, на выходе 2-е.
CRASHER
Такое ощущение что ты сам не понимаешь что хочешь :) Обьсни-же уже саму задачу, а не то, как ты ее пытаешься решить. ЗЫ переменные a,b,c,d это булевы результаты InLine? x, y должны содержать координаты передаваемые в InLine? а если нет, то какой смысл присваивать к ним конкретные две переменных из "a,b,c,d", если они все булевы? или же тебе надо чтобы x, y идентифицировали эту пару переменных? кто здесь?:) |
Ответ: На входе имеем 4-е переменные, на выходе 2-е.
Можешь сделать так, сам разберешься почему это работает) Явное приведение типов на всякий случай написал, для прояснения картины.
int s = (int)check1 * a + (int)check2 * b + (int)check3 * c + (int)check4 * d; int p = ((int)check1+1)*((int)check2+1)*((int)check3+1)*(( int)check4+1)*a*b*c*d; В этих двух переменных сумма и учетверенное произведение искомых переменных. Таким образом: int x = .5 * (s + sqrt(s^2 - p)); int y = .5 * (s - sqrt(s^2 - p)); Понятно, что можно было и наоборот посчитать, но про порядок, по которому в x и y кладутся переменные, ничего сказано не было. |
Ответ: На входе имеем 4-е переменные, на выходе 2-е.
Чот вы ребят все усложняете, кароч вот как все происходит.
Вот решение которое естесно не работает, но оно короткое и поможет понять о чем я. if (chek1=1) {x=a} if (chek2=1) {x=b} if (chek3=1) {y=c} if (chek4=1) {y=d} Это не будет работать потому что может быть так что chek1=0 и chek2=0 а к примеру chek3=1 и chek4=1 и тогда у меня в x не запишется ничего и y пере запишется два раза, как такого избежать, вот что я хочу узнать. Надеюсь хоть чуть смог пояснить... |
Ответ: На входе имеем 4-е переменные, на выходе 2-е.
Код:
int temp[2];int i = 0; |
Ответ: На входе имеем 4-е переменные, на выходе 2-е.
HolyDel, честно я понял что ответ AVL'а это уже близко, но все же твой ответ понятнее))
|
Часовой пояс GMT +4, время: 00:18. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot