0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 17
1

Даны строки S1, S2 и символ C. Перед (после) каждого вхождения символа C в строку S1 вставить строку S2

03.01.2013, 20:52. Показов 6217. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток! Нужна помощь в редактировании небольшого сегмента кода.
Нужно переделать данную программу:
1. С использование StringBuilder
2. С использованием Char

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication10
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Введите строку S1: ");
            String s1 = Console.ReadLine();
            Console.Write("Введите строку S2: ");
            String s2 = Console.ReadLine();
            Console.Write("Введите символ для поиска: ");
            String c = Console.ReadLine();
            int count = s1.Length;
            int pos;
 
            while ((pos = s1.LastIndexOf(c, count, count)) != -1)
            {
                s1 = s1.Insert(pos + 1, s2); // Вставляем после найденного символа. 
                //s1 = s1.Insert(pos, s2); // Вставляем перед найденным символом
                count = pos - 1;
            }
 
            Console.WriteLine("Полученная строка: " + s1);
            Console.ReadLine();
        }
    }
}
Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.01.2013, 20:52
Ответы с готовыми решениями:

Даны строки S1, S2 и символ C. Перед (после) каждого вхождения символа C в строку S1 вставить строку S2
Даны строки S1, S2 и символ C. Перед (после) каждого вхождения символа C в строку S1 вставить...

Строки. Перед (после) каждого вхождения символа C в строку S1 вставить строку S2
Даны строки S1, S2 и символ C. Перед (после) каждого вхождения символа C в строку S1 вставить...

Перед (после) каждого вхождения символа C в строку S1 вставить строку S2
Даны строки S1, S2 и символ C. Перед (после) каждого вхождения символа C в строку S1 вставить...

Перед каждого вхождения символа C в строку S1 вставить строку S2
using System; namespace ConsoleApplication1 { class Class1 { static void Main() { int a =...

2
284 / 255 / 73
Регистрация: 17.07.2012
Сообщений: 618
03.01.2013, 21:51 2
Честно говоря, для чего тут использовать Char ума не приложу...хотя нет, ну если ты вводишь стринг(тот символ) , то можно его преобразовать в Чар Char.Parse(string) , больше оно тут не нужен.

C#
1
2
3
4
5
6
StringBuilder str = new StringBuilder("ffffffaffffaffaffaff");
            string strA = "123";
            for (int i = 0; i <str.Length; i++)
                if (str[i] == 'a')
                    str.Insert(i + 1, strA);
            Console.WriteLine(str);
0
0 / 0 / 1
Регистрация: 04.01.2013
Сообщений: 8
04.01.2013, 19:10 3
Не понятен вопрос. Нужно решить данную задачу двумя способами, либо одним, но чтобы в коде присутствовала реализация классов StringBuilder и Char?

Добавлено через 2 часа 36 минут
Реализация Char здесь только в одном случае, ну а StringBuilder здесь как кстати.

Объект String является неизменяемым. При каждом использовании методов класса String в памяти создается новый объект строки, для которого необходимо выделение нового места. В ситуациях, когда необходимо выполнять многократные изменения строки, дополнительные издержки, связанные с созданием новых объектов String, могут быть весьма значительными. Класс StringBuilder может использоваться при необходимости изменения строки без создания нового объекта. Например, использование класса StringBuilder может повысить производительность при соединении большого количества строк в цикле, что и есть в данном примере.

Вообщем-то вот моя реализация...

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите первую строку:");
            StringBuilder s1 = new StringBuilder(Console.ReadLine());
 
            Console.WriteLine("Введите вторую строку:");
            StringBuilder s2 = new StringBuilder(Console.ReadLine());
 
            Console.WriteLine("Введите символ для поиска:");
            Char c = Char.Parse(Console.ReadLine());
 
            int count = s1.Length;
        
            for (int i = 0; i < count; i++) 
            {
                if (s1[i] == c)
                {
                    s1.Insert(i, s2); //Вставка строки s2 перед символом
                    s1.Insert((s2.Length + i + 1), s2); //Вставка строки s2 после символа
                    i += s2.Length; //Cчетчик перекидываем в конец второй вставки строки
                    count += 2 * s2.Length; //Устанавливаем новую длину строки s1
                }
            }
            Console.WriteLine("Полученная строка: {0}", s1);
            Console.ReadLine();
        }
    }
}
0
04.01.2013, 19:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.01.2013, 19:10
Помогаю со студенческими работами здесь

Дан символ C и строки S, S0. Перед каждым вхождением символа C в строку S вставить строку S0
Дан символ C и строки S, S0. Перед каждым вхождением символа C в строку S вставить строку S0.

Вставить символ x после каждого вхождения символа y
I. Разработать программу, которая для заданной строки s: • вставляет символ x после каждого...

Вставить в строку пробел после каждого символа
Дана строка. Вставить после каждого символа пробел.

Разработать программу, которая вставляет символ x после каждого вхождения символа y и заменяет часть строки
Разработать программу, которая для заданной строки s: 1. вставляет символ x после каждого...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru