Софтуерно Инженерство
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
Samuil.Petrow avatar Samuil.Petrow 1548 Точки

Не мога да разбера тролиш ли или си сериозен...

"-1-1-1=1 ?  -1+1+1= -3.. " - това къде го видя?

"Защо се получава така че 'a' и 'b' само с разменени позиции си променят резултата(при sumA и sumB), след като се извършва една и съща операция?" - Е как няма,  нали като умалителя е по-голям от умаляемото - разликата ще бъде отрицателно число и съответно при обратното - положително... Не можеш да прилагаш разместително свойство.

Мисля, че трябва да си починеш и да се наспиш... :)

 

2
23/01/2015 08:14:27
RoYaL avatar RoYaL SoftUni Team Trainer 6846 Точки

Когато мислиш, че (5 - 3) == (3 - 5), chance are - 3,30 през нощта е :)

4
knoteva avatar knoteva 784 Точки

Правилото, че минус плюс минус е равно на плюс? 5 - (-5)=5+5=10.

3
GogoK avatar GogoK 80 Точки

Аз до снощи не можех да влезна в Judge да пробвам системата, и бях останал с впечатление че трябва 1во да стигна до Лаб или до изпит за да имам права за там. Но видях колежка от моето ниво, която е пуснала тема за Piggy Bank. Та видях че има хора на изпита които имат на 1вата задача 0 или малко точки и ми беше чудно как... Вярно е че беше късно и математика за последно съм учил преди повече от 10г. , но се сетих за това което е казала "@knoteva "- (-5)=5" след като пуснах темата. Затова и редактирах поста си ..

 -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

за да събуди интерес малко повече.

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

Айде със здраве и Благодаря за помощта!

0