[ create a new paste ] login | about

Link: http://codepad.org/7V0O1QO2    [ raw code | output | fork ]

mohit_at_codepad - C++, pasted on Jan 30:
char sample1[] = "MohitJain";
char sample2[] = "India Asia World Earth";
char sample3[] = "ttt";
char sample4[] = "iii";
char sample5[] = "dead";
char sample6[] = "";
char sample7[] = "tt";
char sample8[] = "ii";
char sample9[] = "ti";

bool isVowel(char ch)
{
  switch(ch) {
    case 'a': case 'e' : case 'i' : case 'o' : case 'u':
    case 'A': case 'E' : case 'I' : case 'O' : case 'U':
      return true;
    default:
      return false;
  }
  throw "Unexpected";
}

void reverseVowels(char *str)
{
  if(0 == str || '\0'== str[0]) return;
  char *s = str;
  char *e = str + strlen(str) - 1;

  for(; /* ever */ ;) {
    while(s < e && !isVowel(*s)) ++s;
    while(s < e && !isVowel(*e)) --e;
    if(s >= e) break;
    const register char t = *s;
    *s++ = *e;
    *e-- = t;
  }
}

int main()
{
#define TEST(X) do { char *s = sample##X; cout << X << "# Before: "<< s << ", After: "; reverseVowels(s); cout << s << endl; } while(false)
  TEST(1);
  TEST(2);
  TEST(3);
  TEST(4);
  TEST(5);
  TEST(6);
  TEST(7);
  TEST(8);
  TEST(9);
}


Output:
1
2
3
4
5
6
7
8
9
1# Before: MohitJain, After: MihatJion
2# Before: India Asia World Earth, After: andEo asiA Warld iIrth
3# Before: ttt, After: ttt
4# Before: iii, After: iii
5# Before: dead, After: daed
6# Before: , After: 
7# Before: tt, After: tt
8# Before: ii, After: ii
9# Before: ti, After: ti


Create a new paste based on this one


Comments: