Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Линка_999
0 / 0 / 0
Регистрация: 08.10.2015
Сообщений: 14
1

Ввести строку и вывести слова по алфавиту

23.09.2017, 23:56. Просмотров 279. Ответов 5
Метки нет (Все метки)

Помогите, пожалуйста. Мы только начали изучать язык С, а я очень тупая.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2017, 23:56
Ответы с готовыми решениями:

Ввести строку, вывести слова по алфавиту
Задание: Ввести строку, вывести слова по алфавиту. Прошли только условия, циклы и массивы. Если...

Ввести строку, вывести слова по алфавиту
Здравствуйте. Помогите пожалуйста написать программу которая из введенной строки выводит слова по...

Ввести строку и слово, удалить все вхождения слова и вывести строку
Доброго времени суток всем ! написал лр2 (Ввести строку и слово, удалить все вхождения слова и...

Ввести строку и слово, удалить все вхождения слова и вывести строку
Нужно написать программу только со стандартной библиотекой <stdio.h> Помогите, пожалуйста :3

Ввести строку и слово, удалить все вхождения слова и вывести строку
Написал код. Вот условие: "Ввести строку и слово, удалить все вхождения слова и вывести строку." ...

5
castorsky
1973 / 1076 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
24.09.2017, 02:05 2
Аргументация исчерпыващая. Люблю честных людей.
0
Геомеханик
806 / 609 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
24.09.2017, 14:31 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <ctype.h>
size_t count_words(const char* s);
void   sort_words(char** ws, size_t n);
int    output_abc(FILE* _out, char* s);
 
int main(void){ 
    char s[128];
    printf("Enter: ");
    fgets(s, 127, stdin);
 
    output_abc(stdout, s);
    getchar();
    return 0;
}
 
//вывод слов алфавитном порядке
int output_abc(FILE* _out, char* s){
    char*  p;
    char** ws;
    size_t i, n = count_words(s);
 
    if(!n)
        return 0;
 
    if((ws = (char**)malloc(n * sizeof(char*))) == NULL)
        return 0;
 
    i = 0;
    while(*s){
        while(isspace(*s))
            ++s;
 
        p = s;
        while(*p && !isspace(*p))
            ++p;
 
        if(p != s){
            if(*p)
                *p++ = '\0';
            ws[i++] = s;
        }
        s = p;
    }
 
    //сортируем
    sort_words(ws, n);
    for(i = 0; i < n; ++i)
        fprintf(_out, "%s\n", ws[i]);
    free(ws);
    return 1;
}
 
//кол-во слов
size_t count_words(const char* s){
    size_t w = 0, n = 0;
    do {
        if(*s && !isspace(*s))
            w = 1;
        else if(w){
            ++n;
            w = 0;
        }
    } while(*s++ != '\0');
    return n;
}
 
//сортируем выборочной сортировкой
void sort_words(char** ws, size_t n){
    char*  w;
    size_t i, j, p;
    for(i = 0; i < n; ++i){
        p = i;
        for(j = i + 1; j < n; ++j){
            if(strcmp(ws[j], ws[p]) < 0)
                p = j;
        }
 
        if(i != p){
            w     = ws[i];
            ws[i] = ws[p];
            ws[p] = w;
        }
    }
}
0
woldemas
452 / 322 / 176
Регистрация: 06.09.2013
Сообщений: 974
24.09.2017, 17:47 4
Линка_999,
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
int main(void)
{
    char input[1000];
    char* output[1000];
    char ch;
    size_t i = 0, e = 0, k = 0;
    while(ch = getchar()) {
        if(isspace(ch)) {
          if(i == 0 && ch != '\n') continue;
          else if(i == 0) break;
          input[e] = 0;
          int j = k - 1;
          while(j >= 0 && strcmp(output[j], input + e - i) > 0) {
            output[j + 1] = output[j];
            j--;
          }
          output[j + 1] = input + e - i;
          k++;
          if(ch == '\n') break;
          i = 0;
        } else{
            input[e] = ch;
            i++;
        }
        e++;
    }
    for(i = 0; i < k; i++) printf("%s ", output[i]);
    return 0;
}
Добавлено через 1 час 19 минут
Поправил, чтобы множественные пробелы учесть
0
CoderHuligan
773 / 554 / 203
Регистрация: 30.06.2015
Сообщений: 3,139
Записей в блоге: 28
24.09.2017, 18:42 5
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
#include <stdio.h> 
#include<stdlib.h>
#include<string.h>
#define N 256
#define DELIM " ,.\t\n"
int cmp(const void *a, const void *b)
{
    size_t *pa =(size_t*)a, *pb = (size_t*)b;
    return strcmp((char*)*pa, (char*)*pb);
}
int main(void) 
{ 
    char str[N]="my name is dima";
    char *masofadr[N], *p;
    int ln;
    int in=0;
    for ( p = strtok(str, DELIM); p!=NULL; p = strtok(NULL, DELIM), ++in)
    {
        masofadr[in]=p;
    }
    for(int i=0; i<in; ++i)printf("%s\n", masofadr[i]);
    qsort((void*)masofadr, in, sizeof(masofadr[0]), cmp);
    for(int i=0; i<in; ++i)printf("\n%s", masofadr[i]);
    return 0;
}
0
Линка_999
0 / 0 / 0
Регистрация: 08.10.2015
Сообщений: 14
24.09.2017, 21:30  [ТС] 6
Спасибо вам всем большое, огромное спасибо, вы меня спасли, спасибо

Добавлено через 1 минуту
Геомеханик, woldemas, CoderHuligan, огромное спасибо
0
24.09.2017, 21:30
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2017, 21:30

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru