Programa C para intercambiar dos números

Dados dos números, escriba un programa en C para intercambiar los números dados.

Input : x = 10, y = 20;
Output : x = 20, y = 10

Input : x = 200, y = 100
Output : x = 100, y = 200

la idea es sencilla

  1. Asigne x a una variable temporal: temp = x
  2. Asigne y a x : x = y
  3. Asignar temperatura a y : y = temperatura

Entendamos con un ejemplo.

x = 100, y = 200 Después de la línea 1: temp = x temp = 100 Después de la línea 2: x = yx = 200 Después de la línea 3: y = temp y = 100

C

// C program to swap two variables
#include <stdio.h>
 
int main()
{
    int x, y;
    printf("Enter Value of x ");
    scanf("%d", &x);
    printf("\nEnter Value of y ");
    scanf("%d", &y);
 
    int temp = x;
    x = y;
    y = temp;
 
    printf("\nAfter Swapping: x = %d, y = %d", x, y);
    return 0;
}

Producción:

Enter Value of x 12

Enter Value of y 14

After Swapping: x = 14, y = 12 

¿Cómo escribir una función para intercambiar? Dado que queremos que las variables locales de main se modifiquen mediante la función de intercambio, debemos usar punteros en C

C

// C program to swap two variables using a
// user defined swap()
#include <stdio.h>
 
// This function swaps values pointed by xp and yp
void swap(int *xp, int *yp)
{
    int temp = *xp;
    *xp = *yp;
    *yp = temp;
}
 
int main()
{
    int x, y;
    printf("Enter Value of x ");
    scanf("%d", &x);
    printf("\nEnter Value of y ");
    scanf("%d", &y);
    swap(&x, &y);
    printf("\nAfter Swapping: x = %d, y = %d", x, y);
    return 0;
}

Producción:

Enter Value of x 12

Enter Value of y 14

After Swapping: x = 14, y = 12 

¿Cómo hacerlo en C++? En C++, también podemos usar referencias

CPP

// C++ program to swap two variables using a
// user defined swap()
#include <stdio.h>
 
// This function swaps values referred by
// x and y,
void swap(int &x, int &y)
{
    int temp = x;
    x = y;
    y = temp;
}
 
int main()
{
    int x, y;
    printf("Enter Value of x ");
    scanf("%d", &x);
    printf("\nEnter Value of y ");
    scanf("%d", &y);
    swap(x, y);
    printf("\nAfter Swapping: x = %d, y = %d", x, y);
    return 0;
}

Producción:

Enter Value of x 12

Enter Value of y 14

After Swapping: x = 14, y = 12 

¿Hay una función de biblioteca? También podemos usar la función de intercambio de bibliotecas de C++

CPP

// C++ program to swap two variables using a
// user defined swap()
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    int x, y;
    printf("Enter Value of x ");
    scanf("%d", &x);
    printf("\nEnter Value of y ");
    scanf("%d", &y);
    swap(x, y);
    printf("\nAfter Swapping: x = %d, y = %d", x, y);
    return 0;
}

Producción:

Enter Value of x 12

Enter Value of y 14

After Swapping: x = 14, y = 12 

Intercambiando dos números sin usar una variable temporal :

Enfoque: la idea simple detrás de este código es usar operadores aritméticos. Tomaremos la suma de los dos números y la almacenaremos en un número y almacenaremos la diferencia de ambos números en el otro número. Finalmente almacenaremos la diferencia de ambos números en el primer número. Dado que los valores se actualizarán después de las dos primeras operaciones, podremos intercambiar los números. 

Algoritmo:  

1) Tome la entrada de los dos números.                                                                                                                                               
2) Almacene la suma de ambos números en el primer número y almacene la diferencia de ambos números en el segundo número. 
3) Finalmente, almacene la diferencia de ambos números en el primer número e imprima ambos números.

Código:

C

// C program to swap two numbers without using a third
// variable
#include <stdio.h>
int main()
{
    int a, b;
    printf("Enter the two numbers : \n");
    scanf("%d %d", &a, &b);
    printf("Before swapping A is : %d and B is %d \n", a,
           b);
    a = a + b;
    b = a - b;
    a = a - b;
    printf("After swapping A is : %d and B is : %d \n", a,
           b);
    return 0;
}

C++

// C++ program to swap two numbers without using a third
// variable
#include <iostream>
using namespace std;
int main()
{
    int a, b;
    cout << "Enter the two numbers : \n";
    cin >> a >> b;
    cout << "Before swapping A is : " << a
         << " and B is :  " << b << "\n";
    a = a + b;
    b = a - b;
    a = a - b;
    cout << "After swapping A is : " << a
         << " and B is :  " << b << "\n";
    return 0;
}
Producción

Enter the two numbers : 
Before swapping A is : 0 and B is 32767 
After swapping A is : 32767 and B is : 0 

Para todos los programas anteriores: 

Complejidad de tiempo: O(1)

Espacio Auxiliar: O(1)

¿Cómo intercambiar sin usar una variable temporal?

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *