All pastes #345778 Raw Edit

janks

public cpp v1 · immutable
·published 2007-02-08 20:55 UTC
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;}