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

Строка: Напечатать те слова, которые отличаются только порядком следования букв.

16.01.2013, 18:38. Показов 1892. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание: Дана строка. Напечатать те слова, которые отличаются только порядком следования букв.
Помогите, пожалуйста...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.01.2013, 18:38
Ответы с готовыми решениями:

Строки: Вывести на экран только те слова, которые отличаются от последнего и в которых нет повторяющихся букв.
вводи с клавиатуры строку. Вывести на экран только те слова, которые отлчаются от последнего и в которых нет повторяющихся букв.

Строка: напечатать слова, которые удовлетворяют следующему свойству: в слове нет повторяющихся букв
Доброго времени суток. помогите написать программу в С++. Дан текст. Напечатать те слова, которые удовлетворяют следующему свойству: в...

Верно ли, что 2 массива отличаются не более, чем порядком следования членов
Даны целые числа. В массиве а n-элементов и в массиве b n-элементов. Верно ли, что эти 2 массива отличаются не более, чем порядком...

6
 Аватар для m1Rr0r
250 / 232 / 46
Регистрация: 05.02.2010
Сообщений: 3,288
19.01.2013, 14:34
разбиваешь строку с помощью strtok(), каждое полученное слово заносишь в матрицу слов. затем сортируешь матрицу согласно условию и выводишь на печать, или не сортируешь а выводишь сразу с проверкой условия.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.01.2013, 18:49
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
#include <iostream>
#include <sstream>
#include <map>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::istringstream ist(str);
    std::map<std::string, std::size_t> m;
    std::vector<std::string> v;
    std::for_each(std::istream_iterator<std::string>(ist),
        std::istream_iterator<std::string>(), [&m, &v](const std::string &s)
        {
            std::string tmp = s;
            std::sort(tmp.begin(), tmp.end());
            ++m[tmp];
            v.push_back(s);
        } );
    for(auto &x : v)
    {
        std::string tmp = x;
        std::sort(tmp.begin(), tmp.end());
        if (m[tmp] > 1)
            std::cout << x << std::endl;
    }
}
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
19.01.2013, 19:50
Цитата Сообщение от MrGluck Посмотреть сообщение
#include <iostream>
#include <sstream>
#include <map>
#include <vector>
#include <algorithm>
#include <iterator>
int main()
{
* * std::string str;
* * std::getline(std::cin, str);
* * std::istringstream ist(str);
* * std::map<std::string, std::size_t> m;
* * std::vector<std::string> v;
* * std::for_each(std::istream_iterator<std: :string>(ist),
* * * * std::istream_iterator<std::string>(), [&m, &v](const std::string &s)
* * * * {
* * * * * * std::string tmp = s;
* * * * * * std::sort(tmp.begin(), tmp.end());
* * * * * * ++m[tmp];
* * * * * * v.push_back(s);
* * * * } );
* * for(auto &x : v)
* * {
* * * * std::string tmp = x;
* * * * std::sort(tmp.begin(), tmp.end());
* * * * if (m[tmp] > 1)
* * * * * * std::cout << x << std::endl;
* * }
}

Не по теме:

Мне интересно, ты специально щёлкал ссылку на форуме, называющуюся "Со строками на C", чтобы запостить этоO_o?

0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.01.2013, 19:55
Kuzia domovenok, я сидел в разделе С++, сидел бы на С, сделал бы на С.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
19.01.2013, 19:57
Строки Си - это тоже часть языка С++. Одна из лучших частей, доставшихся в наследство ему.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.01.2013, 00:01
Kuzia domovenok, в С++ есть замечательный аналог - std::string, а char * это обременительная ноша для капабилити. Или так нравится геморой с памятью и отслеживанием выхода за границы?

Добавлено через 1 минуту
Я на первенство не претендую, написал код для интереса, ТС пусть сам решит брать его или не брать.

Добавлено через 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 <iostream>
#include <sstream>
#include <map>
#include <set>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::istringstream ist(str);
    std::map<std::multiset<char>, std::size_t> m;
    std::vector<std::string> v;
    std::for_each(std::istream_iterator<std::string>(ist),
        std::istream_iterator<std::string>(), [&m, &v](const std::string &s)
        {
            ++m[ std::multiset<char>(s.begin(), s.end()) ];
            v.push_back(s);
        } );
    std::copy_if(v.begin(), v.end(), std::ostream_iterator<std::string>
        (std::cout, "\n"), [&m](const std::string &s)
        { return m[ std::multiset<char>(s.begin(), s.end()) ] > 1; } );
}
Добавлено через 3 часа 50 минут
На чистых Сях:
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
/*Напечатать те слова, которые отличаются только порядком следования букв. */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int compare (const void *, const void *);
int equalChars(char **, const size_t, const char *);
    
int main(void)
{
    char str[256], **words = NULL, **sortWords = NULL, *p = NULL;
    size_t i, len, numWords = 1;
    if (fgets(str, sizeof(str), stdin) == NULL || strlen(str) == 1)
        return 1;
    len = strlen(str);
    str[len - 1] = '\0';
    for (i=0; i < len; i++)
        if (str[i] == ' ')
            numWords++;
    if ((words     = (char **)malloc (sizeof(char *) * numWords)) == NULL ||
        (sortWords = (char **)malloc (sizeof(char *) * numWords)) == NULL)
        return 2;
    i = 0;
    for (p = strtok(str, " "); p != NULL; p = strtok(NULL, " "))
    {
        if ((words[i]     = strdup(p)) == NULL || 
            (sortWords[i] = strdup(p)) == NULL)
            return 3;
        qsort(sortWords[i], strlen(sortWords[i]), sizeof(char), compare);
        i++;
    }
    
    for (i = 0; i < numWords; i++)
        if (equalChars(sortWords, numWords, words[i]))
            printf("%s\n", words[i]);
    
    for (i = 0; i < numWords; i++)
    {
        free(words[i]);
        free(sortWords[i]);
    }
    free(words);
    free(sortWords);
    free(p);
    return 0;
}
 
int compare (const void *a, const void *b)
{
    return *(char *)a - *(char *)b;
}
 
int equalChars(char **words, const size_t num, const char *word)
{
    size_t i, j;
    char *tmp = strdup(word);
    qsort(tmp, strlen(tmp), sizeof(char), compare);
    for (i=0; i < num-1; i++)
        if (strcmp(words[i], tmp) == 0)
            for (j=i+1; j < num; j++)
                if (strcmp(words[j], tmp) == 0)
                {
                    free(tmp);
                    return 1;
                }
    free(tmp);
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.01.2013, 00:01
Помогаю со студенческими работами здесь

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

Вывести те слова, которые отличаются от последнего слова и удовлетворяют условию, что в слове нет повторяющихся букв
Короче я сделал так #include &lt;stdio.h&gt; #include &lt;ctype.h&gt; #include &lt;string.h&gt; #include &lt;stdlib.h&gt; void main() { int const...

Напечатать те слова данной строки, которые отличны от последнего слова, и в слове нет повторяющихся букв
Доброго времени суток! Помогите пожалуйста решить задачу. Дана строка s, содержащая от 2 до 25 слов, в каждом из которых от 1 до 8 ...

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

Даны два слова. Напечатать только те буквы слов, которые есть только в одном из них
2.Даны два слова. Напечатать только те буквы слов, которые есть только в одном из них (в том числе повторяющиеся). Например, если ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru