Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 27.12.2009
Сообщений: 3

Вывести слова в порядке убывания количества символов

27.12.2009, 21:17. Показов 1846. Ответов 7

Студворк — интернет-сервис помощи студентам
Помогите написать программу на Turbo C:
Дано предложение. Вывести слова в порядке убывания количества символов.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.12.2009, 21:17
Ответы с готовыми решениями:

Определить и вывести символы, с которых начинаются слова в порядке убывания количества таких слов
Здравствуйте, помогите дописать программу ( вместо char используем стринг ) 1 часть я сделал, вот со второй никак не получается, помогите...

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

Вывести слова в порядке убывания их длин
Дано предложение состоящее только из букв латинского алфавита с нижним и (или) верхним регистром букв. Вывести слова в порядке убывания их...

7
0 / 0 / 0
Регистрация: 27.12.2009
Сообщений: 3
01.01.2010, 17:25  [ТС]
Помогите написать программу на Turbo C:
Дано предложение. Вывести слова в порядке убывания количества символов.
0
 Аватар для makkabi
10 / 10 / 3
Регистрация: 05.12.2009
Сообщений: 152
01.01.2010, 18:14
нужно объявить
C++
1
2
3
4
5
struct slovo
{
 char *stringg;
 short length;
};
потом динамический массив из этих slov сортируем в порядке убывания len
а после - вывод.в порядке убывания.
2
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
01.01.2010, 20:00
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAXW 1024
 
int slencmp(const void *p1, const void *p2)
{
    const char *s1, *s2;
 
    s1 = * (char **) p1;
    s2 = * (char **) p2;
    return strlen(s1) - strlen(s2);
}
 
int main(void)
{
    char s[4096], *words[MAXW];
    char *p, *delim = " -:,.!?";
    int i, nw;
 
    printf("Enter string: ");
    if(fgets(s, sizeof(s), stdin) == NULL || *s == '\n')
        return 1;
    
    if(p = strrchr(s, '\n'))
        *p = '\0';
    
    for(i = 0, p = s; i < MAXW && (p = strtok(p, delim)); i++, p = NULL)
        words[i] = strdup(p);
    
    nw = i;
    qsort(words, nw, sizeof(char *), slencmp);
    for(i = nw - 1; i >= 0; i--)
        printf("%s\n", words[i]);
    
    return 0;
}
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
01.01.2010, 20:06
Цитата Сообщение от Gravity Посмотреть сообщение
s1 = * (char **) p1;
что это значит?
0
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
01.01.2010, 20:07
Цитата Сообщение от outoftime Посмотреть сообщение
что это значит?
Привести адрес строки к типу char и взять ее значение.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
02.01.2010, 05:03
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Мы простых путей не ищем!
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define SEP_CHARS " \t,.:;!?"
    
typedef struct tagWRD {
    char *word;
    size_t len;
    struct tagWRD *next;
} WRD;
 
WRD *maxWord(WRD *w){
    size_t max;
    WRD *pmax;
    
    max = w->len;
    pmax = w;
    while ( w = w->next ){
        if ( w->len > max ){
            max = w->len;
            pmax = w;
        }
    }
    return pmax;
}
 
void swapWords(WRD *a, WRD *b){
    WRD t;
    t.word = a->word;
    t.len = a->len;
    a->word = b->word;
    a->len = b->len;
    b->word = t.word;
    b->len = t.len;
}
 
void sortWords(WRD *w){
    WRD *max_word, *next_word;
    
    if ( !w )
        return;
    while ( next_word = w->next ){
        if ( ( max_word = maxWord(w) ) != w )
            swapWords(w, max_word);
        w = next_word;
    }
}
 
WRD *newWord(char *s){
    WRD *w;
    
    if ( !s )
        return NULL;
    if ( ( w = (WRD*)malloc(sizeof(WRD)) ) == NULL ){
        fprintf(stderr, "Bad memory!\n");
        exit(1);
    }
    if ( ( w->word = strdup(s) ) == NULL ){
        fprintf(stderr, "Bad memory!\n");
        exit(1);
    }
    w->len = strlen(w->word);
    w->next = NULL;
    return w;
}
 
void clearWords(WRD *w){
    WRD *t;
    
    while ( w ){
        t = w->next;
        if ( w->word ){
            free(w->word);
            w->word = NULL;
        }
        free(w);
        w = t;
    }
}
 
void printWords(WRD *w){
    while ( w ){
        printf( ( w->next ) ? "%s " : "%s\n", w->word);
        w = w->next;
    }
}
 
int main(void){
    char buf[BUFSIZ], *p;
    WRD *first, *w, *last;
    
    while ( 1 ){
        first = last = NULL;
        printf("String: ");
        if ( !fgets(buf, sizeof(buf), stdin) )
            exit(1);
        if ( p = strrchr(buf, '\n') )
            *p = 0;
        if ( !*buf )
            exit(0);
        for ( p = strtok(buf, SEP_CHARS); p != NULL; p = strtok(NULL, SEP_CHARS) ){
            if ( ( w = newWord(p) ) == NULL ){
                fprintf(stderr, "Can't get word!\n");
                exit(1);
            }
            if ( !first ){
                first = w;
                last = first;
            }
            else {
                last->next = w;
                last = last->next;
            }
        }
        if ( !first ){
            fprintf(stderr, "Can't get some words!\n");
            exit(1);
        }
        sortWords(first);
        printWords(first);
        clearWords(first);
    }
    exit(0);
}
1
0 / 0 / 0
Регистрация: 27.12.2009
Сообщений: 3
04.01.2010, 13:48  [ТС]
Всем спасибо! Помогли!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.01.2010, 13:48
Помогаю со студенческими работами здесь

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

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

Вывести все слова строки в порядке убывания их длин
Дана строка текста, в которой слова разделены пробелами. Необходимо: - определить количество слов в строке; - вывести все слова...

Вывести слова строки в порядке убывания числа букв в них
Собственно, имеется готовая на половину программа: #include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;math.h&quot; #include...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru