Menú principal

jueves, 3 de septiembre de 2020

Rotación de número - C++

Se pide realizar un programa que solicite un número al usuario y los permute de tal forma que se obtengan todas las combinaciones posibles en las que las cifras roten. Se muestra un ejemplo.

Entrada:
Intro numero a rotar: 526

Salida:
El numero tiene 3 cifras
Las permutaciones obtenidas son:
652    265

A continuación se muestra el programa:

 1 #include <iostream>
 2  #include <cmath>
 3  using namespace std;
 4  
 5  int nr_cifras (int n);//Devuelve el numero de cifras
 6  void extrae (int n_original, int& ultima_cifra,int& n_restante);
 7  void pedir_numero(int&);
 8  
 9  int main ()
10  {
11      int n = 0, ncifras, n_original =0, ultima_cifra = 0, n_restante = 0;
12  
13      pedir_numero(n); //Solicitar numero
14      ncifras = nr_cifras(n);
15      n_original = n;
16  
17      cout<<"El numero tiene "<<ncifras<<" cifras\n";
18      cout<<"Las permutaciones obtenidas son:"<<endl;
19  
20      for(int i = 1; i < ncifras; i++)
21      {
22          extrae (n_original,ultima_cifra,n_restante);
23          cout<<ultima_cifra<<n_restante<<"\t";
24          n_original = ultima_cifra * pow(10,(ncifras-1)) + n_restante;
25      }
26      return 0;
27  }
28  
29  void pedir_numero(int& n)
30  {
31      n = 2;
32      while(n<100)
33      {
34          cout<<"Intro numero a rotar: ";
35          cin>>n;
36          if(n <100)
37              cout<<"El numero no tiene al menos 3 cifras\n";
38      }
39  }
40  
41  int nr_cifras(int n)
42  {
43      int contador = 1;
44      while(n/10 > 0)
45      {
46          n/=10; //n=n/10 Division entera
47          contador++;
48      }
49      return contador;
50  }
51  
52  void extrae (int n_original, int& ultima_cifra,int& n_restante)
53  {
54      ultima_cifra = n_original%10;
55      n_restante = n_original/10;
56  }

No hay comentarios:

Publicar un comentario