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

Поиск двух групп наименьших слов - C++

Восстановить пароль Регистрация
 
sobykey
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 18
08.11.2012, 12:45     Поиск двух групп наименьших слов #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
54
55
56
57
58
59
60
61
62
#include <iostream>
using namespace std;
const int n = 100; //инициализация константы длины текста
 
int main()
{
    char str[n]; //инициализация текстового массива из n элементов
    char* ptr; //инициализация указателя типа char
    char matrix[10][n]; //инициализация двумерного массива
    int count = 0; //инициализация счетчика
    int j, i; //инициализация переменных цикла
    int g;
    int s1=0,s2=0;
    
    cout << "Enter the text " << endl;
    cin.getline(str, n);
 
    ptr = strtok(str, " ,.-!?");
    //cout<<ptr;
    while(ptr != NULL)
    {
        strcpy(matrix[count++], ptr);
        ptr = strtok(NULL, " ,.-!?");
    }
 
    for(i = 0; i < count - 1; i++)
        for (j = 0; j < count - 1; j++)
        {
            if(strlen(matrix[j]) > strlen(matrix[j+1]))
            {
                char temp[20];
                strcpy(temp, matrix[j]);
                strcpy(matrix[j], matrix[j+1]);
                strcpy(matrix[j+1], temp);
            }
        }
        g=strlen(matrix[0]);
        for(j=0;j<10;j++)
        {
            if(strlen(matrix[j])==g)
                s1++;
        }
        do
        {
            g++;
            for(j=0;j<10;j++)
            {
                if(strlen(matrix[j])==g)
                    s2++;
            }
        }
        while(s2!=0);
 
        cout<<"The first group of the smallest words '";
        for(j=0;j<s1;j++)
            cout<<matrix[j]<<" "<<endl;
        cout<<"The first group of the smallest words '";
        for(j=s1+1;j<s1+s2;j++)
            cout<<matrix[j]<<" "<<endl;
 
        cin.get();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2012, 12:45     Поиск двух групп наименьших слов
Посмотрите здесь:

C++ Предложение из двух слов
Найти произведение двух наибольших и двух наименьших отрицательных нечетных чисел массива C++
C++ Сравнение двух слов
C++ Поиск фамилий неуспевающих студентов с указанием номеров групп и кол-ва задолжностей
Поиск наименьших двух элементов массива или алгоритм Хаффмана C++
C++ Есть строка, состоящая из групп нулей и единиц. Каждая группа отделяется друг от друга одним или несколькими пробелами. Найти и вывести на экран групп
C++ Составить программу, запрашивающую у пользователя три разных целых положительных числа и находящих сумму двух наименьших из них
Определить значения двух наименьших элементов вектора C++
C++ Найти произведение двух наименьших из трёх заданных чисел
Определить в последовательности целых чисел сумму двух наибольших и сумму двух наименьших C++
Поиск групп символов C++
C++ Строки. Поиск одинаковых слов в предложениях. Вывод вместо одинаковых слов "*"

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

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

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