Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 25.08.2017
Сообщений: 1
1

Упорядочить по алфавиту буквы каждого слова и удалить слова, содержащие одинаковые буквы

25.08.2017, 19:35. Показов 835. Ответов 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <stdio.h>
#include <stdlib.h>
 
typedef struct text { char *word; int ser; } *mass_str;
 
int strcmp(char*s, char*t)
{
    while (*s++ == *t++)
            if (*s == '\0')
                return 0;
        return(s - t);
}
 
int series(char* word)
{
    int i = 0, j = 1, max = 1;
    while (word[i] != '\0')
    {
        if (word[i] == word[i + 1]) j++;
        else if (j>max)
        {
            max = j;
            j = 1;
        }
        i++;
    }
    return(max);
}
 
void sort_mass(mass_str set, int len)
{
    int i, j;
    text m;
    for (j = 0; j<len; j++)
    {
    
        for (i = 0; i<len - 1; i++)
            if (set[i].ser>set[i + 1].ser)
            {
                m = set[i];
                set[i] = set[i + 1];
                set[i + 1] = m;
            }
    }
 
 
 
}
 
int get_word(size_t *n, char **buf)
{
    size_t i = 0;
    char c = getchar();
    while ((c != EOF) && (c <= ' ')) c = getchar();
    
        while (c > ' ')
        {
            (*buf)[i++] = c;
            c = getchar();
            if (i == *n)
            {
                *n = *n / 2 + *n;
                (*buf) = (char *)realloc(*buf, *n * sizeof(char));
            
        }
    }
    (*buf)[i] = '\0';
        return(i);
}
 
void get_text(size_t* m, size_t* n, mass_str set)
{
    size_t j = 0, k = 0;
    
    char *buf = (char*)calloc(*n, sizeof(char));
 
    size_t i = get_word(n, &buf);
    while (i) 
    {
        int c = 1, l = 0;
        set[k].word = (char*)calloc(*n, sizeof(char));
        while ((l<k)&&c)c = strcmp(buf, set[l++].word);
        if (c)
        {
            int z = 0;
            while (set[k].word[z] = buf[z])z++;
            k++;
        }
        i = get_word(n, &buf);
        if (*m == k)
        {
            *m = *m + *m / 2;
            set = (struct text*)realloc(set, *m * sizeof(text));
        }
    }
    free(buf);
    
    *m = k;
 
}
 
int main()
{
    size_t n=5;
    size_t m=5;
    mass_str set = (struct text*) malloc(m * sizeof(text));
    get_text(&m, &n,set);
    for (int i = 0; i<m; i++) (set[i].ser=series(set[i].word));
    sort_mass(set, m);
    for (int i = 0; i < m; i++) puts(set[i].word);
}
Сколько не вводи значения, программа просит больше, и так до бесконечности.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2017, 19:35
Ответы с готовыми решениями:

Упорядочить по алфавиту буквы каждого слова в предложении
Вводится предложение.Необходимо упорядочить буквы в словах по алфавиту и удалить слова, содержащие...

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

Упорядочить по алфавиту буквы слова
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных...

Найти все слова, содержащие три одинаковые буквы
Задачка из контрольной: В тексте слова отделены пробелами. Найти все слова, содержащие три...

3
5 / 5 / 2
Регистрация: 07.04.2016
Сообщений: 88
26.08.2017, 13:33 2
пРИВЕДИ ПРИМЕРИ РАБОТИ ПРОГРАММИ
0
1481 / 945 / 811
Регистрация: 30.04.2016
Сообщений: 3,304
26.08.2017, 18:33 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
#include <bits/stdc++.h>
 
using namespace std;
 
bool TheSameLetters(string str)
{
    sort(str.begin(), str.end());
    for (int i = 0; str[i]; i++)
        if (str[i] == str[i+1])
        {
            return true;
            break;
        }
    return false;
}
 
int main()
{
    string s = { "I have been pleased to help you" };
    string word;
    stringstream str(s);
    cout << "Output string:" << endl;
    while (str >> word)
    {
        if (!TheSameLetters(word))
        {
            sort(word.begin(), word.end());
            cout << word << " ";
        }
    }
    cout << endl;
    system("pause");
    return 0;
}
0
Модератор
Эксперт С++
11323 / 9299 / 5579
Регистрация: 18.12.2011
Сообщений: 24,806
26.08.2017, 19:50 4
Fixer_84,
C++
1
2
3
4
5
6
7
8
9
10
bool TheSameLetters(string str)
{
    sort(str.begin(), str.end());
    for (int i = 0; i<str.size()-1; i++) // на 1 меньше
        if (str[i] != str[i+1])
        {
            return false; // как только встретили разные буквы
        }
    return true; // не встретились
}
C++
1
2
3
4
bool TheSameLetters(string str)
{
    return count(str.begin(), str.end(),str[0])==str.size();
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2017, 19:50

Макрос для LibreOffice: заменять все буквы каждого пятого слова на вторые буквы следующего слова за ним
Здравсвуйте! Нужен макрос для LibreOffice, который будет заменять все буквы каждого 5-го слова на...

Даны три слова.Напечатать их общие буквы. Повторяющиеся буквы каждого слова не рассматривать.
1 - Строки. Даны три слова.Напечатать их общие буквы. Повторяющиеся буквы каждого слова не...

Даны три слова. Напечатать их общие буквы. Повторяющиеся буквы каждого слова не рассматривать
Даны три слова. Напечатать их общие буквы. Повторяющиеся буквы каждого слова не рассматривать.

Даны три слова. Напечатать их общие буквы. Повторяющиеся буквы каждого слова не рассматривать
Даны три слова. Напечатать их общие буквы. Повторяющиеся буквы каждого слова не рассматривать . ...


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

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

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