Advertisement
alch1337

Śmieszne liczby v2.0

May 11th, 2013
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.91 KB | None | 0 0
  1. #include<iostream>
  2. #include<conio.h>
  3. #include<string>
  4. #include<vector>
  5. #include<fstream>
  6.  
  7. int getDigit(int& nIndeks, int& nLiczba)
  8. {
  9.     return std::stoi(std::to_string(nLiczba).substr(nIndeks,1));
  10. }
  11.  
  12. int getNumOfDigits(int& nLiczba)
  13. {
  14.     return std::to_string(nLiczba).length();
  15. }
  16.  
  17. int removeDigit(int& nIndeks, int& nLiczba)
  18. {
  19.     std::string sTemp = std::to_string(nLiczba);
  20.     sTemp.erase(nIndeks, 1);
  21.     return std::stoi(sTemp);
  22. }
  23.  
  24. bool checkNumber(std::vector<int>& vnWyniki, int& nLiczba, int (*pfnGetDigit)(int&, int&), int (*pfnGetNumOfDigits)(int&), int (*pfnRemoveDigit)(int&, int&))
  25. {
  26.     int nMianownik;
  27.     double nUlamek, nTemp;
  28.     vnWyniki.clear();
  29.     for (unsigned i = 2; i <=100; i++)
  30.     {
  31.         nMianownik = nLiczba*i;
  32.         for (int j = 0; j<pfnGetNumOfDigits(nLiczba); j++)
  33.         {
  34.             for (int k = 0; k<pfnGetNumOfDigits(nMianownik); k++)
  35.             {
  36.                 if (pfnGetDigit(j, nLiczba) == pfnGetDigit(k, nMianownik))
  37.                 {
  38.                     if (pfnRemoveDigit(k, nMianownik)!=0)
  39.                     {
  40.                         nUlamek = (double)nLiczba/nMianownik;
  41.                         nTemp = (double)pfnRemoveDigit(j, nLiczba)/pfnRemoveDigit(k, nMianownik);  
  42.                         if (nUlamek == nTemp)
  43.                         {
  44.                             vnWyniki.push_back(i);
  45.                         }
  46.                     }
  47.                 }
  48.             }
  49.         }
  50.     }
  51.     if (vnWyniki.size() > 0) return true;
  52.     else return false;
  53. }
  54.  
  55. int main()
  56. {
  57.     std::fstream plik("Liczby.txt", std::ios::out);
  58.     std::vector<int> vnWyniki;
  59.     if (plik.is_open())
  60.     {
  61.         for (int i = 10; i <= 100; i++)
  62.         {
  63.             if (checkNumber(vnWyniki, i, getDigit, getNumOfDigits, removeDigit))
  64.             {
  65.                 for (unsigned j = 0; j<vnWyniki.size(); j++)
  66.                 {
  67.                     if (i%10 != 0 && (vnWyniki[j]*i)%10 != 0)
  68.                     {
  69.                         std::cout<<i<< "/" << i*vnWyniki[j]<<" - " << vnWyniki[j]*i<<"/"<<i<<std::endl;
  70.                         plik << i << "/" << i*vnWyniki[j]<<" - " << vnWyniki[j]*i<<"/"<<i<<std::endl;
  71.                     }
  72.                 }
  73.             }
  74.         }
  75.     }
  76.     else std::cout<<"Nie mozna otworzyc pliku (Liczby.txt)"<<std::endl;
  77.     plik.close();
  78.     _getch();
  79.     return 0;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement