Advertisement
AntonioVillanueva

divisible 11

Aug 14th, 2018
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.29 KB | None | 0 0
  1. #include <iostream>
  2. //compilacion g++ -std=c++11 -o reto reto.cpp
  3. //ejecucion  ./ejecutable <input.txt   , donde input es el fichero texto con datos entrada
  4. using namespace std;
  5.  
  6. //Resta UNIDADES , de DECENAS si hay "CARRY" resta 1 de CENTENAS
  7. void resta(char *a, char b){
  8.         *a-='0';//Convesion ASCII ->decimal , trabaja con un puntero
  9.         b-='0';//Converson ASCII->decimal
  10.         if ( b > *a) {
  11.                 *a+=10;//b es mayor , sumo 10 en a, tenemos "carry" en centenas !
  12.                 resta((a-1),'1');//Llamada reflexiva a esta funcion, afecta centenas
  13.                 }      
  14.         //Modifico el valor de las decenas directamente , por puntero  
  15.         *a= (((*a-'0')-(b-'0')))+'0';
  16. }
  17.  
  18. bool divisible (string numero){
  19.         cout <<numero<<endl;//Print entrada
  20.  
  21.         if ( (numero.length())> 2){//Mientras sea mayor de 2 digitos
  22.  
  23.                 for (size_t pos=(numero.length()-1);pos >1 ; pos--){
  24.                         //Restando el dígito 'unidades' del número truncado decenas,centenas
  25.                         resta(&numero[pos-1],numero[pos]);
  26.  
  27.                         numero.pop_back();//Borrando el dígito de las unidades
  28.                         cout <<numero<<endl;//Print
  29.                 }
  30.         }      
  31.         if (numero[0]==numero[1]){return true;}      //dos digitos es 11 ?        
  32.  
  33.         return false;
  34. }
  35.  
  36. int main(){
  37.         string entrada;
  38.         while(cin >> entrada) {//lee todas las lineas  < input.txt      
  39.  
  40.                 cout <<"El número "<< entrada << (divisible(entrada) ? " ":" no ")
  41.                 << "es divisible entre 11."<< endl;
  42.     };
  43. }
  44.  
  45.  
  46. /*
  47.  
  48. #Reto: Números divisibles por 11
  49. Escriba un programa que acepte como entrada una lista de enteros positivos y usando el algoritmo escrito abajo
  50.  verifique si el entero es o no divisible por 11
  51.  
  52. Algoritmo:
  53.  
  54. Mientras el número que se prueba tenga más de dos dígitos, forme un nuevo número:
  55.   * Borrando el dígito de las unidades.
  56.   * Restando el dígito borrado del número truncado.
  57. El número original es divisible por 11 si y solo si, el número restante final es divisible por 11.
  58. Los ceros a la izquierda no son considerados parte del número y no deber ser impresos.
  59.  
  60. Entrada:
  61. La entrada consiste de una serie de números enteros, esta lista termina con 0, cada entero positivo tiene una máximo de 50 dígitos. Se puede asumir que no hay 0 a la izquierda en los enteros positivos.
  62.  
  63. Salida:
  64. Por cada entero positivo en la entrada , la salida consiste de una serie de números formados cuando el último digito es borrado y restando al numero truncado, seguido por un mensaje que indica si el número original es o no divisible por 11. Las salidas para diferentes enteros positivos son separadas por líneas.
  65.  
  66. Ejemplo del archivo de entrada:
  67. 12345678901234567900
  68. 89624630004
  69. 0
  70.  
  71. Ejemplo del archivo de salida:
  72. 12345678901234567900
  73. 1234567890123456790
  74. 123456789012345679
  75. 12345678901234558
  76. 1234567890123447
  77. 123456789012337
  78. 12345678901226
  79. 1234567890116
  80. 123456789005
  81. 12345678895
  82. 1234567884
  83. 123466784
  84. 12345674
  85. 1234563
  86. 123453
  87. 12342
  88. 1232
  89. 121
  90. 11
  91. El número 12345678901234567900 es divisible entre 11.
  92.  
  93.  
  94. 89624562996
  95. 8962456293
  96. 896245626
  97. 89624556
  98. 8962449
  99. 896235
  100. 89618
  101. 8953
  102. 892
  103. 87
  104. El número 896245630004 no es divisible entre 11.
  105.  
  106. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement