Özyinelemeyi Kullanarak Bir Cümleyi Ters Çevirmek için C ++ programı

Bu program kullanıcıdan bir cümle alır ve o cümleyi özyinelemeyi kullanarak tersine çevirir. Bu program cümleyi ters çevirmek veya cümleyi depolamak için dizge kullanmaz.

Bu örneği anlamak için, aşağıdaki C ++ programlama konuları hakkında bilgi sahibi olmalısınız:

  • C ++ İşlevleri
  • C ++ 'da Kullanıcı Tanımlı İşlev Türleri
  • C ++ Özyineleme
  • C ++ if, if… else ve Nested if… else

Örnek: Özyineleme kullanarak bir cümleyi tersine çevirin.

 #include using namespace std; // function prototype void reverse(const string& a); int main() ( string str; cout << " Please enter a string " << endl; getline(cin, str); // function call reverse(str); return 0; ) // function definition void reverse(const string& str) ( // store the size of the string size_t numOfChars = str.size(); if(numOfChars == 1) ( cout << str << endl; ) else ( cout << str(numOfChars - 1); // function recursion reverse(str.substr(0, numOfChars - 1)); ) ) 

Çıktı

 Bir cümle girin: margorp emosewa harika bir program 

Bu programda, kullanıcıdan str dize nesnesinde saklanan bir dizge girmesi istenir.

Ardından, reverse()özyinelemeli bir işlev olan işlev çağrılır.

Bu işlevin içinde, girdi dizesinin boyutunu numOfChars değişkeninde saklarız.

İlk işlev çağrısında, reverse()dizenin son karakterini kodla yazdırır:

 cout << str(numOfChars - 1);

Dizelerin aslında karakter dizileri olduğunu unutmayın , bu nedenle bir dizenin her bir karakteri dizge dizisi str () dizisinin bir dizini olarak temsil edilebilir.

Sonraki satırda, özyinelemeli işlev çağrılır:

 reverse(str.substr(0, numOfChars - 1));

Burada substr()dizgeyi ikinci son karaktere kadar verir ve bu karakter tekrar reverse()işleve iletilir .

Bir sonraki reverse()çağrıda, dizge sondan bir karakter eksik olduğundan, 2. son karakter yazdırılır. Bundan sonra, sondan bir karakter dizeden tekrar kesilir ve reverse()işleve aktarılır .

Bu, son karakter (veya ilk karakter) yazdırıldığında ve döngü sona erdiğinde dizenin uzunluğu 1'e eşit olana kadar devam eder.

Ilginç makaleler...