Напишите в комментариях к этой записи консольные приложения для решения этих задач, укажите также код задачи.
Решены задачи 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: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.
Т4. Задачи на обработку строк с использованием операторов цикла с условием
Т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);
#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>
Как заключать текст в теги?
Т4.15. Дано предложение, в котором имеются одна буква с и одна буква Т. Определить, какая из них встречается раньше (при просмотре слова слева направо).
//Т4.7. Даны два слова. Определить, сколько начальных букв первого слова
//совпадает с начальными буквами второго слова. Рассмотреть два случая:
//1) известно, что слова разные;
//2) слова могут быть одинаковыми.
Harij, вот комментарии:
— не будет работать, если второе слово короче первого
— используйте форматирование, у вас не однородная стилистика (блоки бывают в фигурных скобках и без)
— probel — spaceIndex
— думаю слова можно считывать в две разные переменные, а не в одну через пробел; если хотите
Harij, все так же как и в моем предыдущем комментарии, плюс:
— все еще бросает ошибку когда второе слово короче
— код стал запутаннее и более хрупким для изменений
Для етого и думан блок Try Catch ,
Если не хотите видеть ошибку закомментируйте throw;
Harij, ваше решение через Try-Catch запутанное и для вас тоже. Поэтому вы не видите в нем ошибок.
Сделайте как вы написали выше — закомментируйте «throw» и проверьте для случая «0123456789 0» — выведет много строк с неверными ответами.
Извиняюсь , не закомментировать а заменить throw на break
HARIJ, теперь работать будет верно. Но читаемость страдает сильно.
Для наглядности — попробуйте через месяц вернуться к этому решению и понять его полностью по тому, что вы написали тут. И вы увидите, что это будет дольше, чем написать этот код заново. Т.е. поддерживать такое решение крайне проблематично.
Как такой вариант?
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;
}
}
Т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(«Запятых не обнаружено.»);
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) все символы последовательности могут быть одинаковыми.
Тесты:
"rrrrrrrr" -> 8
"rtrrrrrr" -> 1
"rrrtrrrr" -> 3
Антон, работает. Чуть короче будет так:
Т4.1. Дано предложение. Напечатать все его символы, предшествующие первой запятой. Рассмотреть два случая:
1) известно, что в предложении запятые имеются;
2) в предложении запятых может не быть.
Антон! Задача решена. Но зачем два счетчика в этой задаче? А если так:
Точно!
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} запятых");