lcmp.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. quitif(!compareWords(j, p), _wa, "%d%s lines differ - expected: '%s', found: '%s'",
  48. n, ending(n).c_str(), __testlib_part(j).c_str(), __testlib_part(p).c_str());
  49. }
  50. quitif(n == 1 && strAnswer.length() <= 128, _ok, "%s", strAnswer.c_str());
  51. quitf(_ok, "%d lines", n);
  52. }