C sharp - Cuando intento intercambiar los valores de las variables obtengo ceros

 
Vista:
Imágen de perfil de Luis
Val: 50
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Cuando intento intercambiar los valores de las variables obtengo ceros

Publicado por Luis (15 intervenciones) el 13/03/2021 13:38:10
Adjunto el código que estoy utilizando.
En el interior veréis al principio lo que se trata de conseguir.
El caso es que no me funciona, cuando intento intercambiar los valores de las variables obtengo ceros a pesar de haberlas declarado como static.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*
 * (5.7.1) Crea una función "Intercambiar", que intercambie el valor
 * de los dos números enteros que se le indiquen como parámetro.
 * Crea también un programa que la pruebe.
 * Nota: Utiliza 'out' para los dos parámetros
 * Nacho Cabanes
 */
 
using System;
 
class Ejercicio_5_7_1
{
    static int num1, num2;
 
    static void Main(string[] args)
    {
       Console.Write("Introduce el primer número: ");
        int num1 = Convert.ToInt32(Console.ReadLine());
        Console.Write("Introduce el segundo número: ");
        int num2 = Convert.ToInt32(Console.ReadLine());
        Console.Write("\nnum1 = {0}, num2 = {1}", num1, num2);
        Intercambiar(out num1, out num2);
        Console.Write("\nnum1 = {0}, num2 = {1}", num1, num2);
        Console.WriteLine();
    }
 
    static void Intercambiar(out int n1, out int n2)
    {
        n1 = num2;
        n2 = num1;
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 326
Plata
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Cuando intento intercambiar los valores de las variables obtengo ceros

Publicado por Miguel (143 intervenciones) el 14/03/2021 01:14:39
Creo que debes revisar como se declara una variable static o a que te suena la palabra static?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Luis
Val: 50
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Cuando intento intercambiar los valores de las variables obtengo ceros

Publicado por Luis (15 intervenciones) el 14/03/2021 12:25:59
Revisando los apuntes encontré la solución

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*
 * (5.7.1) Crea una función "Intercambiar", que intercambie el valor
 * de los dos números enteros que se le indiquen como parámetro.
 * Crea también un programa que la pruebe.
 * Nota: Utiliza 'out' para los dos parámetros
 */
 
using System;
 
class Ejercicio_5_7_1
{
    static void Main(string[] args)
    {
        Console.Write("Introduce el primer número: ");
        int num1 = Convert.ToInt32(Console.ReadLine());
 
        Console.Write("Introduce el segundo número: ");
        int num2 = Convert.ToInt32(Console.ReadLine());
 
        // Muestra los dos números introducidos
        Console.Write("\nValores antes de intercambiar: num1 = {0}, num2 = {1}", num1, num2);
 
        // Llama a la función Intercambiar()
        Intercambiar(num1, num2, out num1, out num2);
 
        // Muestra los valores intercambiados
        Console.Write("\nValores tras el intercambio: num1 = {0}, num2 = {1}", num1, num2);
        Console.WriteLine();
    }
 
    static void Intercambiar(int numero1, int numero2, out int n1, out int n2)
    {
        n1 = numero2;
        n2 = numero1;
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 39
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Cuando intento intercambiar los valores de las variables obtengo ceros

Publicado por Marcelo (23 intervenciones) el 28/03/2021 14:58:13
Un par de comentarios para sumar, en tu primer ejemplo no está funcionando el código porque estás volviendo a declarar las variables num1 y num2, no estás utilizando las estáticas debido a que las volvés a definir int num1=... Y int num2=...
Simplemente remove los int para que quede num1=... Y num2=...

El consejo que te dejo es tener presente que tú función para intercambiar recibe 4 parámetros que podría ser un poco mucho para su finalidad, quizás te pueda ser un poco más sencillo si te queda algo como

1
2
3
4
5
public static void Swap(ref int num1, ref int num2){
int aux = num1;
num1=num2;
num2=aux;
}

En C# ref se utiliza para forzar al framework a pasar el nativo u objeto en si y no pasar su valor o referencia como copia.

Te dejo un fuerte abrazo y a las ordenes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Luis
Val: 50
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Cuando intento intercambiar los valores de las variables obtengo ceros

Publicado por Luis (15 intervenciones) el 28/03/2021 19:38:15
Gracias Marcelo,

Lo que pasa es que hay que seguir las indicaciones del problema, que exige utilizar una función con dos parámetros de entrada y otros dos parámetros 'out' de salida.
Supongo que por cuestiones pedagógicas.

Por otro lado, empecé a aprender C# tras una convalecencia, a partir de febrero, y estoy bastante satisfecho con mi avance :)
Gractias también al apoyo de foros como este...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 39
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Cuando intento intercambiar los valores de las variables obtengo ceros

Publicado por Marcelo (23 intervenciones) el 28/03/2021 22:49:26
Excelente, a seguir adelante entonces y que no decaiga. Seguiremos en contacto seguramente :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar