#include <stdio.h>
void listAlpha( char ch)
{
}
char findCommonest(const char* arr){
char commonest='@'; //Arbitrary Bad value!
int high_count=0;
for(int ch=0;ch<10;++ch){
char counting=arr[ch];
int count=0;
for(int c=0;c<10;++c){
if(arr[c]==counting){
++count;
}
}
if(count>high_count){
high_count=count;
commonest=counting;
}
}
return commonest;
}
int readAlpha(){
char arr[10];
int count = 1, iterator = 0;
for(int iterator=0; iterator<10; iterator++){
//printf("\nAlphabet %d:", count);
scanf(" %c", &arr
[iterator
]); printf("\nAlphabet %d: %c", count
,arr
[iterator
]); count++;
}
printf("\n-----------------------------------------\n"); printf("List of alphabets: "); for (int x=0; x<10; x++)
{
/* I’m passing each element one by one using subscript*/
listAlpha(arr[x]);
}
//printf("%c",arr);
printf("\nAlphabet with highest hit is %c\n",findCommonest
(arr
)); return 0;
}
int testFindCommonest(const char* arr,char expect){
const char result=findCommonest(arr);
if(result!=expect){
printf("* Failed: Expected %c, Result %c\n",expect
,result
); return 1;
}
return 0;
}
int unitTest(){
int errors=0;
const char test1[10]={'R','A','N','D','O','M','E','F','G','H'};
errors+=testFindCommonest(test1,'R');
const char test2[10]={'A','A','A','A','A','A','A','A','A','A'};
errors+=testFindCommonest(test2,'A');
const char test3[10]={'A','B','B','C','C','C','E','Z','D','X'};
errors+=testFindCommonest(test3,'C');
const char test4[10]={'A','B','B','C','C','C','E','B','D','X'};
errors+=testFindCommonest(test4,'B');
if(errors!=0){
}else{
}
return errors;
}
int main(){
unitTest();
//readAlpha();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIGxpc3RBbHBoYSggY2hhciBjaCkKewogICBwcmludGYoIiAlYyIsIGNoKTsKICAgCn0KCmNoYXIgZmluZENvbW1vbmVzdChjb25zdCBjaGFyKiBhcnIpewogICAgY2hhciBjb21tb25lc3Q9J0AnOyAvL0FyYml0cmFyeSBCYWQgdmFsdWUhCiAgICBpbnQgaGlnaF9jb3VudD0wOwogICAgZm9yKGludCBjaD0wO2NoPDEwOysrY2gpewogICAgCWNoYXIgY291bnRpbmc9YXJyW2NoXTsKICAgIAlpbnQgY291bnQ9MDsKICAgIAlmb3IoaW50IGM9MDtjPDEwOysrYyl7CiAgICAJCWlmKGFycltjXT09Y291bnRpbmcpewogICAgCQkJKytjb3VudDsKICAgIAkJfQogICAgCX0KICAgIAlpZihjb3VudD5oaWdoX2NvdW50KXsKICAgIAkJaGlnaF9jb3VudD1jb3VudDsKICAgIAkJY29tbW9uZXN0PWNvdW50aW5nOwogICAgCX0KICAgIH0gICAgCiAgICByZXR1cm4gY29tbW9uZXN0Owp9CgoKaW50IHJlYWRBbHBoYSgpewogICAgY2hhciBhcnJbMTBdOwogICAgaW50IGNvdW50ID0gMSwgaXRlcmF0b3IgPSAwOwogICAgZm9yKGludCBpdGVyYXRvcj0wOyBpdGVyYXRvcjwxMDsgaXRlcmF0b3IrKyl7CiAgICAgICAgLy9wcmludGYoIlxuQWxwaGFiZXQgJWQ6IiwgY291bnQpOwogICAgICAgIHNjYW5mKCIgJWMiLCAmYXJyW2l0ZXJhdG9yXSk7CiAgICAgICAgcHJpbnRmKCJcbkFscGhhYmV0ICVkOiAlYyIsIGNvdW50LGFycltpdGVyYXRvcl0pOwogICAgICAgIGNvdW50Kys7CiAgICB9CiAgICBwcmludGYoIlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogICAgcHJpbnRmKCJMaXN0IG9mIGFscGhhYmV0czogIik7CiAgIGZvciAoaW50IHg9MDsgeDwxMDsgeCsrKQogICB7CiAgICAgICAKICAgICAgIC8qIEnigJltIHBhc3NpbmcgZWFjaCBlbGVtZW50IG9uZSBieSBvbmUgdXNpbmcgc3Vic2NyaXB0Ki8KICAgICAgIGxpc3RBbHBoYShhcnJbeF0pOwogICB9CiAgIC8vcHJpbnRmKCIlYyIsYXJyKTsKICAgcHJpbnRmKCJcbkFscGhhYmV0IHdpdGggaGlnaGVzdCBoaXQgaXMgJWNcbiIsZmluZENvbW1vbmVzdChhcnIpKTsKICAgcmV0dXJuIDA7Cn0KCmludCB0ZXN0RmluZENvbW1vbmVzdChjb25zdCBjaGFyKiBhcnIsY2hhciBleHBlY3QpewoJY29uc3QgY2hhciByZXN1bHQ9ZmluZENvbW1vbmVzdChhcnIpOwoJaWYocmVzdWx0IT1leHBlY3QpewoJCXByaW50ZigiKiBGYWlsZWQ6IEV4cGVjdGVkICVjLCBSZXN1bHQgJWNcbiIsZXhwZWN0LHJlc3VsdCk7CgkJcmV0dXJuIDE7Cgl9CglyZXR1cm4gMDsKfQoKaW50IHVuaXRUZXN0KCl7CgkgICAgaW50IGVycm9ycz0wOwogICAgY29uc3QgY2hhciB0ZXN0MVsxMF09eydSJywnQScsJ04nLCdEJywnTycsJ00nLCdFJywnRicsJ0cnLCdIJ307CiAgICBlcnJvcnMrPXRlc3RGaW5kQ29tbW9uZXN0KHRlc3QxLCdSJyk7CgogICAgY29uc3QgY2hhciB0ZXN0MlsxMF09eydBJywnQScsJ0EnLCdBJywnQScsJ0EnLCdBJywnQScsJ0EnLCdBJ307CiAgICBlcnJvcnMrPXRlc3RGaW5kQ29tbW9uZXN0KHRlc3QyLCdBJyk7CiAgICBjb25zdCBjaGFyIHRlc3QzWzEwXT17J0EnLCdCJywnQicsJ0MnLCdDJywnQycsJ0UnLCdaJywnRCcsJ1gnfTsKICAgIGVycm9ycys9dGVzdEZpbmRDb21tb25lc3QodGVzdDMsJ0MnKTsKICAgIGNvbnN0IGNoYXIgdGVzdDRbMTBdPXsnQScsJ0InLCdCJywnQycsJ0MnLCdDJywnRScsJ0InLCdEJywnWCd9OwogICAgZXJyb3JzKz10ZXN0RmluZENvbW1vbmVzdCh0ZXN0NCwnQicpOwogICAgCiAgICBpZihlcnJvcnMhPTApewogICAgCXByaW50ZigiKiogRkFJTEVEICoqXG4iKTsKICAgIH1lbHNlewogICAgCXByaW50ZigiKiBTVUNDRVNTICpcbiIpOwogICAgfQogICAgcmV0dXJuIGVycm9yczsKfQoKaW50IG1haW4oKXsKCXVuaXRUZXN0KCk7CiAgICAvL3JlYWRBbHBoYSgpOwogICAgcmV0dXJuIDA7Cn0=