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

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

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

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

17.12.2011, 23:04. Просмотров 306. Ответов 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++
Программа делает из дд.мм.гг. - месяц дд, 20гг. #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstdlib&gt; using namespace std; ...

Задача на строки - C++
Задали на лабу в универе задачу: Словом в строке считается последовательность букв латинского алфавита, остальные символы...

Задача, строки, с++ - C++
. Строка состоит из слов, разделенных ровно одним пробелом, пробелов перед первым и после последнего слова нет. Поместить в начало строки...

задача на строки - C++
помогите пожалуйста, хотя бы на словах подскажите алгорит к след.задаче Ввести n слов в консоли. Найти слово ,в котором число различных...

Задача на строки - C++
Суть задачи такая. Есть строка и есть подстрока, найти все вхождение строки в подстроку и отделить пробелами. При этом желательно работать...

Задача на строки - C++
Я не прошу написать код, прошу просто подсказать, как осуществить такую задачу. Есть текст, текст состоит из маленьких букв, знаков *+-...

Задача на строки ( - C++
Привет всем) Не могу решить задачу: &quot;Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два...

Задача на строки - C++
Задание: Заменить дату вида дд.мм.гг на Месяц ДД., гггг. Ошибки на скрине. #include &lt;cstdlib&gt; using namespace std; int func() {...


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

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

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