Shila Skrevet 16. september 2003 Del Skrevet 16. september 2003 Hei.... Er det noen som vet hvordan man kan bytte innholdet i to variabler uten å bruke en tredje?!?!?!?! -Shila- Lenke til kommentar
abcd423417984 Skrevet 16. september 2003 Del Skrevet 16. september 2003 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
Paddington Skrevet 16. september 2003 Del Skrevet 16. september 2003 Du kan jo bytte innholdet av de to variablene via en funksjon, så blir den tredje variabelen lokal inne i funksjonen, dermed slipper du ekstra globale variabler. (Hvis det kunne tenkes å være grunnen til at du vil unngå den ekstra variabelen??) Lenke til kommentar
Shila Skrevet 16. september 2003 Forfatter Del Skrevet 16. september 2003 Hei.... Er det noen som vet hvordan man kan bytte innholdet i to variabler uten å bruke en tredje?!?!?!?! -Shila- PSPSPS: Det var læreren vår som gav oss denne opg....... -shila- Lenke til kommentar
kjetil7 Skrevet 16. september 2003 Del Skrevet 16. september 2003 Standardbiblioteket har en template funksjon som heter swap . Du kan bruke denne. Slik ser den ut: template <class Type> void swap (Type& left_, Type& right_); Og slik kan den brukes: #include <algorithm> //... int i,j; std::swap(i, j); Lenke til kommentar
Paddington Skrevet 16. september 2003 Del Skrevet 16. september 2003 Hei.... Er det noen som vet hvordan man kan bytte innholdet i to variabler uten å bruke en tredje?!?!?!?! -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
Sharps Skrevet 16. september 2003 Del Skrevet 16. september 2003 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 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
kjetil7 Skrevet 16. september 2003 Del Skrevet 16. september 2003 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 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
Sharps Skrevet 16. september 2003 Del Skrevet 16. september 2003 :o hehehe, flause.... Nuvel, vi kan iallfall alle konstatere at eg fortsatt slit med matematikk på grunnskule-nivå! :wink: Lenke til kommentar
BlueEAGLE Skrevet 21. september 2003 Del Skrevet 21. september 2003 Jeg gjetter at det vil fungere vanvittig dårlig med strenger. Lenke til kommentar
Tosh Skrevet 21. september 2003 Del Skrevet 21. september 2003 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
abaddon Skrevet 23. september 2003 Del Skrevet 23. september 2003 Eller for å gjøre det enda mer elegant: a ^= b ^= a ^= b; Lenke til kommentar
Andre Rolfsen Skrevet 23. oktober 2003 Del Skrevet 23. oktober 2003 hehe, ja jeg vet om en måte, men det er vel en liten hack :-) Om denne metoden er særlig portabel vet jeg ikke(da jeg kun har tilgang til gcc). her er i alle fall koden: #define SWAP(a, B) ({__typeof__(a)__temp;__temp=(a);(a)=(B);(B)=__temp;}) Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå