Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
stunt
0 / 0 / 0
Регистрация: 09.05.2009
Сообщений: 2
#1

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

03.09.2012, 11:41. Просмотров 715. Ответов 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 минуты
Удалите тему)
Я хотел разобраться почему не работает, но слишком много экспериментировал с прогой, там ошибок слишком много.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2012, 11:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Пять самых длинных слов (C++):

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

Найти 5 самых длинных слов
Как найти 5 самых длинных слов? #include &quot;stdafx.h&quot; #include &quot;windows.h&quot;...

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

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

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

Удалить из файла строчки содержащие несколько самых длинных слов
Подскажите как это можно сделать.

3
igorrr37
1863 / 1481 / 749
Регистрация: 21.12.2010
Сообщений: 2,473
Записей в блоге: 11
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
1
Кот Ангенс
318 / 268 / 128
Регистрация: 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');
}
0
Миниатюры
Пять самых длинных слов  
Кот Ангенс
318 / 268 / 128
Регистрация: 24.05.2012
Сообщений: 629
03.09.2012, 13:06 #4
Что-то тупанул. BUFFER_SIZE не 30, а 3 надо делать)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2012, 13:06
Привет! Вот еще темы с решениями:

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

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

Найти произведение самых длинных последовательностей отрицательных чисел каждой строки матрицы
Всю голову сломал этой задачей:Составить программу, которая находит в каждой...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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