lcmp.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "testlib.h"
  2. #include <string>
  3. #include <vector>
  4. #include <sstream>
  5. using namespace std;
  6. string ending(int x)
  7. {
  8. x %= 100;
  9. if (x / 10 == 1)
  10. return "th";
  11. if (x % 10 == 1)
  12. return "st";
  13. if (x % 10 == 2)
  14. return "nd";
  15. if (x % 10 == 3)
  16. return "rd";
  17. return "th";
  18. }
  19. bool compareWords(string a, string b)
  20. {
  21. vector<string> va, vb;
  22. stringstream sa;
  23. sa << a;
  24. string cur;
  25. while (sa >> cur)
  26. va.push_back(cur);
  27. stringstream sb;
  28. sb << b;
  29. while (sb >> cur)
  30. vb.push_back(cur);
  31. return (va == vb);
  32. }
  33. int main(int argc, char * argv[])
  34. {
  35. setName("compare files as sequence of tokens in lines");
  36. registerTestlibCmd(argc, argv);
  37. std::string strAnswer;
  38. int n = 0;
  39. while (!ans.eof())
  40. {
  41. std::string j = ans.readString();
  42. if (j == "" && ans.eof())
  43. break;
  44. std::string p = ouf.readString();
  45. strAnswer = p;
  46. n++;
  47. if (!compareWords(j, p))
  48. quitf(_wa, "%d%s lines differ - expected: '%s', found: '%s'", n, ending(n).c_str(), j.c_str(), p.c_str());
  49. }
  50. if (n == 1 && strAnswer.length() <= 128)
  51. quitf(_ok, "%s", strAnswer.c_str());
  52. quitf(_ok, "%d lines", n);
  53. }