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

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

Войти
Регистрация
Восстановить пароль
 
Stunt
Сообщений: n/a
#1

Пять самых длинных слов - C++

03.09.2012, 11:41. Просмотров 635. Ответов 3
Метки нет (Все метки)

Дана строка слов разделенных пробелами, запятыми, точками.
Сформируйте новую строчку из пяти самых длинных слов.

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
#include <iostream>
#include <string.h>
using namespace std;
 
void main(){
    const int max=100;
    char str[max],words[5][20];
    int i,j,l=0,m=0,n=0;
    cin.get(str,max);
    for(i=0;i<(strlen(str));i++){
        if(str[i]==' ' && str[i]=='.' && str[i]==',' && str[i]=='\0'){
            for(i=0;i<m;i++){
                if(l>(strlen(words[m-i]))){
                    for(j=0;j<(strlen(words[m-i]));j++)
                        words[m-i+1][j]=words[m-i][j];
                    words[m-i+1][j+1]='\0';
                }
                else
                    n=m-i-1;
            }
            for(j=0;j<=l;j++)
                words[n][j]=str[i-l+j];
            words[n][j+1]='\0';
            l=0;
        }
        else 
            l++;        
    }
    cout<<words[1]<<endl;
}
Помогите решить, не пойму где ошибка. Возможно их много...

Добавлено через 43 минуты
Удалите тему)
Я хотел разобраться почему не работает, но слишком много экспериментировал с прогой, там ошибок слишком много.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2012, 11:41     Пять самых длинных слов
Посмотрите здесь:

Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами - C++
Помогите написать прогу) 1. Строка состоит не менее чем из двух слов. Преобразовать её по следующему правилу: найти первое из самых...

Найти 5 самых длинных слов - C++
Как найти 5 самых длинных слов? #include &quot;stdafx.h&quot; #include &quot;windows.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;math.h&gt;...

Найти 50 самых длинных слов в файле - C++
Здравствуйте! Буду благодарна за помощь) Нужно в большом файле с текстом найти 50 самых длинных слов. Кое что сделала, но есть...

Поиск самых длинных и комбинированных слов в файле - C++
Здравствуйте. У меня есть такая задача: 1. Найти 2 самых длинных комбинированных слова 2. Найти все комбинированные слова в файле ...

Сформируйте новую строку из пяти самых длинных слов. - C++
Дана строка слов, разделенных пробелами, запятыми, точками. Сформируйте новую строку из пяти самых длинных слов. Определите количество...

Функция, ввести произвольный текст и получить фразу из самых длинных слов - C++
Надо разработать функцию нахождения самого длинного слова в строке, ввести произвольный текст и получить фразу из самых длинных слов. Как...

Вывести 10 самых длинных (по числу символов) предложений - C++
Ребят программисты помогите, понимаю что программа легкая. Но не могу сделать. Текст надо считать из файла.

Найти произведение самых длинных последовательностей отрицательных чисел каждой строки матрицы - C++
Всю голову сломал этой задачей:Составить программу, которая находит в каждой строке матрицы S(k,l), k≤12, l≤15, самую длинную...

В файле найти первую из самых длинных последовательностей соседних символов, состоящую только из цифр - C++
Посмотрите что не так с моей задачей В существующем на диске файле найти первую из самых длинных последовательностей соседних символов,...

Найти первые пять самых повторяющихся элементов массива и количество их вхождений - C++
Есть отсортированный по возрастанию массив. Надо найти первые пять самые повторяющиеся и их кол-во вхождений. Например ...

Работа с текстом: Выделить две группы самых коротких слов - C++
Задачка Выделить две группы самых коротких слов. Вывести их на печать. Примечание: использовать cin/cout, флаги, манипуляторы....

Найти 3 самых больших и 3 самых маленьких числа в двумерном массиве - C++
Дан двумерный массив размерностью m x n, нужно найти и вывести 3 самых больших и 3 самых маленьких числа во всем массиве. Заранее спасибо


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
1640 / 1268 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
03.09.2012, 12:20     Пять самых длинных слов #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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <string.h>
#include <iostream>
#include <stdlib.h>
 
int Compare(const void* a, const void* b)
{
    return (strlen(*(char**)a) - strlen(*(char**)b));
}
 
int Contains(char** arr, const int size, const char* pWord)
{
    for(int i = 0; i < size; ++i)
    {
        if(!strcmp(pWord, arr[i])) return 1;
    }
    return 0;
}
 
int main()
{
    char s[256], *delims = (char*)" ,.", *p = 0, *rArr[50] = {0};
    std::cin.getline(s, sizeof(s));
    int i;
    for(p = strtok(s, delims), i = 0; p; p = strtok(0, delims))
    {
        if(!Contains(rArr, i, p))
        {
            rArr[i++] = p;
        }
    }
    //std::cout << "i = " << i << std::endl;
    qsort(rArr, i, sizeof(*rArr), &Compare);
    /*for(int j = 0; j < i; ++j)
    {
        std::cout << rArr[j] << std::endl;
    }*/
    for(int j = i - 1; (j >= 0) && (i - j <= 5); --j)
    {
        std::cout << rArr[j] << "  ";
    }
    return 0;
}
// dfg,gh wwwwww.v, nbvnbv  hjhj  ggg wwwwww
Кот Ангенс
317 / 267 / 38
Регистрация: 24.05.2012
Сообщений: 629
03.09.2012, 12:44     Пять самых длинных слов #3
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
/*Вывести пять самых длинных слов из строки.*/
#include <stdio.h>
#include <stdlib.h>
 
enum {
    COUNT = 5,
    BUFFER_SIZE = 30
};
 
int main() {
    unsigned cursize = BUFFER_SIZE;
    char* buffer = (char*)malloc(BUFFER_SIZE * sizeof(char));
    struct {
        char* pt;
        unsigned short length;
    } s[COUNT];
    unsigned short i, j, l = 0, n = 0;
    char c;
 
    do {
        c = getchar();
        if (c == ' ' || c == ',' || c == '.' || c == '\n') {
            if (l)
                if (n < COUNT) {
                    s[n].length = l;
                    s[n].pt = (char*)malloc(l * sizeof(char));
                    do {
                        l--;
                        s[n].pt[l] = buffer[l];
                    } while (l);
                    /*l = 0;*/
                    n++;
                } else {
                    j = 0;
                    for (i = 1; i < COUNT; i++)
                        if (s[i].length < s[j].length)
                            j = i;
                    if (l > s[j].length) {
                        s[j].length = l;
                        free(s[j].pt);
                        s[j].pt = (char*)malloc(l * sizeof(char));
                        do {
                            l--;
                            s[j].pt[l] = buffer[l];
                        } while (l);
                        /*l = 0;*/
                    } else
                        l = 0;
                }
        } else {
            if (l == cursize)
                buffer = (char*)realloc(buffer, (cursize += BUFFER_SIZE) * sizeof(char));
            buffer[l++] = c;
        }
    } while (c != '\n');
    free(buffer);
    for (i = 0; i < n; i++) {
        for (j = 0; j < s[i].length; j++)
            putchar(s[i].pt[j]);
        free(s[i].pt);
        putchar(' ');
    }
    putchar('\n');
}
Миниатюры
Пять самых длинных слов  
Кот Ангенс
317 / 267 / 38
Регистрация: 24.05.2012
Сообщений: 629
03.09.2012, 13:06     Пять самых длинных слов #4
Что-то тупанул. BUFFER_SIZE не 30, а 3 надо делать)
Yandex
Объявления
03.09.2012, 13:06     Пять самых длинных слов
Ответ Создать тему
Опции темы

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