0 / 0 / 4
Регистрация: 09.11.2014
Сообщений: 15
1

Вывести строку, содержащую эти же слова, разделенные одним пробелом и расположенные в алфавитном порядке

25.11.2014, 20:36. Показов 1960. Ответов 3
Метки нет (Все метки)

Прошу помощи в решении задачи.

Дана строка, состоящая из английских слов, набранных заглавными буквами и разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, разделенные одним пробелом и расположенные в алфавитном порядке.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2014, 20:36
Ответы с готовыми решениями:

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

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

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

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

3
0 / 0 / 4
Регистрация: 09.11.2014
Сообщений: 15
01.12.2014, 15:30  [ТС] 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
#include <stdio.h>
#include <string.h>
int main ()
{
    int i;
    char S[80], c;
    puts("Enter S");
    gets(S);
    for(c='a'; c<='z'; c++)
    { 
        i=1;
        while(i<strlen(S))
             {
             if(S[i-1]==' ' &&  S[i]==c)
              {  while(S[i]!=' ' && S[i]!='\0')
                {
                     printf("%c", S[i]);
                     i++;
                     }
                     puts ("\n");  }
        i++; }
    }
    getchar();
    getchar();
    return 0;
}
0
0 / 0 / 0
Регистрация: 26.03.2016
Сообщений: 2
16.04.2016, 09:53 3
не работает
0
836 / 639 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
16.04.2016, 17:43 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
74
75
76
77
78
79
80
81
82
83
#include <stdio.h>
#include <ctype.h>
static char* next_word(char* s, char** e);
static char* swap_word(char* p1, char* e1, char* p2, char* e2, char** le);
char* sort_words_abc(char* s);
 
 
int main(void){
    char s[] = "D python PHP COBOL Pascal ADA Lisp perl algol c basic APL Java";
    puts(s);
    puts( sort_words_abc(s) );
    return 0;
}
 
//сортировка слов по-алфавиту(ASCII)
char* sort_words_abc(char* s){
    char* a, *b, *f, *l, *p, *e;
 
    a = next_word(s, &b);
    if(a == NULL)
        return s;
 
    for(; *a; ){
        p = a;
        e = b;
        f = b;
        while((f = next_word(f, &l)) != NULL){
            if(toupper(f[0]) < toupper(p[0])){
                p = f;
                e = l;
            }
            f = l;
        }
 
        if(p != a)
            a = swap_word(a, b, p, e, &b);
        else {
            a = next_word(b, &b);
            if(a == NULL)
                break;
        }
    }
    return s;
}
 
//выделение слова
static char* next_word(char* s, char** e){
    char* p;
    while(*s && !isalpha(*s))
        ++s;
 
    p = s;
    while(*p && isalpha(*p))
        ++p;
 
    if(p != s){
        *e = p;
        return s;
    }
    return NULL;
}
 
//обмен слов
static char* swap_word(char* p1, char* e1, char* p2, char* e2, char** le){
    char* p, c;
    for(;p2 != e2; ++p2, ++p1, ++e1){
        for(p = p2; p > p1; --p){
            c  = *p;
            *p = *(p - 1);
            *(p - 1) = c;
        }
    }
 
    for(--e2; p1 != e1; --e1){
        for(p = p1; p < e2; ++p){
            c  = *p;
            *p = *(p + 1);
            *(p + 1) = c;
        }
    }
    *le = e1;
    return p1;
}
Пример работы кода
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2016, 17:43
Помогаю со студенческими работами здесь

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

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

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

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


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

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

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