Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 05.04.2012
Сообщений: 16
1

Сортировка слов в предложении по возрастанию количества букв

07.05.2012, 19:40. Показов 1986. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дано предложение. Расположить слова в нём в порядке возрастания числа букв в словах.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2012, 19:40
Ответы с готовыми решениями:

Сортировка слов по возрастанию количества букв
Вводится текст, конец ввода F5. Расставить слова по возрастанию количества букв. (Статические...

Сортировка слов в предложении по количеству букв
не могу сделать задание отсортировать слова по количеству букв по возрастанию в предложении

Сортировка строк текста по возрастанию количества слов
В Memo1 дан текст. Нужно также в Memo1 вывести для каждой строки количество четных по длине...

Сортировка слов по возрастанию букв в них
Помогите плиз с задачей: Дано предложение, необходимо расположить слова в порядке возрастания букв...

3
0 / 0 / 0
Регистрация: 05.09.2014
Сообщений: 52
17.09.2014, 07:29 2
Актуально
0
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
18.09.2014, 12:03 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
#include <stdio.h>
#include <string.h>
 
int main()
{
    char *tmp;
    char stroka[200];
    char mas[10][10];
    char temp[10];
 
    int i,j,word_count=0;
 
    printf("Enter string: ");
    gets(stroka);
 
    tmp = strtok(stroka, " ");
    for (i = 0; tmp != '\0'; i++)
    {
        strcpy(mas[i], tmp);
        tmp = strtok(NULL, " ");
        word_count++;
    }
 
    //sort
    for(i = 0 ; i < word_count ; i++)
    {
        for(j = 0 ; j < word_count - i - 1 ; j++)
        {
            if(strlen(mas[j])>strlen(mas[j+1]))
            {
                strcpy(temp,mas[j+1]);
                strcpy(mas[j+1],mas[j]);
                strcpy(mas[j],temp);
            }
        }
    }
 
    for(i=0; i<word_count; i++)
        printf("%s ",mas[i]);
 
    return 0;
}
0
И целого heap'а мало
96 / 57 / 17
Регистрация: 31.07.2014
Сообщений: 291
18.09.2014, 19:58 4
Но есть у меня сомнения на счёт countWords().
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
81
82
83
84
85
86
87
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
 
int
compareStrings(const void *a, const void *b)
{
    const char **ia = (const char **)a;
    const char **ib = (const char **)b;
    return strcmp(*ia, *ib);
}
 
char*
duplicateString(const char* str)
{
    if (!str || !*str) {
        return NULL;
    }
    size_t len = strlen(str) + 1;
    char* dupl = malloc(len);
    memset(dupl, 0, len);
    strcpy(dupl, str);
}
 
size_t
countWords(const char* str)
{
    if (!str) {
        return 0;
    }
    size_t cnt = 0;
    for ( ; *str; ++str) {
        if (isspace(*str)) {
            ++cnt;
        }
    }
    return cnt + 1;
}
 
struct Tokens { /* Interesting, how to put the fields here for better aligning? */
    char** tokens; /* tokens which are stored in the string, ends in NULL */
    char* string; /* to malloc and free memory for string copy */
    size_t len;
};
 
struct Tokens
getTokensFromString(const char* src, const char* delim)
{
    struct Tokens tokens = {.tokens = NULL, .string = NULL, .len = 0};
    if (!(tokens.string = duplicateString(src))) {
        exit(EXIT_FAILURE);
    }
    if (!(tokens.len = countWords(tokens.string))) {
        exit(EXIT_FAILURE);
    } /* + 1 for NULL terminator */
    if (!(tokens.tokens = malloc(sizeof(*tokens.tokens) * (tokens.len + 1)))) {
        exit(EXIT_FAILURE);
    }
    memset(tokens.tokens, 0, tokens.len + 1);
    size_t i = 0;
    tokens.tokens[ i ] = strtok(tokens.string, delim);
    while (tokens.tokens[ i++ ]) {
        tokens.tokens[ i ] = strtok(NULL, delim);
    }
    return tokens;
}
 
int
main(int argc, char** argv)
{
    const char* sentense = "this is a sentense with words and other stuff";
    struct Tokens tokenized_sentense = getTokensFromString(sentense, " ");
    char** iter = tokenized_sentense.tokens;
    puts("Tokens:");
    printf("%zu\n", tokenized_sentense.len);
    for ( ; *iter; ++iter) {
        printf("%s\n", *iter);
    }
    qsort(tokenized_sentense.tokens, tokenized_sentense.len,
          sizeof(char*), compareStrings);
    puts("Sorted tokens:");
    iter = tokenized_sentense.tokens;
    for ( ; *iter; ++iter) {
        printf("%s\n", *iter);
    }
    free(tokenized_sentense.string);
}
Добавлено через 6 минут
Блин. Так увлёкся, что не внимательно прочитал условие.
Надо поменять
C
1
2
3
4
5
6
7
int
compareStrings(const void *a, const void *b)
{
    const char **ia = (const char **)a;
    const char **ib = (const char **)b;
    return strlen(*ia) - strlen(*ib);
}
0
18.09.2014, 19:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2014, 19:58
Помогаю со студенческими работами здесь

Вычисление количества букв А в предложении
Составить программу вычисления количества букв А в предложении.

Расставить предложения по возрастанию количества буквы «а» в каждом предложении
Не могу сделать задачу , помогите пожалуйста �� «В строке текста расставить предложения по...

Подсчет количества слов в предложении
Дана строка, содержащая несколько слов, разделенных одним пробелом. В начале строки и в конце...

Подсчет количества слов в предложении
program stroki; var s1, s2: string; i, k1, k2: byte; begin write('Введите первое...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru