rendered paste body#include <iostream>#include <string>#include <iterator>#include <fstream>#include <sstream>#include <vector>#include <stdlib.h>std::vector<const char *> suffix(100, "th");void initialize_suffix_table(void){ for (int i = 1; i < 100; i += 10) suffix[i] = "st"; for (int i = 2; i < 100; i += 10) suffix[i] = "nd"; for (int i = 3; i < 100; i += 10) suffix[i] = "rd"; for (int i = 11; i <= 19; ++i) suffix[i] = "th";}int main(int argc, char** argv){ if (argc != 3 && argc != 4) { std::cerr << "Usage: " << (argv[0] ? argv[0] : "compare") << " filename filename [# of differences to find]" << std::endl; return EXIT_FAILURE; } std::ifstream file1(argv[1]), file2(argv[2]); std::size_t lines_seen = 0, differences_to_find = 1, differences_seen = 0; std::string line1, line2; if (argc == 4) std::stringstream(argv[3]) >> differences_to_find; if (differences_to_find == 0) { std::cerr << "Zero differences are easy to find!" << std::endl; return EXIT_SUCCESS; } std::cout << "Finding " << differences_to_find << " differences" << std::endl; initialize_suffix_table(); while (std::getline(file1, line1) && std::getline(file2, line2) && differences_to_find != 0) { ++lines_seen; if (line1 != line2) { --differences_to_find; ++differences_seen; std::cout << differences_seen << suffix[differences_seen % 100] << " difference seen on line " << lines_seen << std::endl; std::cout << "the lines were: " << line1 << std::endl; std::cout << " and: " << line2 << std::endl << std::endl; } } if (differences_to_find == 0) std::cout << "No more differences to find!" << std::endl; else std::cout << "Found the required number of differences." << std::endl; return EXIT_SUCCESS;}