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

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

07.10.2012, 15:01. Показов 1853. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ввести строку. Вывести пословно в порядке убывания длин слов.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2012, 15:01
Ответы с готовыми решениями:

Ввести строку, вывести пословно на экран, но слова в обратном порядке
если можно, с комментариями: Ввести строку, вывести пословно на экран, но слова в обратном порядке.

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

Ввести строку, вывести на экран пословно, причем каждое слово вывести в обратном порядке
Задание: Ввести строку, вывести на экран пословно, причем каждое слово вывести в обратном порядке....

Ввести строку. Вывести пословно в порядке возрастания количества гласных букв.
Ввести строку. Вывести пословно в порядке возрастания количества гласных букв.

3
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
07.10.2012, 18:27 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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
 
int len_cmp(const void* a, const void* b) {
        
    return strlen( *((const char**) b) ) - strlen( *((const char**) a) );
}
 
char* sdup(const char* src) {
    
    char* dest = (char* ) malloc(strlen(src) + 1);
    
    if(dest == NULL)
        return NULL;
    
    return strcpy(dest, src);
}
 
#define DELIM " ,.:;!?\n"
 
int main() {
    
    char* tok;
    char** toks;
    
    char str[256];
    
    size_t i;
    size_t count = 0;
 
    /*-----------------------*/
    printf("input string: ");
    fgets(str, sizeof(str), stdin);
 
    /*-----------------------*/
    toks = NULL;
    tok = strtok(str, DELIM);
 
    while(tok) {
 
        toks = (char**) realloc(toks, ++count * sizeof(char*));        
        toks[count - 1] = sdup(tok);
        tok = strtok(NULL, DELIM);
    }
 
    /*-----------------------*/
    qsort(toks, count, sizeof(char*), len_cmp);
 
    for(i = 0; i < count; ++i)
        puts(toks[i]);
 
    /*-----------------------*/
    for(i = 0; i < count; ++i)
        free(toks[i]);
    
    free(toks);
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 07.10.2012
Сообщений: 38
26.12.2012, 19:40  [ТС] 3
а можно как нибудь переделать strtok.просто эту функцию использовать нельзя,перепишите пожалуйста
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
26.12.2012, 22:06 4
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
 
int len_cmp(const void* a, const void* b) {
 
    return strlen( *((const char**) b) ) - strlen( *((const char**) a) );
}
 
char* sndup(const char* src, size_t n) {    
    
    char* dest = (char*) malloc(n + 1);
    if(dest == NULL) return NULL;
 
    strncpy(dest, src, n);
    dest[n] = '\0';
    
    return dest;
}
 
#define DELIM " ,.:;!?\n"
 
int main() {
 
    char* tok;
    char** toks;
 
    char str[256];
 
    size_t i;
    size_t count = 0;
 
    /*-----------------------*/
    printf("input string: ");
    fgets(str, sizeof(str), stdin);
 
    /*-----------------------*/
    toks = NULL;
    tok = str;
 
    while(*tok) {
 
        if(strchr(DELIM, *tok)) {
 
            do ++tok; while(*tok && strchr(DELIM, *tok));
        }
 
        else {
            
            size_t n = 0;
            while(tok[n] && !strchr(DELIM, tok[n])) ++n;
 
            toks = (char**) realloc(toks, ++count * sizeof(char*));
            toks[count - 1] = sndup(tok, n);
            tok += n;
        }        
    }
 
    /*-----------------------*/
    qsort(toks, count, sizeof(char*), len_cmp);
 
    for(i = 0; i < count; ++i)
        puts(toks[i]);
 
    /*-----------------------*/
    for(i = 0; i < count; ++i)
        free(toks[i]);
 
    free(toks);
 
    return 0;
}
0
26.12.2012, 22:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2012, 22:06
Помогаю со студенческими работами здесь

Ввести строку , заменить первые буквы на заглавные и вывести пословно
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { string str;...

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

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

Ввести строку. Вывести пословно вместе со счетчиком повторений этого слова.
Ввести строку. Вывести каждое слово из этой строки с количеством повторений этого слова в строке.


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

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