Gå til innhold

bytte innholdet i to variabler


Anbefalte innlegg

Videoannonse
Annonse

jeg tror ikke det. For at dataen faktisk skal fortsette å eksistere MÅ den være oppbevart et sted. Men ser ikke problemet igrunn da det er vanlig å dra inn en tredje variabel. Det går forøvrig ann å bare bytte pekeren slik at dataen i seg selv ikke blir flyttet i minnet. Her trenger du alikevel en tredje variabel for å holde adressen hvis jeg ikke tar helt feil.

Lenke til kommentar
Hei....

 

Er det noen som vet hvordan man kan bytte innholdet i to variabler uten å bruke en tredje?!?!?!?! :roll:

 

-Shila-

 

PSPSPS:

 

Det var læreren vår som gav oss denne opg.......

 

-shila-

 

Hmm, tror jeg greide det allikevel 8) :

 

 

int a=3;

int b=17;

 

a=a+b; (a=3+17)

b=a-b; (b=20-17)

a=a-b; (a=20-3)

 

// b er nå 3

// a er nå 17

Lenke til kommentar
Hmm, tror jeg greide det allikevel :

 

 

int a=3;

int b=17;

 

a=a+b; (a=3+17)

b=a-b; (b=20-17)

a=a-b; (a=20-3)

 

// b er nå 3

// a er nå 17

 

Vel, eg er verken eit mattegeni eller ein c/c++ guru, men denne framgangsmåten vil vel berre virke på positive tal?

Til dømes:

a = 3

b = -25

 

a = a + b = 3 + (-25) = -22

b = a - b = 3 - (-25) = 28

a = a - b = -22 - 28 = -50

 

og med to negative tal:

 

a = -3

b = -25

 

a = a + b = -3 + (-25) = -27

b = a - b = -3 - (-25) = 22

a = a - b = -27 - 22 = -49

 

:shrug:

For å vere litt konstruktiv og;

trikser ein litt med if-tester og forteikn-vending, vil eg tru problemet er løyselig (Paddingtons formel fungerer for positive tal)...

Lenke til kommentar

Vel, eg er verken eit mattegeni eller ein c/c++ guru, men denne framgangsmåten vil vel berre virke på positive tal?

Til dømes:

a = 3

b = -25

 

a = a + b = 3 + (-25) = -22

b = a - b = 3 - (-25) = 28

a = a - b = -22 - 28 = -50

 

og med to negative tal:

 

a = -3

b = -25

 

a = a + b = -3 + (-25) = -27

b = a - b = -3 - (-25) = 22

a = a - b = -27 - 22 = -49

 

:shrug:

For å vere litt konstruktiv og;

trikser ein litt med if-tester og forteikn-vending, vil eg tru problemet er løyselig (Paddingtons formel fungerer for positive tal)...

 

Her har du nok regnet litt feil. Metoden vil virke uansett om du har positive eller negative tall. Men selv ville jeg fortsatt holdt meg til standardbibliotekets std::swap, selv om det kanskje ikke var det oppgaven fra læreren var ute etter :)

 

Rettelser:

 

a = 3

b = -25

 

a = a + b = 3 + (-25) = -22

b = a - b = -22 - (-25) = 3

a = a - b = -22 - 3 = -25

 

Det andre regnestykket ditt var også feil.

Lenke til kommentar

Kan få til mye med en bitvis XOR (^) da..

 

Typisk:

 

temp = a;

a = b;

b = temp;

 

Alternativt:

 

a ^= b;

b ^= a;

a ^= b;

 

Dette bør funke med andre verdier enn heltall også..

 

Ettersom strenger har litt fast størrelse, er det kanskje en fordel om de er like lange. Men går du gjennom hver char, en etter en, og tar bruker den metoden, vil du få swappet dem.

Lenke til kommentar
  • 1 måned senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...