2013-04-24 5 views
-5

это мой код, чтобы найти наиболее часто используемый символ в массиве. Отложите его, а также укажите ошибку. он работает большую часть времени, но в некоторых случаях вывод неправильный. Пожалуйста, помогите мне с этимнайти наиболее часто используемый символ в массиве?

#include <stdio.h> 
#define size 100 
int main() 
{ 
char a[size]={0}; 
int i,j, k, n; 
char c, e; 

printf("enter size of array\n"); 
scanf("%d", &n); 
a[n]=0; 

printf("enter the characters??\n"); 

for(i=0; i<n; i++) 
    { 
    scanf(" %c", & a[i]); 
    } 


for(j=0; j<n; j++) 
{ 
for(k=0; k<n; k++) 
    { 
    if(j==k) 
     { 
     continue; 
     } 

     else if(a[j]=a[i]) 
      { 
       e=a[j]; 
      } 
     else if(a[j]!=a[k]) 
      { 
      continue; 
      } 
    } 
} 
printf("the most frequently occuring character is %c", e); 
return 0; 
} 
+5

«Отладить его, а также определить ошибку». № – BNL

+0

atleast сказать, где я ошибся –

+0

Какая ошибка вы видите, и что вы сделали, чтобы попытаться ее отладить? –

ответ

2

Для удовольствия, используйте на свой страх и риск для домашней работы:


int count[256]; 
const char input[] = "hjkshrjkhsfh2389r2jhfjkjfljsdjklf"; 

int main() 
{ 
    int i; 
    for(i=0; input[i]; i++) 
    { 
     count[input[i]]++; 
    } 

    int best = 0; 
    char letter = 0; 

    for(i=0; i&lt256; i++) 
    { 
     if(count[i] > best) 
     { 
      best = count[i]; 
      letter = (char)i; 
     } 
    } 

    printf("letter: %c, best: %d\n", letter, best); 

    return 0; 
} 

Чтобы сделать это урок, вот вещи, которые сделаны «плохо» здесь, что реальный мир бы вам неприятность:

  • Волшебного число 256 представлять все байты размера
  • моего чека StrLen для ввода очень небезопасно.
  • не обрабатывает списки «Огромные» - допускается только до 2^31 событий.
  • O (strlen) + O (256) = O (n) время - возможно, будет возможно улучшить.
  • i повторно используется вместо области. Названия Var могут быть более наглядными.
  • Нет комментариев ...

Enjoy и другие не можете БАРБЕКЮ меня за раздавая уровень домашнего задания ответа, как это. Просто хотел посмотреть, как быстро я смогу собрать его вместе.

Смежные вопросы