Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: bamdrums en 15 Enero 2015, 02:12 am



Título: Apuntadores con c++ Ayuda!!!
Publicado por: bamdrums en 15 Enero 2015, 02:12 am
hola que tal quisiera que alguien me pudiera explicar un programa ya que en verdad que no entiendo el funcionamiento del programa , encontré la solución un amigo me ayudo pero aunque me explico aun tengo dudas espero me puedan ayudar .
El programa tenía que tener 2 valores en dos variables y con apuntadores se tenía que invertir el valor de estos les dejo el código :

#include <iostream>


using namespace std;

int main (){
   
   int x=3,y=2,*p1=NULL,*p2=NULL;
   
   cout << "El valor de x es: "<< x << "\n";
   cout << "El valor de y es: "<< y << "\n\n\n";
   
   
   p1=&y;
        p2=&x;
   *p1 += *p2;
        *p2 = *p1-*p2;
        *p1 -= *p2;
   

   cout << "El valor de x es: "<< x << "\n";
   cout << "El valor de y es "<< y << "\n\n\n";
   
   return 0;
   
   
}


Al ejecutar el programa si invierte los valores , lo que no entiendo es el algoritmo que hace esto , siendo está la parte del código:

 
        *p1 += *p2;
        *p2 = *p1-*p2;
        *p1 -= *p2;

espero que me puedan explicar :C , saludos


Título: Re: Apuntadores con c++ Ayuda!!!
Publicado por: MCKSys Argentina en 15 Enero 2015, 04:29 am
Código
  1. int x=3,y=2;
  2. p1=&y;
  3. p2=&x;
  4. *p1 += *p2;
  5. *p2 = *p1-*p2;
  6. *p1 -= *p2;
  7.  

El "apuntador" o puntero (o, mejor aún, pointer) p1 contiene la dirección de memoria donde se encuentra en valor de y. Asimismo, p2 contiene la dirección de memoria donde se encuentra en valor de x.

Ahora:

Código
  1. *p1 += *p2;

Al valor al que apunta el puntero p1 (osea, y ó el valor 2), se le suma el valor al que apunta el puntero p2 (osea, x ó el valor 3).
En otras palabras:

Código
  1. y += x; //y ahora vale 5

Luego:

Código
  1. *p2 = *p1-*p2;

Al valor al que apunta el puntero p2 (osea, x ó el valor 3), se le asigna el valor al que apunta el puntero p1 (osea, 5) menos el valor al que apunta el puntero p2 (osea, 3).
En otras palabras:

Código
  1. x = y - x; //x ahora vale 2

Por último:

Código
  1. *p1 -= *p2;

Al valor al que apunta el puntero p1 (osea, 5), se le resta el valor al que apunta el puntero p2 (osea, 2).
En otras palabras:

Código
  1. y = y - x; //y ahora vale 3

De esta forma, los valores se invierten usando punteros...  :P

Saludos!

PD: Cuando coloques código, asegúrate de usar etiquetas Geshi.


Título: Re: Apuntadores con c++ Ayuda!!!
Publicado por: bamdrums en 18 Enero 2015, 06:25 am
muchas gracias me ha quedado muy claro :), disculpa soy nuevo en el foro no se como ingresar etiquetas geshi . ¿En dónde puedo encontrar la forma de hacerlo?


Título: Re: Apuntadores con c++ Ayuda!!!
Publicado por: engel lex en 18 Enero 2015, 06:49 am
aqui
(http://i.imgur.com/JTFecMo.gif)

... seleccionar tu codigo, haces click ahí y escoges tu lenguaje... (o las pones y pegas tu codigo adentro, como más gustes)

usa el botón modificar y aplícalas en tu post inicial ;)


Título: Re: Apuntadores con c++ Ayuda!!!
Publicado por: bamdrums en 18 Enero 2015, 08:24 am
Muchas gracias lo he logrado en otro tema :) , perdona mi torpeza pero soy malo con esto de los foros jeje en dónde está el botón modificar :S  ?


Título: Re: Apuntadores con c++ Ayuda!!!
Publicado por: engel lex en 18 Enero 2015, 08:25 am
justo arriba a la derecha de cada post

es el boton (https://foro.elhacker.net/Themes/converted/images/spanish/modify.gif)