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

строки и траблы с ними - C++

Восстановить пароль Регистрация
 
Ghost03080
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 31
23.09.2011, 01:06     строки и траблы с ними #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
#include<iostream>
#include<cstring>
 
using namespace std;
 
//нахождение количества слов
int kol(char*s)
{
    int k=0;
    int i=0;
    while(s[i]!='\0')
    {
        if (s[i]=='_')
            k++;
        i++;
    }
    return k;
}
 
//функция, для ввода строк
void striga(int h, int m, char *ss)
{
    int r=0;
    int j=0;
    while (r==123)
    {
        char *s=new char[];
        cin>>s;
        if(s[j]=='.')
            r=123;
        h=kol(s);
        if (h>m)
        {
            m=h;
            strcpy (ss, s);
        }
        delete[]s;
        s=NULL;
    }
}
 
int main()
{
    int h=0;
    int m=0;
    char *ss=new char[];
    striga(h,m,ss);
    cout<<ss;
    delete[]ss;
    ss=NULL;
    return 0;
}
компилируется нормально, но начинаются траблы при попытке запустить

Добавлено через 45 минут
одну ошибку нашел
в 27 строке r!=123
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2011, 01:06     строки и траблы с ними
Посмотрите здесь:

Строки и иже с ними C++
есть 2 строки и их нужно объединить и добавить между ними пробел C++
две строки... Соединить их ,вставить между ними соединительное слово... C++
Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили пе C++
Почему в конце символьной строки появляются разные символы, и что с ними делать? C++
C++ Строки с действительными числами, операции над ними
Строки с действительными числами, операции над ними C++
Строки и операции над ними C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
23.09.2011, 10:51     строки и траблы с ними #2
Ghost03080, зачем хранить все строки, храним строку с макс числом слов и сравниваем с числом слов во вновь вводимой, нужено всего две строки
Вот на плючах
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
54
#include <iostream>
#include <cstring>
#include <conio.h>
 
using namespace std;
 
int GenNumWords(const char *s);
 
int main()
{
    int nMax;//макс кол-вом слов
    int nCur;//кол-вом слов в текущей строке
    char str[1025];//Хранит строку с макс кол-вом слов
    char buf[1025];//Хранит текущую строку
    cout<<"Enter num of input strings\r\n";
    int nStr;cin>>nStr;getchar();//Enter после ввода всё портит
    cout<<"Enter input string #"<<1<<"\r\n";
    cin.getline(str,1024);
    nMax = GenNumWords(str);
    for(int i = 2;i <= nStr;i++)
    {
        cout<<"Enter input string #"<<i<<"\r\n";
        cin.getline(buf,1024);
        nCur = GenNumWords(buf);
        if(nMax < nCur)
        {
            nMax = nCur;
            sprintf(str,"%s",buf);
        }
    }
    cout<<"String with max num of words\r\n";
    cout<<str<<"\r\n";
    cout<<"Press any key to continue\r\n";
    return 0;
}
 
int GenNumWords(const char *s)
{
    int nWords = 0;
    int sLen = strlen(s);
    char * str = new char[sLen + 1];
    sprintf(str,"%s",s);
    str[sLen] = '\0';
    //Разделители слов строка с несколькими предложениями может быть
    char delim[] = " ,.!?";
    char * buf = strtok(str,delim);//Бьём str на токены (слова)
    while(buf)
    {
        nWords++;
        buf = strtok(NULL,delim);
    }
    delete [] str;
    return nWords;
}
Результат работы
Enter num of input strings
4
Enter input string #1
dfh hdhg hdhg jgjgjgjgjgjgjgjg
Enter input string #2
jgjgd, kkh!Pdj jdjg jg.
Enter input string #3
gfkh kfkghkk kkgkf
Enter input string #4
hkkhhkflkghkhk kfllhkfklhkfkhlfhk
String with max num of words
jgjgd, kkh!Pdj jdjg jg.
Press any key to continue
Press any key to continue

jgjgd, kkh!Pdj jdjg jg. - хоть и не сама длинная но число слов в ней 5 больше чем во всех остальных
Yandex
Объявления
23.09.2011, 10:51     строки и траблы с ними
Ответ Создать тему
Опции темы

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