Module: Subrutinas: procedimientos y funciones - 1


Problem

11/11

Cambio de argumentos

Theory Click to read/hide

Tarea
Escriba un procedimiento que intercambie los valores de dos variables.

La peculiaridad de esta tarea es que necesitamos que los cambios realizados en el procedimiento sean conocidos por el programa que llama.

Intentemos escribir el procedimiento así: static void Swap (int a, int b) // con tal descripción de los parámetros del procedimiento, { // copiará los valores de los argumentos (x e y) intc; // las variables a y b son variables independientes no relacionadas con x e y c = un; a = b; b=c; } vacío estático principal () { entero x=1, y=2; Intercambiar (x, y); //los valores de las variables x e y (argumentos) se copian en los parámetros a y b, x = 1, y = 2 } Si ejecuta este programa, puede ver que los valores de las variables x e y no han cambiado. Para que los parámetros cambien los valores de los argumentos, debe utilizar datos que pasan por referencia. Para ello, debe escribir ref antes del nombre del tipo de datos en el encabezado de la subrutina. void Swap (ref int a, ref int b) // ahora las variables a y b obtienen las direcciones de las variables x e y en la memoria { intc; c = un; a = b; b=c; } vacío estático principal () {   entero x=1, y=2;   Intercambiar (ref x, ref y); Aplicación: si pasa un argumento por referencia, entonces solo el nombre de la variable (NO un número y NO una expresión aritmética) puede estar en este lugar al llamar al procedimiento.

No se puede llamar a un procedimiento como este: Intercambiar (x, 4); Intercambiar (5+x, y);

Problem

Escriba un procedimiento que intercambie los valores de dos variables. Encuentre y corrija errores en este procedimiento.
 
Ejemplo
# Entrada Salida
1 1
2
2
1
1
using System;      
2
class Program      
3
{       
4
5
    {      
6
        int c;      
7
        c = a; a = b; b = c;      
8
    }      
9


                                                   
10
    static void Main()      
11
    {      
12
        int x = Convert.ToInt32(Console.ReadLine());      
13
        int y = Convert.ToInt32(Console.ReadLine());      
14
15
        Console.WriteLine(x);      
16
        Console.WriteLine(y);      
17
    }      
18
}      
19


                                                   
20


                                                   

     

Program check result

To check the solution of the problem, you need to register or log in!