Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/47: Рейтинг темы: голосов - 47, средняя оценка - 4.64
20 / 19 / 4
Регистрация: 22.03.2018
Сообщений: 701
.NET 4.x

Написать программу "Анаграммы"

25.01.2019, 17:11. Показов 8813. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, помогите написать программу, пожалуйста!

Написать программу «Анаграммы» (anagrams), которая реализует популярную словесную игру. Игра «Анаграммы» очень интересная и необычная игра в которой нет ни картинок ни слов. Суть игры (программы) заключается в следующем: формируется группа слов, которую можно реализовать в виде кортежа (tuple), компьютер случайным образом выбирает одно из слов и случайным образом переставляет в нём буквы, а затем представляет пользователю (игроку). Цель игрока – угадать выбранное компьютером слово.

Добавлено через 5 минут
Но сделать это с помощью процедуры.

Добавлено через 5 минут
Игра со словами. Анаграмма — это слово, в котором перепутаны буквы, например, "ШАДОЛЬ" - это "ЛОШАДЬ", а "ТИВОНКР" - это "ВТОРНИК". Программа рассчитана на двух игроков, соревнующихся друг с другом. В качестве слов используются только имена существительные, нарицательные, в единственном числе, в именительном падеже. Первый игрок вводит с клавиатуры слово длиной не менее пяти, но не более восьми букв (постарайтесь сделать так, чтобы во время ввода на экране вместо букв отображались символы *). Затем компьютер определяет длину введенного слова, разбирает его на отдельные символы, заносит их в массив, откуда случайным образом выводит на экран. Соперник в течение 2-х минут (время отсчитывает компьютер) должен определить это слово. В случае правильного ответа (вводит его с клавиатуры) он получает 1 очко и сам загадывает слово первому игроку. Игра идет до 5 очков. За неправильный ответ очки не начисляются. Безусловно, приветствуется дружественный интерфейс: запрос и обращение к игрокам по именам, вывод на экран правил игры, графическое и звуковое оформление.

Добавлено через 6 минут
Помогите исправит ошибки в данном коде на С# только с учётом того что это должно быть всё через процедуру и загрузка из файла должна быть там где хранятся наши слова анаграммы. Как мне это сделать код хотел переписать с С++ на C#?
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
using System;
using System.Collections.Generic;
 
//C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line:
//ORIGINAL LINE: #define DIFFERENCE ('A' - 'a')
private bool IsBigAlpha(char a)
{
    return (a >= 'A' && a <= 'Z');
}
private bool IsSmalAlpha(char a)
{
    return (a >= 'a' && a <= 'z');
}
private string edit(string str)
{ // приводим всё к нижнему регистру и  убираем лишние символы
    string rez = "";
    foreach (char a in str)
    {
        if (IsBigAlpha(a))
        {
            a -= DIFERENSE;
        }
        if (IsSmalAlpha(a))
        {
            rez += a;
        }
    }
    return rez;
}
private bool comp(Tuple<string, string> a, Tuple<string, string> b)
{ // сравнитель по второй строке
    return a.Item2 < b.Item2;
}
static int Main()
{
    List<Tuple<string, string>> words = new List<Tuple<string, string>>(); // словарь
    string str;
    while (str = Console.ReadLine())
    {
        Tuple<string, string> word = new Tuple<string, string>(null, null); // слово
        word.Item1 = str;
        word.Item2 = edit(str);
        sort(word.Item2.begin(), word.Item2.end()); // сортируем буквы в слове
        words.Add(word);
    }
//C++ TO C# CONVERTER TODO TASK: The 'Compare' parameter of std::sort produces a boolean value, while the .NET Comparison parameter produces a tri-state result:
//ORIGINAL LINE: sort(words.begin(), words.end(), comp);
    words.Sort(comp); // сортируем словарь по анаграммам
    List<int> indeces = new List<int>(); // массив индексов
    int Count = 0;
    int MaxCount = 0;
    int n = words.Count;
    for (int i = 1; i < n; i++)
    {
        if (words[i - 1].Item2 == words[i].Item2)
        {
            Count++;
        }
        else
        {
            if (Count > MaxCount)
            {
                MaxCount = Count;
                indeces.Clear();
                indeces.Add(i - 1);
            }
            else if (Count == MaxCount)
            {
                indeces.Add(i - 1);
            }
            Count = 0;
        }
    }
    if (Count > MaxCount)
    { // обрабатываем последний найденный набор анаграмм
                MaxCount = Count;
                indeces.Clear();
                indeces.Add(n - 1);
    }
    else if (Count == MaxCount)
    {
        indeces.Add(n - 1);
    }
    bool first = true;
    foreach (int index in indeces)
    { // выводим
        if (!first)
        {
            Console.Write("\n");
            Console.Write("---------------");
            Console.Write("\n");
        }
        else
        {
            first = false;
        }
        for (int i = 0; i <= MaxCount; i++)
        {
            if (i != 0)
            {
                Console.Write("\n");
            }
            Console.Write(words[index - i].Item1);
        }
    }
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.01.2019, 17:11
Ответы с готовыми решениями:

Написать программу Анаграммы
Нужно сформировать кортеж из 10 слов, одно из которых нужно будет угадать. Программа должна выбрать одно из слов(не выводя на экран), на...

Написать программу "Анаграммы"
В общем, программа должна содержать файл данных, содержащий имена существительные в именительном падеже. Компьютер берет из него любое...

Написать программу "Анаграммы"
Ребята, помогите написать программу! Написать программу «Анаграммы» (anagrams), которая реализует популярную словесную игру. Игра...

5
20 / 19 / 4
Регистрация: 22.03.2018
Сообщений: 701
25.01.2019, 17:18  [ТС]
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
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#define DIFFERENCE ('A' - 'a') // разность регистров
using namespace std;
bool IsBigAlpha(char a) {
    return (a >= 'A' && a <= 'Z');
}
bool IsSmalAlpha(char a) {
    return (a >= 'a' && a <= 'z');
}
string edit(const string &str) { // приводим всё к нижнему регистру и  убираем лишние символы
    string rez = "";
    for(char a : str) {
        if (IsBigAlpha(a)) a -= DIFERENSE;
        if (IsSmalAlpha(a)) rez += a;
    }
    return rez;
}
bool comp(const pair<string, string> &a, const pair<string, string> &b) { // сравнитель по второй строке
    return a.second < b.second;
}
int main() {
    vector <pair<string, string>> words; // словарь
    string str;
    while (getline(cin, str, '\n')) {
        pair<string, string> word; // слово
        word.first = str;
        word.second = edit(str);
        sort(word.second.begin(), word.second.end()); // сортируем буквы в слове
        words.push_back(word);
    }
    sort(words.begin(), words.end(), comp); // сортируем словарь по анаграммам
    vector <int> indeces; // массив индексов
    int Count = 0, MaxCount = 0, n = words.size();
    for (int i = 1; i < n; i++) {
        if (words[i-1].second == words[i].second) Count++; 
        else {
            if (Count > MaxCount) { 
                MaxCount = Count;
                indeces.clear();
                indeces.push_back(i-1);
            } else if (Count == MaxCount) indeces.push_back(i-1);
            Count = 0;
        }
    }
    if (Count > MaxCount) {  // обрабатываем последний найденный набор анаграмм
                MaxCount = Count;
                indeces.clear();
                indeces.push_back(n-1);
    } else if (Count == MaxCount) indeces.push_back(n-1);
    bool first = 1;
    for (int index : indeces) { // выводим
        if (!first) cout << endl << "---------------" << endl;
        else first = 0;
        for (int i = 0; i <= MaxCount; i++) {
            if (i != 0) cout << endl;
            cout << words[index - i].first;
        }
    }
    return 0;
}
Добавлено через 26 секунд
Ребята, помогите написать программу, пожалуйста!

Написать программу «Анаграммы» (anagrams), которая реализует популярную словесную игру. Игра «Анаграммы» очень интересная и необычная игра в которой нет ни картинок ни слов. Суть игры (программы) заключается в следующем: формируется группа слов, которую можно реализовать в виде кортежа (tuple), компьютер случайным образом выбирает одно из слов и случайным образом переставляет в нём буквы, а затем представляет пользователю (игроку). Цель игрока – угадать выбранное компьютером слово.

Добавлено через 5 минут
Но сделать это с помощью процедуры.

Добавлено через 5 минут
Игра со словами. Анаграмма — это слово, в котором перепутаны буквы, например, "ШАДОЛЬ" - это "ЛОШАДЬ", а "ТИВОНКР" - это "ВТОРНИК". Программа рассчитана на двух игроков, соревнующихся друг с другом. В качестве слов используются только имена существительные, нарицательные, в единственном числе, в именительном падеже. Первый игрок вводит с клавиатуры слово длиной не менее пяти, но не более восьми букв (постарайтесь сделать так, чтобы во время ввода на экране вместо букв отображались символы *). Затем компьютер определяет длину введенного слова, разбирает его на отдельные символы, заносит их в массив, откуда случайным образом выводит на экран. Соперник в течение 2-х минут (время отсчитывает компьютер) должен определить это слово. В случае правильного ответа (вводит его с клавиатуры) он получает 1 очко и сам загадывает слово первому игроку. Игра идет до 5 очков. За неправильный ответ очки не начисляются. Безусловно, приветствуется дружественный интерфейс: запрос и обращение к игрокам по именам, вывод на экран правил игры, графическое и звуковое оформление.

Добавлено через 6 минут
Помогите исправит ошибки в данном коде на С# только с учётом того что это должно быть всё через процедуру и загрузка из файла должна быть там где хранятся наши слова анаграммы. Как мне это сделать код хотел переписать с С++ на C#?

Добавлено через 2 минуты
То что я пробовал переписать с С++ на C# но как мне теперь исправить ошибки мои в коде и сделать это всё через
процедуру ?
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
using System;
using System.Collections.Generic;
 
private bool IsBigAlpha(char a)
{
    return (a >= 'A' && a <= 'Z');
}
private bool IsSmalAlpha(char a)
{
    return (a >= 'a' && a <= 'z');
}
private string edit(string str)
{ // приводим всё к нижнему регистру и  убираем лишние символы
    string rez = "";
    foreach (char a in str)
    {
        if (IsBigAlpha(a))
        {
            a -= DIFERENSE;
        }
        if (IsSmalAlpha(a))
        {
            rez += a;
        }
    }
    return rez;
}
private bool comp(Tuple<string, string> a, Tuple<string, string> b)
{ // сравнительно по второй строке
    return a.Item2 < b.Item2;
}
static int Main()
{
    List<Tuple<string, string>> words = new List<Tuple<string, string>>(); // словарь
    string str;
    while (str = Console.ReadLine())
    {
        Tuple<string, string> word = new Tuple<string, string>(null, null); // слово
        word.Item1 = str;
        word.Item2 = edit(str);
        sort(word.Item2.begin(), word.Item2.end()); // сортируем буквы в слове
        words.Add(word);
    }
        sort(words.begin(), words.end(), comp);
    words.Sort(comp); // сортируем словарь по анаграммам
    List<int> indeces = new List<int>(); // массив индексов
    int Count = 0;
    int MaxCount = 0;
    int n = words.Count;
    for (int i = 1; i < n; i++)
    {
        if (words[i - 1].Item2 == words[i].Item2)
        {
            Count++;
        }
        else
        {
            if (Count > MaxCount)
            {
                MaxCount = Count;
                indeces.Clear();
                indeces.Add(i - 1);
            }
            else if (Count == MaxCount)
            {
                indeces.Add(i - 1);
            }
            Count = 0;
        }
    }
    if (Count > MaxCount)
    { // обрабатываем последний найденный набор анаграмм
                MaxCount = Count;
                indeces.Clear();
                indeces.Add(n - 1);
    }
    else if (Count == MaxCount)
    {
        indeces.Add(n - 1);
    }
    bool first = true;
    foreach (int index in indeces)
    { // выводим
        if (!first)
        {
            Console.Write("\n");
            Console.Write("---------------");
            Console.Write("\n");
        }
        else
        {
            first = false;
        }
        for (int i = 0; i <= MaxCount; i++)
        {
            if (i != 0)
            {
                Console.Write("\n");
            }
            Console.Write(words[index - i].Item1);
        }
    }
    return 0;
}
0
315 / 244 / 149
Регистрация: 03.10.2017
Сообщений: 886
Записей в блоге: 1
25.01.2019, 17:30
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
using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
 
namespace ParserBex
{
    public class Parse
    {
 
        public static string Word(string word)
        {
            Random rnd = new Random();
 
            var charArray = word.ToCharArray();
 
            for (int i = 0; i < word.Length; i++)
            {
                int j = rnd.Next(word.Length);
 
                char temp = charArray[i];
                charArray[i] = charArray[j];
                charArray[j] = temp;
            }
 
            StringBuilder str = new StringBuilder();
 
            for (int i = 0; i < charArray.Length; i++) str.Append(charArray[i]);
 
            return str.ToString();
        }
 
        public static ConsoleKeyInfo GetKey()
        {
            Console.WriteLine($"1. Играть\n" +
                    $"0. Выход");
 
            Console.Write("Выберите вариант: ");
 
            ConsoleKeyInfo console = Console.ReadKey();
 
            Console.WriteLine();
 
            return console;
        }
 
        public static void StartGame(List<string> list)
        {
            ConsoleKeyInfo console;
            Random rnd = new Random();
 
            console = GetKey();            
 
            while (console.Key != ConsoleKey.D0 && console.Key == ConsoleKey.D1)
            {
                string newWord = "";
                int index = rnd.Next(list.Count);
 
                do {
                    newWord = Word(list[index]);
                } while (newWord.Equals(list[index]));
 
 
                Console.WriteLine($"Какое слово загадано здесь -> {newWord}");
 
                string str=Console.ReadLine();
 
                if (list[index].ToLower().Equals(str.ToLower())) Console.WriteLine("Вы угадали слово");
                else Console.WriteLine("Вы не угадали слово");
 
 
                console = GetKey();
            }
 
            
        }
        
 
        public static void Main()
        {
            List<string> list = new List<string>();
 
            list.Add("Курс");
            list.Add("Кусок");
            list.Add("Лосось");
            list.Add("Бросок");
 
            StartGame(list);
        }
    }
}
0
20 / 19 / 4
Регистрация: 22.03.2018
Сообщений: 701
25.01.2019, 19:21  [ТС]
как написать такую программу как работает этот сервер только на C# только через процедуру ?
Слова Анграм будем брать из файла
https://wordhelp.ru/comb/анаграмма

Добавлено через 2 минуты
То есть что бы не я разгадывал слово а программа подбирала анаграмму к слову понимаете что я хочу реализовать на C# как это сделать по ка что не знаю

Добавлено через 33 секунды
То есть составить слова из букв

Добавлено через 37 секунд
https://wordparts.ru/anagramma/ как тут можно ли это реализовать помогите пожалуйста ?

Добавлено через 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
public static void f(string[] s)
        {
            char[] mas1, mas2;
            for (int i = 0; i < s.Length; i++)
            {
                mas1 = s[i].ToCharArray();
                Array.Sort(mas1);
                for (int j = i+1; j < s.Length; j++)
                {
                    mas2 = s[j].ToCharArray();
 
                    if (mas1.Length == mas2.Length)
                    {
                        Array.Sort(mas2);
 
                        bool temp = true;
                        int l = -1;
 
                        while (true && ++l < mas2.Length) if (mas1[l] != mas2[l]) temp = false;
 
                        if (temp)
                        {
                            Console.WriteLine(s[i]+"\t"+s[j]);
                            // делаем то, что нам нужно со словами
                            //которые находятся в s[i] и s[j]
                        }
 
                        
 
 
                    }
                    
                   
 
                }
            }
        }
Добавлено через 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
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
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
 
namespace LabWork_1
{
    class Program
    {
        static void Main(string[] args)
        {
            var filePath = "c:\\1.txt";
 
            //читаем все слова в множество
            var words = new HashSet<string>();
            var regex = new Regex(@"\w+");
            foreach (var line in File.ReadLines(filePath))
            foreach (Match m in regex.Matches(line))
                words.Add(m.Value.ToLower());
            
            //находим все анаграммы
            var anagrams = GetAnagrams(words);
 
            //записываем в выходной файл
            var outFilePath = "c:\\2.txt";
 
            using (var sw = new StreamWriter(outFilePath))
            foreach (var list in anagrams.Values)
            if (list.Count > 1)
                sw.WriteLine(string.Join(", ", list));
 
            Console.ReadKey();
        }
 
        private static Dictionary<string, List<string>> GetAnagrams(HashSet<string> words)
        {
            var res = new Dictionary<string, List<string>>();
 
            foreach(var word in words)
            {
                var key = new string(word.OrderBy(c => c).ToArray());
                List<string> list;
                if (!res.TryGetValue(key, out list))
                    list = res[key] = new List<string>();
 
                list.Add(word);
            }
 
            return res;
        }
    }
}
Добавлено через 1 минуту
Нашел какую это тему Поиск анаграмм в файле но на джаве а мне надо на c# кто сможете сделать ?

Добавлено через 11 минут
Как до делать код на C# ?
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
using System;
using System.Collections.Generic;
 
static int Main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    system("color 0A");
    setlocale(LC_ALL, "rus");
 
    List<string> words = new List<string>();
    words.Add("анх");
    words.Add("мор");
    words.Add("мро");
    words.Add("туш");
    words.Add("нора");
    words.Add("шут");
    words.Add("тор");
    words.Add("ром");
    words.Add("хан");
    words.Add("нах");
    words.Add("рано");
    words.Add("рмо");
    words.Add("омр");
    words.Add("кум");
 
    List<Tuple<uint, uint>> weights = new List<Tuple<uint, uint>>(words.Count);
    uint ind = 0u;
    foreach (var word in words)
    {
        uint sum = 0u;
        foreach (var c in word)
        {
            sum += char.ToUpper((byte)c);
        }
        weights[ind] = Tuple.Create(ind, sum);
        ++ind;
    }
 
//C++ TO C# CONVERTER TODO TASK: Lambda expressions cannot be assigned to 'var':
    var predicate = (Tuple<uint, uint> p1, Tuple<uint, uint> p2) =>
    {
        return p1.Item2 > p2.Item2;
    };
//C++ TO C# CONVERTER TODO TASK: The 'Compare' parameter of std::sort produces a boolean value, while the .NET Comparison parameter produces a tri-state result:
//ORIGINAL LINE: sort(weights.begin(), weights.end(), predicate);
    weights.Sort(predicate);
    var flag = false;
 
    for (uint u = 1u; u < words.Count; ++u)
    {
        if (weights[u - 1].Item2 == weights[u].Item2)
        {
            Console.Write(words[weights[u - 1].Item1]);
            Console.Write(" ");
            flag = true;
        }
        else if (flag)
        {
            Console.Write(words[weights[u - 1].Item1]);
            Console.Write("\n");
            flag = false;
        }
    }
    if (flag)
    {
        Console.Write(words[(*weights.rbegin()).first]);
        Console.Write("\n");
        flag = false;
    }
    Console.Write("\n");
 
    system("pause");
    return 0;
}
Добавлено через 1 минуту
Только сделать через процедуру и сделать словарь для слов
0
20 / 19 / 4
Регистрация: 22.03.2018
Сообщений: 701
25.01.2019, 20:14  [ТС]
Задается словарь. Найти с помощью процедуры в нем все анаграммы (слова, составленные из одних и тех же букв).
Анаграмма - слово анаграмма происходит от греческих слов, смысл которых можно толковать как "Новая запись". Это способ перестановки букв, в результате которого получается новое слово или сочетание слов. Сейчас анаграммами называют просто перемешивание букв составляющих исходное слово, иногда перемешивание производится с сохранением слогов, таким образом облегачая поиск исходного слова. Довольно часто анаграммы используются для получения псевдонимов, беря за базу настоящее имя. К пример имя: Дима может трансформироваться в Амид или Идам, а фамилия Орлов в Ролов, Лоров. Анаграммы можно также использовать в качестве тренировки эрудиции, разгадывая при этом незнакомые или малознакомые слова.

Наш онлайн сервис (программа), по разгадыванию анаграмм, поможет быстро найти нужное решение. Одной из особенностей сервиса является возможность составления собственной анаграммы и просмотр значений слов, ведь многие слова наверняка окажутся незнакомыми. Слова можно вводить разделяя пробелом, тогда программа их обработает все. Если необходимо составить слова из заданного набора букв (или другого слова), достаточно выбрать необходимое действие и нажать enter либо кнопку "найти". Сервис будет отличным помощником, если потребуется помощь в игре "Словоед".

Если вам необходима помощь в игре виселица, то вы можете использовать функцию подбора по маске, заменяя пропущенные буквы с помощью симола '*' или символа '_', например для слова тетрадь маска может быть такой Т**Р*Д* и т.д. сервис выдаст подходящие для данной маски слова.

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

Если вы разгадываете только анаграммы, то вам подойдет отдельная наша программа, предназначенная только для решения и составления анаграмм.
Если же вам необходимо только составлять слова из длинных слов или букв, то так же есть отдельное приложение предназначенное для составления слов из букв.
Отдельный сервис поиска слов по маске также доступен на нашем сайте.
Дополнительно для разгадывания кроссвордов и сканвордов и вообще для поиска нужного слова, на сайте появился отличный помощник кросвордиста для поиска по описанию и маске слова одновременно.
0
20 / 19 / 4
Регистрация: 22.03.2018
Сообщений: 701
25.01.2019, 20:29  [ТС]
Анаграммы (составление слов из букв )

Добавлено через 5 минут
Как сделать точно так же только что бы она программа проверяла количество букв то и есть я имею виду если в слове 5 букв то 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
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
using System;
using System.IO;
using System.Linq;
 
namespace Words
{
    class Program
    {
        
         static void Main() 
         {
            
            var result = new string[] {};
            Console.Write("Введите слово: ");
            string word = Console.ReadLine();
            char[] arrWordChar = StringToCharArray(word); // user_word in char[]
            string[] line = File.ReadAllLines(@"vocabulary.txt"); //считали все строки словаря
            int countWords = 0;
             
             for (int i = 0; i <= 47611; i++) 
            {
                char[] arrWordCharFileLine = StringToCharArray(line[i]); // преобразуем текущую строку в char[]
                
                 char[] intersectedArr = arrWordCharFileLine.Intersect(arrWordChar).ToArray(); // находим зону пересечения массивов без учета дублирования элементов
                 char[] duplicationLetters = arrWordCharFileLine.Distinct().ToArray(); // вычисляем кол-во уникальных эл-тов в оригинальном слове
                 if (intersectedArr.Length + arrWordCharFileLine.Length - duplicationLetters.Length == arrWordCharFileLine.Length) 
                
                { //проверяем полное пересечение массивов
                    countWords++;
                    Array.Resize(ref result, countWords+1);
                    result[countWords] = line[i];
                }
            }
            foreach (var t in result)
            {
                Console.WriteLine(t);
            }
             Console.WriteLine("Всего найдено слов :" + countWords);
             Console.ReadLine();
 
        }
         
        public static char[] StringToCharArray(string word)
         {  // string to char[]
             var arrWordChar = new char[word.Length];
             for (var i = 0; i < word.Length; i++)
             {
                 arrWordChar[i] = word[i];
             }
             return arrWordChar;
         } 
 
    }
}
Добавлено через 45 минут
То есть имеется виду сделать проверку на длину текста если я вёл 5 букв то только из пяти букв у нас и получится анаграммы помогите пожалуйста мне
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.01.2019, 20:29
Помогаю со студенческими работами здесь

Написать программу "Анаграммы"
Ребята, помогите написать программу, пожалуйста! Написать программу «Анаграммы» (anagrams), которая реализует популярную словесную...

Написать скрипт, составляющий анаграммы
И снова всем хай :) Такова задача: Два массива. В одном анаграммы, в другом нормальные слова. Изначально распределить по массивам. ...

Написать функцию использующую рекурсию, которая выводит все анаграммы
Написать функцию использующую рекурсию, которая выводит все анаграммы слова «RECURSION». Написать программу которая выводит все анаграммы...

Составьте программу, которая находит все анаграммы в данном наборе слов и подсчитывает их число.
Одно слово является анаграммой другого, если оно может быть получено перестановкой всех букв данного(КОЛОС=СОКОЛ). Составьте программу,...

1. Написать программу работы с условным оператором if в соответствии с номером своего варианта (Таблица 5.1). 2. Написать программу с использованием о
1. Написать программу работы с условным оператором if 2. Написать программу с использованием оператора switch Написать программу...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru