Stunt
1

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

03.09.2012, 11:41. Показов 1182. Ответов 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 минуты
Удалите тему)
Я хотел разобраться почему не работает, но слишком много экспериментировал с прогой, там ошибок слишком много.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.09.2012, 11:41
Ответы с готовыми решениями:

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

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

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

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

3
2477 / 1904 / 951
Регистрация: 21.12.2010
Сообщений: 3,473
Записей в блоге: 10
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
320 / 270 / 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
320 / 270 / 128
Регистрация: 24.05.2012
Сообщений: 629
03.09.2012, 13:06 4
Что-то тупанул. BUFFER_SIZE не 30, а 3 надо делать)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.09.2012, 13:06
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru