Advertisement
AntonioVillanueva

Tiddy

Mar 1st, 2018
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.43 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <string>
  4. #include <stdlib.h>     /* strtold */
  5. using namespace std;
  6.  
  7. #define TIPO unsigned long long
  8.  
  9. /*************************************************************/
  10. class tiddy{
  11.     public:
  12.     tiddy();
  13.     void lectura ();
  14.    
  15.     private:
  16.     int T ;//numero de lineas
  17.     void write(int counter,TIPO number);//cout
  18.     TIPO lastTatiana(TIPO number);
  19.     bool isTiddy(TIPO numero);  //anterior > actual ? Tiddy
  20. };
  21. /*************************************************************/
  22. tiddy::tiddy():T(-1) {};
  23. /*************************************************************/
  24. void tiddy::lectura(){
  25.     int counter(1);
  26.     TIPO ligne;            
  27.  
  28.     cin >>T;//Lee numero de lineas
  29.     //T=stoi (ligne);// 1a. linea numero de lineas
  30.  
  31.     while (!cin.eof() && counter<=T  ){//Read input file
  32.  
  33.         cin>>ligne;//lectura una linea
  34.         cout <<"linea "<<ligne<<endl;
  35.                
  36.         //if (!ligne.empty() ){  write (counter++,lastTatiana(stoi(ligne) ) ) ;}//Escribe linea
  37.         write (counter++,lastTatiana( ligne )) ;
  38.    
  39.       }
  40. }
  41. /*************************************************************/
  42. void tiddy::write(int counter,TIPO number){
  43.     cout << "Case #" << counter << ": " << number<< endl;
  44. }
  45. /*************************************************************/
  46. //Es muy lento por tecnica de fuerza bruta para numeros grandes
  47. //https://www.geeksforgeeks.org/find-closest-smaller-tidy-number/
  48. // if string violates tidy property, then
  49. // decrease the value stored at that index by 1
  50. // and replace all the value stored right to
  51. // that index by 9
  52. /*************************************************************/
  53. TIPO tiddy::lastTatiana(TIPO number){//lee numero int busca ultimo tiddy
  54.     while (!(isTiddy (number)) ){number--;}
  55.     return number;
  56. }
  57. /*************************************************************/
  58. bool tiddy::isTiddy(TIPO numero){//anterior > actual ? Tiddy   
  59.     TIPO  actual,anterior(-1);
  60.     do{
  61.         //actual = (numero <10 ? numero : fmod(numero,10));
  62.         actual = (numero <10 ? numero : remainder (numero,10));
  63.         //cout <<"Analisis actual = " <<numero<<endl;//debug
  64.         if (anterior<actual && ! (anterior<0)){ return false;}//No es tiddy            
  65.         anterior=actual;               
  66.         numero/=10;    
  67.     }while (numero>0); 
  68.    
  69.     return true;
  70. }
  71. /*************************************************************/
  72. /*************************************************************/
  73. int main ( int argc, char *argv[]){
  74.         tiddy test ;       
  75.         test.lectura();
  76.     return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement