Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Язык С : Найти наиболее часто встречаемое слово в 
:(
    Опции темы
Сишник
Дата 15.5.2010, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.5.2010

Репутация: нет
Всего: нет



Задание:Найти наиболее часто встречаемое слово в строке. Сделал программу , указатель ptd переходит на следующую лексему только 2 раза .
Код:
Код

#include <stdio.h>
#include <string.h>
#define X 250

int main () {
char *m1, *m2,*m3, *ptd,*ptd2,*hold,*hold2,*ptdhold ;
int i=0,max=0;

ptd=(char*) malloc(20*sizeof(char));
ptd2=(char*) malloc(20*sizeof(char));
ptdhold=(char*) malloc(20*sizeof(char));
hold=(char*) malloc(20*sizeof(char));
hold2=(char*) malloc(20*sizeof(char));
m1=(char*) malloc(X*sizeof(char));
m2=(char*) malloc(X*sizeof(char));
m3=(char*) malloc(X*sizeof(char));
puts("Введите строку");
gets(m1);
strcpy(m2,m1);
strcpy(m3,m2);
ptd=strtok(m1," ");
while(ptd!=NULL)
{
strcpy(ptdhold,ptd);
ptd=strtok(NULL," ");
ptd2=strtok(m2," ");
while(ptd2!=NULL)
{
if(strcmp(ptd2,ptdhold)==0)
{
i++;
strcpy(hold,ptd2);
}

if(i>=max)
{
max=i;
strcpy(hold2,hold);
}

ptd2=strtok(NULL , " " );

}
i=0;
strcpy(m2,m3);

}
puts("Наиболее часто встречаемое слово в строке было : ");
puts(hold2);
return 0;
}
Код




По началу делал без ptdhold, по сути оно ничего и не изменило ;
вот пример выполнения программы :
Введите строку
a b b
Наиболее часто встречаемое слово в строке было :
b

вот другой пример :
Введите строку
a b c c
Наиболее часто встречаемое слово в строке было :
b
Как видно оно посчитало кол-во совпадений с а , потом с b . Далее , как я понял, ptd стало NULL и цикл оборвался
Срочно! плз помогите.. оч нада 
PM MAIL   Вверх
Dov
Дата 15.5.2010, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Код
#define SZ  100
#define LEN 250

struct Word
{
    char * pWrd;
    int    count;
};

int find(Word arr[], int cnt, const char * wrd)
{
    int i;
    
    for(i = 0; i < cnt; i++)
        if(strcmp(arr[i].pWrd, wrd) == 0)
            return i;
        
    return -1;
}

int main()
{
    char  source[LEN], *p;
    Word  arWords[SZ];
    int   i, j, max = 0;

    puts ("Enter a string: ");
    fgets(source, LEN, stdin);

    for(i = 0, p = strtok(source, " "); i < SZ && p != NULL; p = strtok(NULL, " "))
    {
        arWords[i].count = 1;        

        if((j = find(arWords, i, p)) < 0)    
            arWords[i++].pWrd  = p;
        else if(++(arWords[j].count) > arWords[max].count)
            max = j;
    }

    puts("\nresult:");
    for(j = 0; j < i; j++)
        if(arWords[j].count == arWords[max].count)
            printf("%s - %d\n", arWords[j].pWrd, arWords[j].count);

    return 0;
}



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Сишник
Дата 16.5.2010, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.5.2010

Репутация: нет
Всего: нет



Спасибо Dov! Жаль только что не функции не структуры мы ещё не изучали( 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0420 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.