Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 20.06.2010, 20:14   #1
trebor
 
Регистрация: 20.06.2010
Сообщений: 7
По умолчанию допилить небольшую программу...

...по выводу гистограммы частоты встречаемости символов.Пример: ввод:ваывоа, вывод:
- о
- ы
-- а
--в
сама программа:
Код:
#include <stdio.h>
main(){
int j,c,i,m;
int p[26],f[26];
j=i=0;m=1;
for (i=0;i<26;++i){
f[i]=0;
p[i]=0;};
while((c=getchar())!=EOF){
  for (i=0;i<26;++i){
  if (p[i]==c) ++f[i]; 
   else
     {p[m]=c;f[m]=1;++m; continue;
   }; 
  };
};
  for (i=0;i<(m+1);++i){
    for(j;j<f[i];++j){
      printf("-");};
    printf("%d\n", p[i]);
  };
}
Заранее спасибо.

Последний раз редактировалось trebor; 20.06.2010 в 20:38.
trebor вне форума
Старый 20.06.2010, 21:20   #2
BleStaR
Форумчанин
 
Регистрация: 25.09.2009
Сообщений: 234
По умолчанию

Код:
#include <stdio.h>
#include <string.h>
const int N = 50;
main(){
char stroka[] = "sdfsgees";
char simvol[N];
int count[N];

for(int i=0; i<N; i++) count[i] = 0;

int k = 0;

for(int i=0; i<strlen(stroka); i++){
        int c = 0;
        for(int j=0; j<N; j++)
                if(simvol[j]==stroka[i]){
                                         count[j]++;
                                         break;                    
                }else{
                      c++;
                }
        if(c==N){
                 simvol[k]=stroka[i];
                 count[k] = 1;
                 k++;
        }
}

for(int i=0; i<N; i++){
        if(count[i]==0)break;
        printf("%c - %d\n",simvol[i], count[i]);
}
int end;
scanf("%d", &end);
}
в этом коде обрати внимание на вложенный цикл, т.к. в твоем варианте уже на втором символе произойдет выход за пределы массива. почему думаю разберешься.
BleStaR вне форума
Старый 21.06.2010, 13:39   #3
trebor
 
Регистрация: 20.06.2010
Сообщений: 7
По умолчанию

Ясно, спасибо.
trebor вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi7 создать небольшую программу тест -ushёl- Помощь студентам 1 28.03.2010 22:28
прошу небольшую консультацию, составной ключ ? LoveHeart Microsoft Office Access 0 08.05.2009 22:08
Помогите решить небольшую задачку Mihael-Vlz Помощь студентам 1 18.12.2008 19:44
Нужно написать небольшую программку shuraa Фриланс 3 18.02.2008 00:42