Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 2

Задача на перестановку литер строки. Что можно исправить?

10.01.2018, 16:00. Показов 3659. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
9. Пусть даны две строки str1 и str2. Необходимо выяснить, можно ли из str1 путём перестановки литер получить строку str2. Напишите подпрограмму, которая решала бы указанную задачу. Как можно сделать эту задачу без ремувов и инсертов. "прямо в лоб"

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
static void Main(string[] args)
 
        {
 
            Console.WriteLine("Введите строку str1:");
 
            string str1 = Console.ReadLine();
 
            Console.WriteLine("Введите строку str2:");
 
            string str2 = Console.ReadLine();                      
 
            bool check = (str1.Length == str2.Length);
 
            Console.WriteLine("Длины строк равны, начинаем подбирать перестановку");
 
            
 
            int k = 0;
 
            while (check == true && str1 != str2)
 
            {                
 
                char ch = str2[k];
                
                int p = -1;
 
                for (int i = k; i < str1.Length; i++)
 
                    if (str1[i] == ch)
 
                        p = i;             
 
                if (p == -1)
 
                    check = false;
 
                else
 
                {
 
                    char ch2 = str1[k];
 
                    Console.WriteLine(" Выполним перестановку символов {0} (номер {1}) и {2} (номер {3}). Строка str1: ", ch, k + 1, ch2, p + 1);
 
                    str1 = str1.Remove(p, 1).Insert(p, ch2.ToString());
 
                    str1 = str1.Remove(k, 1).Insert(k, ch.ToString());
 
                    Console.WriteLine(str1);
 
                }
 
                k++;
 
                if (k >= str2.Length)
 
                    check = false;
 
            }
 
            if (check == true)
 
                Console.WriteLine("Можно из str1 путём перестановки литер получить строку str2");
 
            else
 
                Console.WriteLine("Нельзя из str1 путём перестановки литер получить строку str2");
 
            Console.ReadKey();
 
        }
 
    }
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.01.2018, 16:00
Ответы с готовыми решениями:

Строки. Выясните, Можно ли из первой строки путём перстановки литер получить вторую
Добрый день. У меня проблема с такой программой: &quot;Пусть даны две строки str1 и str2. Выясните, можно ли из str1 путём перстановки литер...

Написать и протестировать функцию, которая осуществляет перестановку в строке Str литер в обратном порядке
Помогите пожалуйста написать и протестировать функцию. Функция осуществляет перестановку в строке Str литер в обратном порядке....

Можно ли из исходной строки путём перестановки литер получить вторую строку?
3.Пусть даны две строки str1 и str2. Необходимо выяснить, можно ли из str1 путём перестановки литер получить строку str2. Напишите...

5
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
10.01.2018, 16:10
Цитата Сообщение от Андрей Тонких 1 Посмотреть сообщение
Необходимо выяснить, можно ли из str1 путём перестановки литер получить строку str2.
C#
1
2
3
4
5
6
7
8
9
10
            Console.WriteLine("Введите строку str1:");
            string str1 = Console.ReadLine();
            Console.WriteLine("Введите строку str2:");
            string str2 = Console.ReadLine();
            var c1 = str1.ToCharArray();
            var c2 = str2.ToCharArray();
            Array.Sort(c1);
            Array.Sort(c2);
            Console.WriteLine(new String(c1).Equals(new String(c2)));
            Console.ReadKey();
2
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 2
13.01.2018, 19:49  [ТС]
9. Пусть даны две строки str1 и str2. Необходимо выяснить, можно ли из str1 путём перестановки литер получить строку str2. Напишите подпрограмму, которая решала бы указанную задачу. нужно решить без ремувов, эраев и других подобных методов. Как реализовать алгоритм самому?
0
 Аватар для wmysterio
295 / 244 / 128
Регистрация: 24.12.2014
Сообщений: 708
13.01.2018, 20:16
Думаю, методом подсчёта букв можно решить задачу.
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
public static Dictionary ReadSymbol( string chars ) {
    var dict = new Dictionary<char,int>();
    for( int i = 0; i < chars.Lenght; i++ ) {
        if( dict.ContainsKey( chars[ i ] ) ) {
             dict[ chars[ i ] ]++;
        } else {
             dict.Add( chars[ i ], 1 );
        }
    }
    return dict;
}
 
public static bool CheckStr( Dictionary<char,int> left, Dictionary<char,int> right ) {
    if( right.Count > left.Count  )
        return false;
    foreach( var elem in right ) {
        if( !left.ContainsKey( elem.Key ) )
            return false;
        elem.Value > left[ elem.Key ]
            return false;
    }
    return true;
}
 
//------------------------
static void Main(string[] args) {
 
string str1 = "";
string str2 = "";
 
do {
    Console.WriteLine( "Введите строку str1:" );
    str1 = Console.ReadLine();
    Console.WriteLine( "Введите строку str2:" );
    str2 = Console.ReadLine();
} while( str1.Length == str2.Length );
 
if( CheckStr( ReadSymbol( str1 ), ReadSymbol( str2 ) ) ) {
    Console.WriteLine("Можно из str1 путём перестановки литер получить строку str2");
} else {
    Console.WriteLine("Нельзя из str1 путём перестановки литер получить строку str2");
}
 
Console.ReadKey();
}
Как-то так. Как-то так. В любом случае нужно искать существующую букву и их количество. Если буквы нет или их количество меньше за количество букв в строке 2, то слово нельзя собрать.
0
338 / 327 / 154
Регистрация: 29.10.2012
Сообщений: 949
13.01.2018, 20:23
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
string str1 = "Тут текст";
string str2 = "Текст тут";
 
char[] ch1 = str1.ToLower().ToCharArray();
char[] ch2 = str2.ToLower().ToCharArray();
 
Array.Sort(ch1);
Array.Sort(ch2);
 
bool flag = false;
for (int i = 0; i < ch1.Length; i++)
    if (ch1[i] != (ch2[i]))
    {
        flag = true;
        break;
    }
if (!flag)
    Console.Write("Да");
else
    Console.Write("Нет");
0
1524 / 515 / 126
Регистрация: 09.01.2018
Сообщений: 1,614
13.01.2018, 23:35
Андрей Тонких 1,
Из первого слова составить другое слово
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.01.2018, 23:35
Помогаю со студенческими работами здесь

Что можно исправить и что добавить
//(|x|-|y|): (1+|xy|); #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; int main() { setlocale(0, &quot;&quot;); int...

Задача на перестановку
Мистер Фокс хочет переставить буквы в строке УМНЫЙЛИС так, что если вычеркнуть буквы У, М, Н, Ы, Й, то оставшиеся буквы образуют слово ЛИС,...

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

Задача на перестановку цифр
ничего не понимаю помогите пожалуйста Дано трехзначное число, в котором все цифры различны. Получить шесть чисел, образованных при...

Задача на перестановку цифр
Помогите разобрать кусок программы.Задача на перестановку цифр типа стринг для получения наибольшего числа. Program balance; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru