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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AlexMind
0 / 0 / 0
Регистрация: 29.10.2011
Сообщений: 9
#1

Задача на строки - C++

17.12.2011, 23:04. Просмотров 304. Ответов 0
Метки нет (Все метки)

Всем доброго времени суток.
Возникла вот такая проблема: при запуске нижеизложенного кода задачи - зацикливается вывод, и никак не могу понять-где ошибка. Прошу помочь. Заранее благодарю.

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//С клавиатуры вводится строка символов, представляющая собой некоторый отрывок литературного произведения. 
//Определить и вывести на экран количество предложений в нем, а также сами предложения.
 
#include<iostream>
#include<cstring>
using namespace std;
int main ()
{
    setlocale(LC_ALL,".1251");
    char text [1001]; //максимальное кол-во символов текста
    char predlmas [100][1001]; //массив предложений, где 100 - максимальнок кол-во предложений, 1001- максимальное кол-во символов в предложении
 
    cout<<"Введите текст : "<< endl;
 
    cin.get(text, sizeof text); //чтение текста с клавиатуры
 
    int textlen;
    textlen=strlen(text); //определение длины текста
 
    int npredl=0; //обнуляем счетчик кол-ва предложений
    int predllen=0; //обнуляем счетчик длины предложения
 
    //в цикле пробегаемся по всем символам текста
    for(int i=0;i<textlen;i++)
    {
        if((text[i]=='.' || text[i]=='?' || text[i]=='!') && predllen>0) //если встречаемый символ-точка,впр или вскл и длина предложения больше 0,то
        {
            while((text[i]=='.' || text[i]=='?' || text[i]=='!') && i<textlen) //пока встречаемый символ-это точка впр или воскл
            {
                predlmas[npredl][predllen]=text[i]; //добавляем его в конец предложения
                i++; //увеличиваем счетчик символов
                predllen++; //увеличиваем длину предложения
            }
            
            if((i++)==' ') //если следующий за точкой символ - пробел,то
            {   
                predlmas[npredl][predllen]='\0'; //т.к. предложение закончилось добавляем последним символом-ноль
                while(text[i]==' ') //пропускаем этот пробел
                {
                    i++;
                }
            }
            npredl++; //увеличиваем счетчик кол-ва предложений (переходим на следующее предложение)
            predllen=0; //обнуляем длину предложения
        }
        else //иначе если встречаемый символ не точка,впр или воскл ,то
        {
            if(text[i]!='.' && text[i]!='?' && text[i]!='!')
            {
                predlmas[npredl][predllen]=text[i]; //записываем символ в массив символов одного предложения
                predllen++; //увеличиваем длину предложения
            }
        }
        
    }
 
    //Если после того, как мы пробежались по всем символам текста,
    //и оказалось, что длина текущего предложения больше нуля
    //(это возможно только в случае, когда предложение не заканчивается
    // точкой,впр или вскл), то
    if (predllen > 0)
    {
        predlmas[npredl][predllen] = '\0'; //добавляем нулевой символ в конец текущего предложения и
        npredl++; //увеличиваем счетчик предложений на единицу
        predllen = 0; //обнуляем длину предложения
    }
 
    cout << "Предложения : " << endl;
    cout << endl;
 
    cout << npredl << endl; //выводим кол-во предложений в тексте
    setlocale(LC_ALL,".866");
    for(int i=0;i<npredl;i++)  //выводим предложения, пробегаясь по строкам двумерного массива
    {
        cout <<"№ " << i+1 << "  ";
        cout << predlmas[i] <<"."<< endl;  
    }
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2011, 23:04     Задача на строки
Посмотрите здесь:

Задача на строки C++
Задача на строки ( C++
C++ Задача на строки
C++ задача на Строки
задача на Строки C++
Строки. Задача по С++ C++
C++ Задача на строки !
C++ задача на строки
C++ Задача на строки(С/С++)
Задача на строки C++
Задача на строки C++
Задача на строки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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