Avatar billede intel4ever Nybegynder
26. januar 2004 - 11:02 Der er 7 kommentarer og
1 løsning

Ombyt 2 tal ved hjælp af pointer

hej, jeg sider med en opgaver hvor jeg skal ombytte 2 tal ved hjælp af 2 pointer. men har ikke så meget styr på pointer håber der er nogen der kan hjælpe lidt.

her er et ex. så er det måske lidt lettere at forstå hved jeg mener.

#include <iostream>
using namespace std;

int main()
{
    int tal1;
    int tal2;
    int* ptal1;
    int* ptal2;

    // -- indtastninger
    cout << "indtast to tal som skal byttes om med pointer" << endl << endl << endl;
    cout << "indtast tal1: ";
    cin >> tal1;
    cout << endl << "indtast tal2: ";
    cin >> tal2;
   
    // -- pointer
    ptal1 = &tal1;
    ptal2 = &tal2;

    // -- test
    cout << ptal1 << endl << ptal2;

    // -- tal1 skal herefter byttes om med tal2

   
   
   
    return 0;
}



på forhånd tak.
Avatar billede intel4ever Nybegynder
26. januar 2004 - 11:03 #1
og sry stavefejl!
Avatar billede soreno Praktikant
26. januar 2004 - 11:17 #2
Du skal bruge en temp variabel, f.eks. noget ala dette:

void swap_int(int *p, int *q)
{
    int *temp;
    temp = p;
    p = q;
    q = temp;
}
Avatar billede chries Nybegynder
26. januar 2004 - 11:18 #3
Tror ikke man kan bytte to tal via to pointere uden at misbruge dem. Du har kun to "gemme" celler.

Hvis misbrug er ok:
    int a = 2; int b = 3;
   
    int *pA;
    pA = (int*)a;
    a = b;

    b = (int)pA;
Avatar billede soreno Praktikant
26. januar 2004 - 11:24 #4
Et eksempel, der faktisk virker:

#include <iostream>

using namespace std;

void swap_int(int &p, int &q)
{
    int temp;
    temp = p;
    p = q;
    q = temp;
}

int main()
{
    int tal1 = 123;
    int tal2 = 456;
    int* ptal1;
    int* ptal2;

    ptal1 = &tal1;
    ptal2 = &tal2;

    cout << "a = " << *ptal1 << "\tb = " << *ptal2 << endl;
    swap_int(*ptal1, *ptal2);
    cout << "a = " << *ptal1 << "\tb = " << *ptal2 << endl;
   
   
    return 0;   
}
Avatar billede soreno Praktikant
26. januar 2004 - 11:26 #5
Andet eksempel:
#include <iostream>

using namespace std;

void swap_int(int *p, int *q)
{
    int temp;
    temp = *p;
    *p = *q;
    *q = temp;
}

int main()
{
    int tal1 = 123;
    int tal2 = 456;
    int* ptal1;
    int* ptal2;

    ptal1 = &tal1;
    ptal2 = &tal2;

    cout << "a = " << *ptal1 << "\tb = " << *ptal2 << endl;
    swap_int(&tal1, &tal2);
    cout << "a = " << *ptal1 << "\tb = " << *ptal2 << endl;
   
   
    return 0;   
}
Avatar billede soreno Praktikant
26. januar 2004 - 11:29 #6
Og en sidst, som ikke bruger en temp variabel.

void swap_int(int * x, int * y)
{   
    *x = *x ^ *y;
    *y = *x ^ *y;
    *x = *x ^ *y;
}
Avatar billede intel4ever Nybegynder
26. januar 2004 - 11:30 #7
takker det var lige det der skulle til kan du ikke lige lave et svar soreno
Avatar billede soreno Praktikant
26. januar 2004 - 11:32 #8
Ok.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester