Эта тема может быть полезна для начинающих программистов. В ней описано решение на языках программирования
C++ и
C# следующего задания.
Имеется заданное слово, например,
idiot.
Требуется определеить, есть ли в произвольно введенном предложении буквы, следующие последовательно, из которых можно составить заданное слово.
Например, если введено предложение
I don't like to eat
то в нем присутствуют буквы, следующие последовательно, из которых можно сложить слово idiot. Они выделены жмрным шрифтом
I don't l
ike t
o ea
t На C++ задание легко выполнить, используя стандартный алгоритм
std::all_of и соответствующим образом составленного лямбда-выражения.
Однако так как начинающие программисты обычно не знакомы ни со стандартными алгоритмами, ни с лямбда выражениями, то код написан с использованием более-менее распространенных и известных синтаксических конструкций.
Это код на
C++ #include <iostream>
#include <string>
#include <cctype>
// Program Idiot. Copyright 2013, Vladimir Grigoriev (Vlad from Moscow)
// ====================================================================
// Determines whether a given word can be present in a sentence
int main()
{
while ( true )
{
std::cout << "Enter a sentence (<enter> to quit): ";
// "i don't like to eat"
std::string s;
std::getline( std::cin, s );
if ( s.empty() ) break;
const std::string idiot = "idiot";
std::string::size_type pos = 0;
for ( char c : idiot )
{
const char letter[] = { c, static_cast<char>( toupper( c ) ) };
pos = s.find_first_of( letter, pos );
if ( pos == std::string::npos ) break;
++pos;
}
std::cout << "There is " << (pos != std::string::npos ? "no " : "")
<< " word \"" << idiot
<< "\" in the sentence"
<< std::endl;
}
}
И совершенно аналогичный код можно написать на
C# using System;
namespace Idiot
{
/// <summary>
/// Program Idiot. Copyright 2013, Vladimir Grigoriev (Vlad from Moscow)
/// ====================================================================
/// Determines whether a given word can be present in a sentence
/// </summary>
class Program
{
static void Run()
{
while (true)
{
Console.Write("Enter a sentence (<enter> to quit): ");
// "i don't like to eat"
string s = Console.ReadLine();
if (string.IsNullOrEmpty( s )) break;
const string idiot = "idiot";
int pos = 0;
foreach (char c in idiot)
{
char[] letter = { c, char.ToUpper(c) };
pos = s.IndexOfAny( letter, pos);
if (pos == -1) break;
++pos;
}
Console.WriteLine("There is {0}word \"{1}\" in the sentence\n",
pos == -1 ? "no " : "", idiot);
}
}
static void Main()
{
Program.Run();
}
}
}
Как видно, обе программы, нв
C++ и
C#, идентичны.