Arduino Polska Forum
Sandbox 2: Zmienne - ćwiczenie na wyobraźnie - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: Sandbox 2: Zmienne - ćwiczenie na wyobraźnie (/watek-sandbox-2-zmienne-%C4%87wiczenie-na-wyobra%C5%BAnie)

Strony: 1 2


Sandbox 2: Zmienne - ćwiczenie na wyobraźnie - wojtekizk - 14-01-2016

Witam ponownie
Kurcze mały tu jeszcze ruch w interesie, więc może zachęcę zaglądających tu kolegów i koleżanki (bo pewnie takie są, albo będą) do odrobiny intelektualnego wysiłku.
Na początek pierwsze ćwiczenie z C++:
Proszę przy użyciu tylko DWÓCH zdefiniowanych zmiennych, zamienić ich wartości miejscami.
czyli mamy np:
int x=5;
int y=8;
sprawić aby po zamianie x=8 a y=5
Nie wolno posługiwać się zmiennymi pomocniczymi , tylko x i y.
Czekam na odpowiedzi... może ten banalny przykład rozrusza nieco atmosferę :-)
Pozdrawiam


RE: Sandbox 2: Zmienne - ćwiczenie na wyobraźnie - Bogusz - 14-01-2016

Hmmm czy takie coś zda egzamin ?

x = x + y;
y = x - y;
x = x - y;


RE: Sandbox 2: Zmienne - ćwiczenie na wyobraźnie - wojtekizk - 14-01-2016

(14-01-2016, 11:33)Bogusz napisał(a): Hmmm czy takie coś zda egzamin ?

x = x + y;
y = x - y;
x = x - y;

Cześć jasne!
Zgłoś się teraz do do admina... niech da to co obiecał :-)
ps. Nareszcie jakiś ruch :-)

Przypomniałem sobie przy tej okazji, że kiedyś było takie kultowe coś jak COMMODORE C64 ,gdzie pamięć była sprzętowo podzielona na osobne obszary przeznaczone na przechowywanie zmiennych i kodu maszynowego programu. Jeśli dobrze pamiętam to na zmienne było tylko 4 kB i  trzeba było bardzo uważać aby nie przykryć jednego drugim, bo to powodowało 100% zwis komputerka, zwłaszcza że niemal wszystko przechowywane było w tablicach. Ale to bardzo stare dzieje, które jednak miło się wspomina (oj te noce spędzone przy magnetofonie z ołówkiem, który miał sześciokątny przekrój. Kto dziś pamięta dlaczego akurat taki? :-)
Pozdrawiam
Na pocieszenie dla tych pozostałych, którzy nie zdążyli z odpowiedzią napiszę tylko tyle,że jest jeszcze jedno rozwiązanie oparte na referencjach( czyli do miejsc w pamięci gdzie przechowywane są wartości) - jednak niezupełnie o to chodziło.


RE: Sandbox 2: Zmienne - ćwiczenie na wyobraźnie - Bogusz - 14-01-2016

Szkoda, że tak mało tego ruchu. Możliwe, że wieczorem ktoś jeszcze się odezwie Smile


RE: Sandbox 2: Zmienne - ćwiczenie na wyobraźnie - Lata - 14-01-2016

Ja tez zaglądałem ale rozwiązania nie znałem Sad


RE: Sandbox 2: Zmienne - ćwiczenie na wyobraźnie - adix - 27-01-2016

if(x=5) y=5;
if(y=5) x=8;


RE: Sandbox 2: Zmienne - ćwiczenie na wyobraźnie - wojtekizk - 29-01-2016

(27-01-2016, 23:22)adix napisał(a): if(x=5) y=5;
if(y=5) x=8;

Cześć... z tymi wartościami to był przykład. Twój kod jest logicznie poprawny, ale działa tylko wtedy gdy znasz wartość x i y. Ogólnie chodzi o zamianę wartości obu zmiennych, dowolnych wartości.
W języku C operatorem porównania jest ==. W twoim przypadku, jeśli to jest C (C++) to już w pierwszej linii masz:
x=5 i  y =5 :-)
Pozdrawiam


RE: Sandbox 2: Zmienne - ćwiczenie na wyobraźnie - adix - 30-01-2016

o tym == podwójnym zapominam czasem ale kompilator mi przypomina a co do twojego pytania wystarczy i 2 zimne pomocnicze i 2 warunków.
x1=x;
y1=y;
if(x=x1) y=x;
if(y=x) x=y1;


RE: Sandbox 2: Zmienne - ćwiczenie na wyobraźnie - wojtekizk - 30-01-2016

(30-01-2016, 00:43)adix napisał(a): o tym == podwójnym zapominam czasem ale kompilator mi przypomina a co do twojego pytania wystarczy i 2 zimne pomocnicze i 2 warunków.
x1=x;
y1=y;
if(x=x1) y=x;
if(y=x) x=y1;

To niezgodne z warunkami ćwiczenia. Przeczytaj pierwszy post. Jedyne właściwe rozwiązanie przesłał pierwszy odpowiadający.
.. A Twoje rozwiązanie aż z 2 zmiennymi pomocniczymi i 2 if-ami - to chyba najbardziej zawiłe jest. Po co aż 2 zmienne pomocnicze? A z jedną nie łaska?
z=x; x=y; y=z;
Pozdrawiam :-)


RE: Sandbox 2: Zmienne - ćwiczenie na wyobraźnie - adix - 31-01-2016

Kod:
switch( x )
{
case 1:
x=y;
  y=1;

    break;
  
case 2:
  x=y;
  y=2;
    break;
case 3:
  x=y;
  y=3;
    break;case 4:
   x=y;
   y=4;
    break;
case 5:
   x=y;
  y=5;
    break;case 6:
   x=y;
  y=6;
    break;
case 7:
   x=y;
  y=7;
    break;
case 8:
   x=y;
  y=8;
    break;
case 9:
   x=y;
  y=9;
    break;
case 0:
  x=y;
  y=0;
    break;

}
proszę cie bardzo zamiana bez końca i bez dodatkowych zmiennych