Т4. Задачи на обработку строк с использованием операторов цикла с условием

Напишите в комментариях к этой записи консольные приложения для решения этих задач, укажите также код задачи.
Решены задачи 1. Не решены: 2-15.

Задачи

Т4.1. Дано предложение. Напечатать все его символы, предшествующие первой запятой. Рассмотреть два случая:
1) известно, что в предложении запятые имеются;
2) в предложении запятых может не быть.
Т4.2. Дано предложение, в котором имеется несколько букв е. Найти:
а) порядковый номер первой из них;
б) порядковый номер последней из них.
Т4.3. Дано предложение. Определить, есть ли буква а в нем. В случае положительного ответа найти также порядковый номер первой из них.
Т4.4. Дано слово. Проверить, является ли оно «перевертышем» (перевертышем называется слово, читаемое одинаково как с начала, так и с конца).
Т4.5. Дан текст. Определить количество букв и в первом предложении. Рассмотреть два случая:
1) известно, что буквы и в этом предложении есть;
2) букв и в тексте может не быть.
Т4.6. Дана последовательность символов, в начале которой имеется некоторое количество одинаковых символов. Определить это количество. Рассмотреть два случая:
1) известно, что не все символы последовательности одинаковые;
2) все символы последовательности могут быть одинаковыми.
Т4.7. Даны два слова. Определить, сколько начальных букв первого слова совпадает с начальными буквами второго слова. Рассмотреть два случая:
1) известно, что слова разные;
2) слова могут быть одинаковыми.
Т4.8. Дано предложение, в котором нет символа «-«. Определить количество букв о в первом слове. Учесть, что в начале предложения могут быть пробелы.
Т4.9. Дано предложение. Определить количество букв н, предшествующих первой запятой предложения. Рассмотреть два случая:
1) известно, что запятые в предложении есть;
2) запятых в предложении может не быть.
Т4.10. Дано предложение. Определить порядковые номера первой пары одинаковых соседних символов. Если таких символов нет, то должно быть напечатано соответствующее сообщение.
Т4.11. Дано предложение. Определить, есть ли в нем буквосочетания чу или щу.
В случае положительного ответа найти также порядковый номер первой буквы первого из них.
Т4.12. Дана последовательность слов. Проверить, правильно ли в ней записаны буквосочетания жи и ши.
Т4.13. Дана последовательность слов. Проверить, правильно ли в ней записаны буквосочетания ча и ща. Исправить ошибки.
Т4.14. Дано предложение. Напечатать все символы, расположенные между первой и второй запятой. Если второй запятой нет, то должны быть напечатаны все символы, расположенные после единственной имеющейся запятой.
Т4.15. Дано предложение, в котором имеются одна буква с и одна буква Т. Определить, какая из них встречается раньше (при просмотре слова слева направо).


NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.


Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о

34 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Т4. Задачи на обработку строк с использованием операторов цикла с условием

using System;
//Т4. Задачи на обработку строк с использованием операторов цикла с условием
namespace T4
{
    class Program
    {
        static string Input(string Name)
        {
            Console.WriteLine($"Введите {Name}:");
            string S = Console.ReadLine();
            return S;
        }
        static void Clear()
        {
            Console.ReadKey();
            Console.Clear();
        }
        static void Main()
        {
            //T4.1
            Console.WriteLine("Т4.1. Дано предложение. Напечатать все его символы, предшествующие первой запятой. Рассмотреть два случая:\n1) известно, что в предложении запятые имеются;\n2) в предложении запятых может не быть.");
            string S1text = Input("текст");
            int a = 0;
            while (S1text[a] != ',')
            {
                Console.Write(S1text[a]);
                a++;
                if (a == S1text.Length)
                    break;
            }
            Clear();
            //T4.2
            Console.WriteLine("Т4.2. Дано предложение, в котором имеется несколько букв е. Найти:\nа) порядковый номер первой из них;\nб) порядковый номер последней из них.");
            string S2text = Input("предложение");
            int N2eFirst = S2text.IndexOf('е') + 1;
            int N2eLast = S2text.LastIndexOf('е') + 1;
            Console.WriteLine(N2eFirst + "\n" + N2eLast);
            Clear();
            //T4.3
            Console.WriteLine("Т4.3. Дано предложение. Определить, есть ли буква а в нем. В случае положительного ответа найти также порядковый номер первой из них.");
            string S3text = Input("предложение");
            int N3aIndex = S3text.IndexOf('а') + 1;
            if (N3aIndex == 0)
                Console.WriteLine("Буквы А в тексте нет");
            else
                Console.WriteLine(N3aIndex);
            Clear();
            //T4.4
            Console.WriteLine("Т4.4. Дано слово. Проверить, является ли оно «перевертышем» (перевертышем называется слово, читаемое одинаково как с начала, так и с конца).");
            string S4word = Input("слово");
            bool B4palindrom = true;
            int N4letter = 0;
            while (N4letter <= S4word.Length / 2)
            {
                if (S4word[N4letter] != S4word[S4word.Length - 1 - N4letter])
                    B4palindrom = false;
                N4letter++;
            }
            Console.WriteLine(B4palindrom ?
                "Это слово палиндром" :
                "Это слово НЕ палиндром");
            Clear();
            //T4.5
            Console.WriteLine("Т4.5. Дан текст. Определить количество букв и в первом предложении. Рассмотреть два случая:\n1) известно, что буквы и в этом предложении есть;\n2) букв и в тексте может не быть.");
            string S5text = Input("текст");
            int N5iCount = 0;
            int N5symbol = 0;
            while (S5text[N5symbol]!='.')
            {
                if (S5text[N5symbol] == 'и' || S5text[N5symbol] == 'И')
                    N5iCount++;
                N5symbol++;
            }
            Console.WriteLine(N5iCount);
            Clear();
            //T4.6
            Console.WriteLine("Т4.6. Дана последовательность символов, в начале которой имеется некоторое количество одинаковых символов. Определить это количество. Рассмотреть два случая:\n1) известно, что не все символы последовательности одинаковые;\n2) все символы последовательности могут быть одинаковыми.");
            string S6text = Input("текст");
            int N6count = 0;
            while (N6count < S6text.Length && S6text[N6count] == S6text[0])
            {
                N6count++;
            }
            Console.WriteLine(N6count);
            Clear();
            //T4.7
            Console.WriteLine("Т4.7. Даны два слова. Определить, сколько начальных букв первого слова совпадает с начальными буквами второго слова. Рассмотреть два случая:/n1) известно, что слова разные;/n2) слова могут быть одинаковыми.");
            string S7words = Input("два слова");
            string S7word1 = S7words.Split(new char[] { ' ' })[0];
            string S7word2 = S7words.Split(new char[] { ' ' })[1];
            int N7count = 0;
            while (N7count < Math.Min(S7word1.Length, S7word2.Length) && S7word1[N7count] == S7word2[N7count])
            {
                N7count++;
            }
            Console.WriteLine(N7count);
            Clear();
            //T4.8
            Console.WriteLine("Т4.8. Дано предложение, в котором нет символа «-«. Определить количество букв о в первом слове. Учесть, что в начале предложения могут быть пробелы.");
            string S8text = Input("текст");
            S8text = S8text.Trim();
            int N8countO = 0;
            int N8char = 0;
            while (S8text[N8char] != ' ')
            {
                if (S8text[N8char] == 'о' || S8text[N8char] == 'О')
                    N8countO++;
                N8char++;
            }
            Console.WriteLine(N8countO);
            Clear();
            //T4.9
            Console.WriteLine("Т4.9. Дано предложение. Определить количество букв н, предшествующих первой запятой предложения. Рассмотреть два случая:\n1) известно, что запятые в предложении есть;\n2) запятых в предложении может не быть.");
            string S9text = Input("предложение");
            int N9countN = 0;
            int N9char = 0;
            while (N9char < S9text.Length && S9text[N9char] != ',')
            {
                if (S9text[N9char] == 'н' || S9text[N9char] == 'Н')
                    N9countN++;
                N9char++;
            }
            Console.WriteLine(N9countN);
            Clear();
            //T4.10
            Console.WriteLine("Т4.10. Дано предложение. Определить порядковые номера первой пары одинаковых соседних символов. Если таких символов нет, то должно быть напечатано соответствующее сообщение.");
            string S10text = Input("предложение");
            int N10similar = 0;
            while (N10similar < S10text.Length - 1 && S10text[N10similar] != S10text[N10similar + 1])
            {
                N10similar++;
            }
            Console.WriteLine(N10similar == S10text.Length-1 ?
                "В тексте нет двух соседних одинаковых символов" :
                N10similar + " " + (N10similar+1));
            Clear();
            //T4.11
            Console.WriteLine("Т4.11. Дано предложение. Определить, есть ли в нем буквосочетания чу или щу. В случае положительного ответа найти также порядковый номер первой буквы первого из них.");
            string S11text = Input("предложение");
            int N11chu = S11text.IndexOf("чу") + 1;
            int N11shu = S11text.IndexOf("щу") + 1;
            Console.WriteLine(N11chu < N11shu ?
                N11chu :
                N11shu);
            Clear();
            //T4.12
            Console.WriteLine("Т4.12. Дана последовательность слов. Проверить, правильно ли в ней записаны буквосочетания жи и ши.");
            string S12 = Input("слова");
            int N12ji = S12.IndexOf("жы");
            int N12shi = S12.IndexOf("шы");
            Console.WriteLine(N12ji== -1 && N12shi == -1 ?
                "Ошибок ЖИ ШИ в словах нет.":
                "Есть ошибки ЖИ ШИ!");
            Clear();
            //T4.13
            Console.WriteLine("Т4.13. Дана последовательность слов. Проверить, правильно ли в ней записаны буквосочетания ча и ща. Исправить ошибки.");
            string S13 = Input("слова");
            bool B13error = false;
            while (S13.IndexOf("чя") != -1 || S13.IndexOf("щя") != -1)
            {
                int mistakeIndex = S13.IndexOf("чя") + 1;
                if (S13.IndexOf("щя") > -1)
                {
                    mistakeIndex = S13.IndexOf("щя") + 1;
                }
                S13 = S13.Remove(mistakeIndex, 1);
                S13 = S13.Insert(mistakeIndex, "а");
                B13error = true;
            }
            Console.WriteLine(B13error ?
                "В тексте были ошибки ЧА ЩА. Исправлено:\n" + S13 :
                "В тексте небыло ошибок ЧА ЩА");
            Clear();
            //T4.14
            Console.WriteLine("Т4.14. Дано предложение. Напечатать все символы, расположенные между первой и второй запятой. Если второй запятой нет, то должны быть напечатаны все символы, расположенные после единственной имеющейся запятой.");
            string S14text = Input("предложение");
            int N14startIndex = S14text.IndexOf(',') + 1;
            while (N14startIndex < S14text.Length && S14text[N14startIndex] != ',')
            {
                Console.Write(S14text[N14startIndex]);
                N14startIndex++;
            }
            Clear();
            //T4.15
            Console.WriteLine("Т4.15. Дано предложение, в котором имеются одна буква с и одна буква Т. Определить, какая из них встречается раньше (при просмотре слова слева направо).");
            string S15text = Input("предложение");
            S15text = S15text.ToLower();
            int N15sIndex = S15text.IndexOf('с');
            int N15tIndex = S15text.IndexOf('т');
            Console.WriteLine(N15sIndex < N15tIndex ?
                "Буква С встречается раньше" :
                "Буква Т встречается раньше");
            Clear();
        }
    }
}

Т4.15
string? text = «Дано предложение, в котором одна буква с и одна буква Т»;
int i = 0;
do
{
  if (text[i] == ‘с’ || text[i] == ‘Т’)
  {

    break;
  }
  i++;
}
while (i > 0);
Console.WriteLine($»буква ‘{text[i]}’ встречается раньше»);

Т4.14
string? text = «Напечатать все символы, расположенные между первой, второй запятой»;
int j = 0;
int i = 0;
int q = 0;
string words = » «;
do
{
  if (text[i] == ‘,’)
  {
    q = i;
    break;
  }
  i++;
}
while (i > 0);
text = text.Remove(0, q);
do
{
  { j++; }
  if (text[j] != ‘,’)
  {
    words += text[j];
  }
  else
  {
    Console.WriteLine(words);
    break;
  }
  if (j==text.Length-1)
    Console.WriteLine(words);
}
while (j < text.Length — 1);

Последний раз редактировалось 2 лет назад Евгений ем

#4.8 Дано предложение, в котором нет символа «-«. Определить количество букв о в первом слове. Учесть, что в начале предложения могут быть пробелы.

string? text = » Даноо предложение, в котором нет символа «-«.»;
text = text.Trim();
int i = 0;
int q = 0;
do
{
  if (text[i] == ‘о’)
  {
    q++;
  }
  i++;
  if (text[i] == ‘ ‘)
  {
    Console.WriteLine($»количество букв ‘о’ в первом слове {q}»);
    break;
  }
}
while (i>0);

#4.4 Дано слово. Проверить, является ли оно «перевертышем»
<pre>
  Console.WriteLine(«Enter to word:»);
string? word = Console.ReadLine();
int i = 0;
int j = word.Length — 1;
while (i < j)
{
  if (word[i++] != word[j—])
    Console.WriteLine(«не является перевертышем»);
  else
  {
    Console.WriteLine(«является перевертышем»);
    break;
  }
}
</pre>
Как заключать текст в теги?

Последний раз редактировалось 2 лет назад Евгений ем

Т4.15. Дано предложение, в котором имеются одна буква с и одна буква Т. Определить, какая из них встречается раньше (при просмотре слова слева направо).

 static void Main(string[] args)
        {
            string str = "буква Т и буква с";
            int count = 0, numOfc = 0, numOfT = 0;
            for(int i=0; i<str.Length; i++)
            {
                count++;
                if(str[i]=='с')
                {
                    numOfc = count;
                }
                if(str[i]=='Т')
                {
                    numOfT = count;
                }
            }
            if(numOfc>numOfT)
            {
                Console.WriteLine("Буква Т встречается раньше");
            }
            else
            {
                Console.WriteLine("Буква с встречается раньше");
            }
        }

//Т4.7. Даны два слова. Определить, сколько начальных букв первого слова
//совпадает с начальными буквами второго слова. Рассмотреть два случая:
//1) известно, что слова разные;
//2) слова могут быть одинаковыми.

            Console.WriteLine("Введите  2 слова");
            string a = Console.ReadLine();
            int count = 0;
            
            int probel = a.IndexOf(' ');

            for (int i = 0; i < probel; i++)
            {
                if (a[i] == a[probel + i + 1])
                { count++; }
                else break;    
            }     
             Console.WriteLine("Совпадение букв" + " "+ count);
try
                {
                    if (a[i] == a[probel + i + 1])
                    { count++; }
                    else break;
                }
  catch
                {
                    Console.WriteLine("Второе слово короче первого : Совпадений " + count);
                    throw;
                }

Для етого и думан блок Try Catch ,
Если не хотите видеть ошибку закомментируйте throw;

Извиняюсь , не закомментировать а заменить throw на break

Как такой вариант?

string? word1 = «Moscow»;
string? word2 = «London»;
int i = 0;
int j = 0;
int num = 0;
do
{
  if (word1[i++] == word2[j++])
    Console.WriteLine(num+1); 
  else
  { }
  {num++;}
}
while (i<word1.Length/2);

Т4.5. Дан текст. Определить количество букв и в первом предложении. Рассмотреть два случая:
1) известно, что буквы и в этом предложении есть;
2) букв и в тексте может не быть.

Console.WriteLine(«Введите слово: «);
string word = Console.ReadLine();
int counterI = 0;

for (int i = 0; i < word.Length && word[i] != '.'; i++)
if (char.ToLower(word[i]) == 'и')
counterI++;

if (counterI != 0)
Console.WriteLine($@"Количество букв ""и"": {counterI}");
else
Console.WriteLine(@"Букв ""и"" не обнаружено.");

Т4.4. Дано слово. Проверить, является ли оно «перевертышем»

Console.WriteLine(«Введите слово: «);
string word = Console.ReadLine();
string not = «»;
int wordCenter = word.Length / 2;

for (int i = 0; i < wordCenter; i++)
{
int symmSymb = word.Length — i — 1;
if (char.ToLower(word[i]) != char.ToLower(word[symmSymb]))
{
not = " не"; break;
}
}
Console.WriteLine($"Слово {word} -{not} перевёртыш.");

Алгоритм проходится по каждой букве до середины (wordCenter) и сравнивает её с противоположной буквой (symmSymb). Если сравнение «тру», то цикл продолжается, пока всё не проверит и не напишет вывод ИЛИ не нарвётся на несоответствие букв, прекратит проверку и сразу напишет вывод, добавив к нему слово «не» (not).

З.Ы. Теперь про переменную (wordCenter). Так как при делении int происходит округление в меньшую сторону (напр. 5 / 2 = 2), средняя буква в словах с НЕчётным количеством символов проверяться не будет. Но в этом всё равно нет нужды, т.к. сравниваться она будет сама с собой, и чего бы она не значила, симметрия не нарушится )

Console.WriteLine(«Enter to word:»);
string? word = Console.ReadLine();
int i = 0;
int j = word.Length — 1;
while (i < j)
{
  if (word[i++] != word[j—])
    Console.WriteLine(«не является перевертышем»);
  else
  {
    Console.WriteLine(«является перевертышем»);
    break;
  }
}

Последний раз редактировалось 2 лет назад Евгений ем

Т4.2. Дано предложение, в котором имеется несколько букв е. Найти:
а) порядковый номер первой из них;
б) порядковый номер последней из них.

Console.WriteLine(«Введите текст: «);
string txt = Console.ReadLine();
int fistYe = 0;

for (int i = 0; i = 0; j—)
if (char.ToLower(txt[j]) == ‘е’)
{
int lastYe = j + 1;
Console.WriteLine($@»Номер первой буквы «»е»»: {fistYe}»);
Console.WriteLine($@»Номер последней буквы «»е»»: {lastYe}»);
break;
}
break;
}

if (fistYe == 0)
Console.WriteLine(@»Букв «»е»» не найдено.»);

Т4.1. Дано предложение. Напечатать все его символы, предшествующие первой запятой. Рассмотреть два случая:
1) известно, что в предложении запятые имеются;
2) в предложении запятых может не быть.

Console.WriteLine(«Введите текст: «);
string txt = Console.ReadLine();
string outTxt = «»;

for (int i = 0; i < txt.Length; i++)
{
char symb = txt[i];
if (symb != ',')
outTxt += symb;
else
{
Console.WriteLine(outTxt); break;
}

if (i == txt.Length — 1)
Console.WriteLine("Запятых не обнаружено.");
}

Выглядит не очень красиво, но вроде, работает.

обработка строк с использованием операторов цикла с условием
string? text = «Напечатать все его символы, предшествующие первой запятой»;
int i = 0;
string outTxt = «»;
while (i < text.Length)
{
  if (text[i] != ‘,’)
  {
    outTxt += text[i];
    i++;
  }
  else
  {
    Console.Write(outTxt);
    break;
  }
}
if (i == text.Length)
  Console.WriteLine(«Запятых не обнаружено.»);

Последний раз редактировалось 2 лет назад Евгений ем

4)
string s1 = «казак»;
string s2 = «»;
for (int i = s1.Length-1 ; i >= 0; i—)
s2 += s1[i];
if(s1==s2)
Console.WriteLine(«Перевертыш»);

3) Не понимаю, почему условие срабатывает, ведь на первом символе «М», а не «а». В чем ошибка?
string s1 = «Мамы мыла раму»;
for (int i = 0; i < s1.Length; i++)
{
if (s1[i] == 'a' || s1[i] == 'A');
{
Console.WriteLine($"{s1[i]} Под номером {i+1}");
break;
}
}

Должно быть if (s1[i] == ‘a’ || s1[i] == ‘A’) без ;

Harij, верно. Хорошо подметили. Именно по этому рекомендуют в конструкциях if всегда заключать блоки в фигурные скобки и настроить так же автоформатирование. Таким образом в данном случае VS сразу бы вставил пустые фигурные скобки после if-а и было бы ясно в чем ошибка.

//2)
string s1 = «Сегодня очень светло!»;
for (int i = 0; i = 0; j—)
{
if (s1[j] == ‘е’)
{
Console.WriteLine($»Последняя буква ‘e’ под номером {s1.Length-j}»);
break;
}
}

//4)
string s1 = «Сегодня очень светло!»;
for (int i = 0; i = 0; j—)
{
if (s1[j] == ‘е’)
{
Console.WriteLine($»Последняя буква ‘e’ под номером {s1.Length-j}»);
break;
}
}

Т4.6. Дана последовательность символов, в начале которой имеется некоторое количество одинаковых символов. Определить это количество. Рассмотреть два случая:
1) известно, что не все символы последовательности одинаковые;
2) все символы последовательности могут быть одинаковыми.

string s = "rrrtrrrrr";
int i = 0, count = 1;
while (i < s.Length - 1)
{
   if (s[i] == s[i + 1])
      count++;
   if (s[i] != s[i + 1] && count != 1)
      break;
   i++;
}
Console.WriteLine("одинаковых с начала - " + count);

Тесты:
"rrrrrrrr" -> 8
"rtrrrrrr" -> 1
"rrrtrrrr" -> 3

Т4.1. Дано предложение. Напечатать все его символы, предшествующие первой запятой. Рассмотреть два случая:
1) известно, что в предложении запятые имеются;
2) в предложении запятых может не быть.

string s = "Речь человека состоит из предложений, причем определить, о чем он говорит, зачастую можно, только найдя грамматическую основу этого предложения – подлежащее и сказуемое";
int i = 0, count = 0;
while (s[i] != ',' && i < s.Length - 1)
{
   count++;
   i++;
}
if (count == s.Length - 1)
   Console.WriteLine("Запятых нет");
else
   Console.WriteLine(s.Substring(0, count));

Точно!

string s1 = «До запятой, после запятой!»;
int n1=0;
for (int i = 0; i < s1.Length-1; i++)
{
Console.Write(s1[i]);
if (s1[i+1] == ',')
n1++;
}
Console.WriteLine();
Console.WriteLine($"В предложении {n1} запятых");

string s1 = «До запятой, после запятой!»;
int n1=0;
for (int i = 0; i < s1.Length-1; i++)
{
Console.Write(s1[i]);
if (s1[i + 1] == ',')
{
n1++;
break;
}
}
Console.WriteLine();
Console.WriteLine($"В предложении {n1} запятых");

34
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x