Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

พิมพ์ประโยคทั้งหมดซ้ำๆ จากรายการคำศัพท์ในภาษา C++


ระบุรายการคำ เป้าหมายคือการสร้างประโยคที่เป็นไปได้ทั้งหมดที่สามารถสร้างได้โดยการนำคำจากรายการโดยใช้วิธีการแบบเรียกซ้ำ คุณสามารถใช้ได้ครั้งละหนึ่งคำเท่านั้นจากทั้งสองรายการ

ให้เราดูสถานการณ์อินพุตเอาต์พุตต่างๆ สำหรับสิ่งนี้

ป้อนข้อมูล

sentence[row][col] = {{"I", "You"},
   {"Do", "do not like"},
   {"walking", "eating"}}

ผลผลิต

I Do walking
I Do eating
I like walking
I like eating
You Do walking
You Do eating
You like walking
You like eating

คำอธิบาย − รับหนึ่งคำจากแต่ละรายการในประโยค[0-2] ให้ประโยคข้างบน

ป้อนข้อมูล

sentence[row][col] = {{"work", "live"},{"easy", "happily"}}

ผลผลิต

work easy
work happily
live easy
live happily

คำอธิบาย − นำหนึ่งคำจากแต่ละรายการในประโยค[0-1] ให้ประโยคข้างบน

  • ประกาศอาร์เรย์ 2 มิติของประเภทสตริงเป็นประโยค[row][col] ส่งข้อมูลไปยังฟังก์ชันเป็น Recursive_Print(ประโยค)

  • ภายในฟังก์ชันเป็น Recursive_Print(ประโยค)

    • สร้างอาร์เรย์ของประเภทสตริงเป็น arr[row].

    • เริ่มลูป FOR จาก i ถึง 0 จนถึง i น้อยกว่า col ภายในลูป ให้ตรวจสอบว่าประโยค IF[0][i] ไม่ว่าง จากนั้นให้เรียกใช้ฟังก์ชันเป็น Recursion(sentence, 0, i, arr)

  • ภายในฟังก์ชันเป็น Recursion(string sentence[row][col], int temp_1, int temp_2, string arr[row])

    • ตั้งค่า arr[temp_1] เป็นประโยค[temp_1][temp_2].

    • ตรวจสอบว่า temp_1 เป็นแถว - 1 แล้วเริ่มวนซ้ำ FOR จาก i ถึง 0 จนถึง i น้อยกว่าแถว ภายในลูป พิมพ์ arr[i].

    • เริ่มลูป FOR จาก i ถึง 0 จนถึง i น้อยกว่า col ภายในลูป ให้ตรวจสอบว่าประโยค IF[temp_1+1][i] ไม่เท่ากับช่องว่าง จากนั้นให้เรียกใช้ฟังก์ชันแบบเรียกซ้ำเป็น Recursion(sentence, temp_1+1, i, arr)

  • พิมพ์ผลลัพธ์

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

ตัวอย่าง

#include<bits/stdc++.h>
#define row 3
#define col 3
using namespace std;
void Recursion(string sentence[row][col], int temp_1, int temp_2, string arr[row]){
   arr[temp_1] = sentence[temp_1][temp_2];
   if(temp_1 == row - 1){
      for(int i=0; i < row; i++){
         cout << arr[i] << " ";
      }
      cout << endl;
      return;
   }
   for(int i=0; i < col; i++){
      if(sentence[temp_1+1][i] != ""){
         Recursion(sentence, temp_1+1, i, arr);
      }
   }
}
void Recursive_Print(string sentence[row][col]){
   string arr[row];
   for(int i=0; i < col; i++){
      if(sentence[0][i] != ""){
         Recursion(sentence, 0, i, arr);
      }
   }
}
int main(){
   string sentence[row][col] = {{"Ajay", "sanjay"},{"Like", "is"},{"Reading", "eating"}};
   Recursive_Print(sentence);
   return 0;
}

ผลลัพธ์

หากเรารันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้

Ajay Like Reading
Ajay Like eating
Ajay is Reading
Ajay is eating
sanjay Like Reading
sanjay Like eating
sanjay is Reading
sanjay is eating