Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

(с)Нахождение количества слов в строке

17K
20 октября 2007 года
JKJ
32 / / 20.10.2007
Найти количество букв и слов в введенной строке.
3
20 октября 2007 года
Green
4.8K / / 20.01.2000
А может, с Вас деньги брать?
Цитата:

[size=+1]
Пришли SMS на номер 0000 и получи решение задачи на свой мобильный!
[/size]
[size=-3]
*cтоимоть SMS 5 у.е. без НДС
[/size]


:D

31K
21 октября 2007 года
FractalizeR
16 / / 19.10.2007
Цитата: JKJ
Найти количество букв и слов в введенной строке.



[COLOR="Red"] Свои замечания о личности автора держи при себе .Удалил.[/COLOR]модератор.

Для количества букв - удалите из исходной строки все не-буквы (сформировав новую строку по for, скажем) и возьмите длину.
Для количества слов проще нормализовать пробелы и взять их количество.

17K
23 октября 2007 года
JKJ
32 / / 20.10.2007
С количеством букв сделал.А вот с количеством строк проблема...Для нахождения делаю примерно следующие:
int j=1,i;
char ms[80],k=' ';
printf("vvedite stroky");
gets(ms)
только вот проблемка с условием для повторения оператора if, тут как я понимаю надо через wail делать,но вот какое "условаие" для него задать?
if(ms=k && ms[i++]!=k) j++
printf("kolichtstdo clov %d",j)
13K
23 октября 2007 года
specter
113 / / 28.09.2007
Цитата: JKJ
С количеством букв сделал.А вот с количеством строк проблема...Для нахождения делаю примерно следующие:
int j=1,i;
char ms[80],k=' ';
printf("vvedite stroky");
gets(ms)
только вот проблемка с условием для повторения оператора if, тут как я понимаю надо через wail делать,но вот какое "условаие" для него задать?
if(ms=k && ms[i++]!=k) j++
printf("kolichtstdo clov %d",j)



На вскидку:
str - строка

Код:
int words_count = 0;
int chars_count = 0;
int pos = 0;
while (1)
{
    while ( str[pos] == ' ' && str[pos] != 0 ) // идем до первого символа
         pos++;
    if (str[pos] == 0 ) break; //если конец строки выходим из цикла

    words_count++;
    while ( str[pos] != ' ' && str[pos] != 0 ) //идем до конца слова
    {
         pos++;
         chars_count++; // считаем буквы
    }
}
printf( "kol-vo bukv: %d\n", chars_count );
printf( "kol-vo slov: %d"\n, words_count );
13K
23 октября 2007 года
specter
113 / / 28.09.2007
Цитата: FractalizeR
[COLOR="Red"] Свои замечания о личности автора держи при себе .Удалил.[/COLOR]модератор.

Для количества букв - удалите из исходной строки все не-буквы (сформировав новую строку по for, скажем) и возьмите длину.
Для количества слов проще нормализовать пробелы и взять их количество.


Задача типичная, стандартно считается, что все кроме пробела является буквой ;)

489
23 октября 2007 года
NeO_u
277 / / 11.10.2006
Считаеся все очень просто:
Код:
const int textlength = 256;
    int wordcount=0;
    int charcount=0;
    char *text = new char[textlength];
    cout<<"Please enter text"<<endl;
    gets(text);
    do
    {
        if(*text==' ' || *text=='\0')
        {
            wordcount++;
            continue;
        }
        charcount++;
    }while(*text++);
    cout<<"Word Count:\t"<<wordcount<<endl;
    cout<<"Char Count:\t"<<charcount<<endl;
    return 0;


это реализация через указатели, все очень просто:-)

при условии, что слова вводятся в стандартной текстовой форме:-) иначе надо будет внутри цикла добавить if(). Если надо добавить, напиши.
17K
23 октября 2007 года
JKJ
32 / / 20.10.2007
Спс что помогли, разобрался.
А вот как я вычислял количество букв,немного перемудрил)
Код:
char str[80];
char k=' ',m;
int i,j;
printf("\nvvedite stroky: \n");
gets(str);
for(i=j=0;str!='\0';i++)
if(str!=k) str[j++]=str;
str[j]='\0';
printf("\nkolichestvo simvolov v stroke: \n%d", strlen(str));
getch();
clrscr();
return 0;
}
13K
24 октября 2007 года
specter
113 / / 28.09.2007
Цитата: NeO_u
Считаеся все очень просто:
Код:
const int textlength = 256;
    int wordcount=0;
    int charcount=0;
    char *text = new char[textlength];
    cout<<"Please enter text"<<endl;
    gets(text);
    do
    {
        if(*text==' ' || *text=='\0')
        {
            wordcount++;
            continue;
        }
        charcount++;
    }while(*text++);
    cout<<"Word Count:\t"<<wordcount<<endl;
    cout<<"Char Count:\t"<<charcount<<endl;
    return 0;


это реализация через указатели, все очень просто:-)

при условии, что слова вводятся в стандартной текстовой форме:-) иначе надо будет внутри цикла добавить if(). Если надо добавить, напиши.


Хммм... а если я введу такую строку (с несколькими пробелами между строк):

 
Код:
dflkjsldk        lskdjflkdsjf sdlkfjdlskfjldsk       sdkfjdslkfjlkj           k

Эта задача подразумевает это
489
24 октября 2007 года
NeO_u
277 / / 11.10.2006
Цитата: specter
Хммм... а если я введу такую строку (с несколькими пробелами между строк):
 
Код:
dflkjsldk        lskdjflkdsjf sdlkfjdlskfjldsk       sdkfjdslkfjlkj           k

Эта задача подразумевает это



Код:
const int textlength = 256;
    int wordcount=0;
    int charcount=0;
    char *text = new char[textlength];
    cout<<"Please enter text"<<endl;
    gets(text);
    bool found = true;
    do
    {
        if((*text==' ' || *text=='\0') && !found)
        {
            wordcount++;
            found = true;
            continue;

        }
        if(*text != ' ' && *text != '\0')
        {
            charcount++;
            if(found)
                found = false;
        }

    }while(*text++);


Вот, отлавливает пробелы:-)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог