fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. vector<string> code =
  4. {"AEIOUYWH", "BPFV", "CSKGJQXZ",
  5. "DT", "L", "MN", "R"};
  6.  
  7. int main()
  8. {
  9. map<char, int> find;
  10. for (int i = 0; i < 7; i++)
  11. for (int k = 0; k < code[i].size(); k++)
  12. find[code[i][k]] = i;
  13. //char find[] = {-1,'1','2','3',-1,'1','2',-1,-1,'2','2','4','5','5',
  14. // -1,'1','2','6','2','3',-1,'1',-1,'2',-1,'2'};
  15.  
  16. cout << setw(9) << "" << setw(25) << left << "NAME" << "SOUNDEX CODE" << endl;
  17. string name;
  18.  
  19. while (cin >> name)
  20. {
  21. cout << setw(9) << "" << setw(25) << left << name;
  22. string output = "";
  23. output += name[0];
  24.  
  25. int prev = find[name[0]];
  26. int count = 1;
  27.  
  28. for (int i = 1; i < name.size() and count < 4; i++)
  29. {
  30. if (find[name[i]] != 0 && find[name[i]] != prev)
  31. {
  32. output += to_string(find[name[i]]);
  33. count++;
  34. }
  35. prev = find[name[i]];
  36. }
  37. cout << setw(4) << setfill('0') << output << endl << setfill(' ');
  38. }
  39.  
  40. cout << setw(19) << "" << "END OF OUTPUT" << endl;
  41. }
Success #stdin #stdout 0s 15240KB
stdin
LEE
KUHNE
EBELL
EBELSON
SCHAEFER
SCHAAK
stdout
         NAME                     SOUNDEX CODE
         LEE                      L000
         KUHNE                    K500
         EBELL                    E140
         EBELSON                  E142
         SCHAEFER                 S160
         SCHAAK                   S200
                   END OF OUTPUT