Loading...
GogoK avatar GogoK 80 Точки

Математика за 1ви клас

Здравейте,

имам главоблъсканица с простите изчисления, малко помощ моля. -1-1-1=1 ?  -1+1+1= -3.. шаш!

int aa = - 1 - 1 - 1;                        Console.WriteLine(aa);                   Out:  -3
int bb = c - c - c;                           Console.WriteLine(bb);                   Out:   1

int a = -5;
int b = 5;
int c = -1;

int sumA = a - b;                           Console.WriteLine(sumA);             Out:  -10
int sumB = b - a;                           Console.WriteLine(sumB);             Out:  10
int sumC = a - a - a - a - a;            Console.WriteLine(sumC);             Out:  15  
int sumD = a + a;                          Console.WriteLine(sumD);             Out: -10
int sumE = c + c + c + c + c;         Console.WriteLine(sumE);              Out:  -5

Защо се получава така че 'a' и 'b' само с разменени позиции си променят резултата(при sumA и sumB), след като се извършва една и съща операция? Да кажем че при другите (C,D,E) може да се хване някаква идея макар че ми е абсурдна, но не разбирам за (A и B) какво се случва.

Който е наясно нека обясни моля да не гадая, че си чупих главата пак с задача заради тези.. Благодаря.

Тагове:
-2
Общи приказки 23/01/2015 04:12:27
oconne avatar oconne 113 Точки
Best Answer

Минуса и плюса могат да бъдат и унарни и бинарни операции.

В случая когато са унарни използваме следните правила:

    а) -(-х)=х, -(+х)=-х което е еквивалентно на -(х)=-х, +(-х)=-х, +(+х)=х.

Както виждаш '-' е обратима -(-х)=х.

    а.1) При това правило трябва да имаш предвид че като унарни опреции те са с по голям приоритет пред останалите.

     (Първо се изчисляват унарните там където се очаква такава интерпретация)

     Т.е    х-(-х) не е равно на -0, а е равно на х*2, или х-(-а) не е равно на -(х-а), а някои твърдят даже (х-а).

  а.2) Освен това '-' е дистрибутивен -(а+х)=-а-х;

  б) В общият случай бинарните операции не са комутативни т.е.  хОа \neаОх (при размяна на местата стойноста на израза се променя). Минуса е некумотативна, а плюса е комутативна опреция:

  б.1) Плюса е кумутативна: а+х=х+а;

  б.2) Минуса е некумотативна х-а \neа-х, доказателство: х-а=-(-х)-а=-(-х+а)=-(а-х), от тук се вижда -(а-х) не може да е равно на а-х (-А\neА при А\ne0), единствно ако а-х=0 или х=0, и а=0 е възможно равенство.

Това е много, много грубо доказателство  и дефиниця на правилата а)-б). Съществуват много по фини и изискани анализи на тези случаи в множеството на реалните числа. Но, пак е нещо като ориентир.

 

2
23/01/2015 12:58:14
GogoK avatar GogoK 80 Точки

Като цяло, след като присвоим отрицателна стойност в даден израз, той си запазва отрицателната стойност, но визуално при решението на задачата по напред, той губи знакът си(визуално) за отрицателна стойност.

int minusNomber = -1;     и вече пресвоил отрицателна стойност, но визуално няма знак "-" за него! И в последствие при мен заблудата беше "plusNomber - minusNomber"

И понеже на това ниво аз поне повече внимавам с синтаксиса на езика, приемам елементарната математика за даденост и започва и заблудата че ако израз няма знак за "-" той не може да е отрицателен макар и да го знаеш че е така. Отговорът ти е пред очите, но не достигаш до него, защото всичко останало ти е като китайски език, и допускаш че грешката ти е в синтаксиса на C#.

Както казах по горе, разбрах къде греша след като пуснах темата, но предполагам че и други може да имат подобен проблем затова и оставих темата, а не я изтрих.


Благодаря за обобщителния отговор!

0
oconne avatar oconne 113 Точки

Да, точно така, трябва да се прави разлика между име на променлива и нейната стойност, както в математическите изрази така и в програмният код. Абсурдно е да кръстим някоя променлива -х, т.е int -x; e неприемливо, дори забранено, за това както казваш ти, променливата крие своята стойност, т.е нейното име е само пълномощник или референция, но не и същност (стойност) .

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.