Форум программистов, компьютерный форум CyberForum.ru

Посчитать слова - C++

Восстановить пароль Регистрация
 
JerryJackson
50 / 6 / 1
Регистрация: 15.07.2010
Сообщений: 112
03.11.2010, 19:27     Посчитать слова #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "stdafx.h"
#include <iostream>
#include <cctype>
 
using namespace std;
 
int xcount1(char*);
int xcount2(int*);
 
int _tmain(int argc, _TCHAR* argv[])
{
    char str1[]="Привет! nil laba_12 chaos? UFO";
    int str2[]={12,7,5,54,67,3,3,4,1,0};
    
 
    cout << xcount2(str2) << " >>>>" <<endl;
    cout<<"__________________________________________"<<endl;
 
    cout <<  xcount1(str1) << " >>>>" << endl;
 
 
    return 0;
}
int xcount1(char* a)
{
    int i=0;
    int counter=0;
    int n=0;
    while(a[i]!='\0')
    {
if((a[i]==' ')&&(a[i-1]==isalpha(a[i])))
counter++;
else
n=0;
    }
    cout << "Char=" << counter << endl;
    return counter;
}
int xcount2(int* b)
{
 int i=0;
 int counter1=0;
 int n1=0;
 while(b[i]!='\0')
 {
     if(b[i]%2!=0)
         counter1++;
     else
         n1=0;
 }
 cout << "Int=" << counter1 << endl;
 return counter1;
}
Добавлено через 46 секунд
кто-нибудь помогите с программой
не выводит на экран результат
и в программе ошибка
но не могу понять какая
....
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.11.2010, 19:46     Посчитать слова #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <string>
#include <algorithm>
#include <sstream>
#include <vector>
 
int main()
{
    const std::string Delims=",.?;!: ";
    std::string Str;
    std::getline(std::cin, Str);
    for(std::string::iterator Iter=Str.begin(); Iter!=Str.end(); ++Iter)
    {
         if(Delims.find(*Iter)!=std::string::npos)
         {
              *Iter=' ';
         }
    }
    std::vector<std::string> VecStr;
    std::string Temp;
    std::istringstream ist(Str);
    while(ist>>Temp)
        VecStr.push_back(Temp);
    std::cout<<"Words\n\n";
    std::copy(VecStr.begin(), VecStr.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
    std::cout<<"Numb of words: "<< VecStr.size() <<'\n';
    return 0;
}
JerryJackson
50 / 6 / 1
Регистрация: 15.07.2010
Сообщений: 112
03.11.2010, 19:50  [ТС]     Посчитать слова #3
спасибо за помощь
но мне string использовать нельзя
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.11.2010, 19:59     Посчитать слова #4
JerryJackson, Ну с char* можно и нужно использовать strtok. Код будет немного побольше, но только немного.
Хм. Даже меньше вышел

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <cstring>
#include <iostream>
 
int main()
{
     char str[]={"Hello, world, e c t"};
     const char* delims=".,:?! ";
     int numb=0;
     char* ptr=strtok(str, delims);
     if(ptr)
         numb++;
     while(ptr)
     {
         ptr=strtok(0, delims);
         if(ptr!=0)
           numb++;
     }
     std::cout<<"Numb of words: "<< numb <<'\n';
     return 0;
}
JerryJackson
50 / 6 / 1
Регистрация: 15.07.2010
Сообщений: 112
03.11.2010, 20:01  [ТС]     Посчитать слова #5
да
но говорю же сказали что string использовать вообще нельзя
я бы с радостью сделал со string
но нельзя
....
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
03.11.2010, 20:05     Посчитать слова #6
Цитата Сообщение от JerryJackson Посмотреть сообщение
но мне string использовать нельзя
На чистом Си:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
 
#define FALSE 0
#define TRUE 1
 
int main(int argc, char *argv[])
{
    int words=0,noword=FALSE;
    char c;
    printf("Введите строку:\n");
    c=getchar();
    while ((c!=EOF)&&(c!='\n'))
    {
        if ((c==' ')||(c=='\t'))
            noword=TRUE;
        if (noword)
            if (!((c==' ')||(c=='\t')))
            {
                words++;
                noword=FALSE;
            }
        c=getchar();
    }
    words++;
    printf("%d слов\n",words);
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2010, 20:43     Посчитать слова
Еще ссылки по теме:

C++ Напечатать слова, которые отличны от последнего слова текста, предварительно удалив из слова последнюю букву
C++ Вывести слова в строке ДО слова, у которого одинаковые первая и последняя буквы
Написать программу добавления слова «hello» после первого слова введенной строки C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.11.2010, 20:43     Посчитать слова #7
JerryJackson, Где в моем втором варианте вы видите string? Там char[]
Yandex
Объявления
03.11.2010, 20:43     Посчитать слова
Ответ Создать тему
Опции темы

Текущее время: 21:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru