Programas complicados de C/C++ – Part 1

Es posible que nos encontremos con varios programas complicados en nuestra vida cotidiana. Tal vez en entrevistas técnicas, pruebas de codificación o clases de C/C++. 

Aquí hay una lista de tales programas: – 

  • Imprimir texto entre comillas dobles (” “). 
    Esto puede parecer fácil, pero los principiantes pueden confundirse al imprimir texto entre comillas dobles.

C++

// CPP program to print double quotes
#include<iostream>
 
int main()
{
   std::cout << "\"geeksforgeeks\"";
   return 0;
}
Producción

"geeksforgeeks"

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

  • Para comprobar si dos números son iguales sin usar operadores aritméticos u operadores de comparación. 
    La solución más simple para esto es usar el operador Bitwise XOR (^). Sabemos que para dos números iguales el operador XOR devuelve 0. Usaremos el operador XOR para resolver este problema.

C++

// C++ program to check if two numbers are equal
// without using arithmetic operators or
// comparison operators
#include <iostream>
using namespace std;
 
int main()
{
   int x = 10;
   int y = 10;
    
   if (!(x ^ y))
      cout << " x is equal to y ";
   else
      cout << " x is not equal to y ";
       
   return 0;
}
 
// This code is contributed by shivani

C

// C program to check if two numbers are equal
// without using arithmetic operators or
// comparison operators
#include<stdio.h>
 
int main()
{
   int x = 10;
   int y = 10;
   if ( !(x ^ y) )
      printf(" x is equal to y ");
   else
      printf(" x is not equal to y ");
   return 0;
}
Producción

 x is equal to y 

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

  • Imprime todos los números naturales hasta N sin usar punto y coma. 
    Usamos la idea de llamar recursivamente a la función principal.

C++

// C++ program to print all natural numbers upto
// N without using semi-colon
#include<iostream>
 
using namespace std;
int N = 10;
 
int main()
{
  static int x = 1;
  if (cout << x << " " && x++ < N && main())
  { }
  return 0;
}
Producción

1 2 3 4 5 6 7 8 9 10 

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

  • Para intercambiar los valores de dos variables sin usar ninguna variable adicional.

C++

// C++ program to check if two numbers are equal
#include<bits/stdc++.h>
using namespace std;
 
int main()
{
   int x = 10;
   int y = 70;
 
   x = x + y;
   y = x - y;
   x = x - y;
 
   cout << "X : " << x << "\n";
   cout << "Y : " << y << "\n";
    
   return 0;
}
Producción

X : 70
Y : 10

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

  • Programa para encontrar el Máximo y mínimo de dos números sin usar ningún ciclo o condición. 
    El truco más simple es-

C++

// C++ program to find maximum and minimum of
// two numbers without using loop and any
// condition.
#include<bits/stdc++.h>
 
int main ()
{
   int a = 15, b = 20;
   printf("max = %d\n", ((a + b) + abs(a - b)) / 2);
   printf("min = %d", ((a + b) - abs(a - b)) / 2);
   return 0;
}
Producción

max = 20
min = 15

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

  • Imprima el valor máximo de un int sin signo usando el operador de complemento a uno (~) en C. 
    Aquí hay un truco para encontrar el valor máximo de un int sin signo usando el operador de complemento a uno:

C++

// C++ program to print maximum value of
// unsigned int.
 
#include <iostream>
 
int main()
{
   unsigned int max;
   max = 0;
   max = ~max;
   
   std::cout << "Max value : " << max;
   
   return 0;
}   
 
// This code is contributed by sarajadhav12052009

C

// C program to print maximum value of
// unsigned int.
#include<stdio.h>
 
int main()
{
   unsigned int max;
   max = 0;
   max = ~max;
   printf("Max value : %u ",  max);
  return 0;
}   
Producción

Max value : 4294967295

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

  • Para encontrar la suma de dos números enteros sin usar el operador ‘+’. 
    Este es un truco matemático muy fácil. 
    Sabemos que a + b = – (-ab). Así que esto funcionará como un truco para nosotros.

C++

// CPP program to print sum of two integers
// without +
#include<iostream>
 
using namespace std;
int main()
{
  int a = 5;
  int b = 5;
  int sum = -( -a-b );
  cout << sum;
  return 0;
}
Producción

10

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

  • Programa para verificar la condición dentro del bloque if.

C++

// CPP program to verifies the condition inside if block
// It just verifies the condition inside if block,
// i.e., cout << "geeks" which returns a non-zero value,
// !(non-zero value) is false, hence it executes else
// Hence technically it only executes else block
#include<iostream>
 
using namespace std;
int main()
{
    if (!(cout << "geeks"))
    cout <<" geeks ";
    else
    cout << "forgeeks ";
     
    return 0;
}
Producción

geeksforgeeks 

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

  • Programa para dividir un número entero por 4 sin usar el operador ‘/’. 
    Una de las formas más eficientes de dividir un número entero por 4 es usar el operador de desplazamiento a la derecha («>>»).

C++

// CPP program to divide a number by 4
// without using '/'
#include<iostream>
 
using namespace std;
int main()
{
   int n = 4;
   n = n >> 2;
   cout << n;
   return 0;
} 
Producción

1

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

  • Programa para comprobar endianness de la computadora.

C++

// C++ program to find if machine is little
// endian or big endian.
 
#include <iostream>
 
int main()
{
   unsigned int n = 1;
   char *c = (char*)&n;
   
   if (*c)   
       std::cout << "LITTLE ENDIAN";
   else
       std::cout << "BIG ENDIAN";
   
   return 0;
}
 
// This code is contributed by sarajadhav12052009

C

// C program to find if machine is little
// endian or big endian.
#include <stdio.h>
 
int main()
{
   unsigned int n = 1;
   char *c = (char*)&n;
   if (*c)   
       printf("LITTLE ENDIAN");
   else
       printf("BIG ENDIAN");
   return 0;
}
Producción

LITTLE ENDIAN

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

Este artículo es una contribución de Smitha Dinesh Semwal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a contribuir@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

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 *