ในปัญหานี้ เราได้รับอัตราส่วนสองค่าคือ x:y และ y:z งานของเราคือสร้าง โปรแกรมเพื่อค้นหาอัตราส่วนร่วมของตัวเลขสามตัวใน C++ .
คำอธิบายปัญหา − เราต้องหาอัตราส่วนร่วมของตัวเลขสามตัวโดยใช้อัตราส่วนที่กำหนดให้ เมื่อใช้ x:y และ y:z เราจะพบ x:y:z
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
3:5 8:9
ผลลัพธ์
24: 40: 45
คำอธิบาย − เรามี x:y และ y:z สองอัตราส่วนที่แตกต่างกัน ในการสร้าง x:y:z เราจะทำ y เท่ากันในอัตราส่วนทั้งสองซึ่งจะทำให้อัตราส่วนนั้นเป็นไปได้ ในการทำเช่นนั้น เราจะคูณกัน
$\frac{\square}{\square1}=\frac{\square2}{\square}\Rightarrow\frac{\square\square2}{\square1\square2}=\frac{\square1\square2}{\square2 \square}$
นี่จะทำให้อัตราส่วน x’:y’:z’
ดังนั้น 3*8 :8*5 :5*9 =24 :40 :45 คืออัตราส่วน
แนวทางการแก้ปัญหา
ดังที่กล่าวไว้ในตัวอย่างข้างต้น เราจำเป็นต้องทำให้องค์ประกอบตรงกลางมีร่วมกันสำหรับอัตราส่วนทั้งสอง และสำหรับสิ่งนี้ เราจะทำการคูณไขว้ แต่บางครั้ง การคูณไขว้อาจทำให้ผลลัพธ์มีขนาดใหญ่ขึ้น ดังนั้น วิธีที่มีประสิทธิภาพคือการหา LCM แล้วหาอัตราส่วนเป็น −
$\frac{\square*\square\square\square}{\square1}:\square\square\square:\frac{\square*\square\square\square}{\square2}$
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
ตัวอย่าง
#include <iostream>
using namespace std;
int calcLcm(int a, int b){
int lcm = 2;
while(lcm <= a*b) {
if( lcm%a==0 && lcm%b==0 ) {
return lcm;
break;
}
lcm++;
}
return 0;
}
void calcThreeProportion(int x, int y1, int y2, int z){
int lcm = calcLcm(y1, y2);
cout<<((x*lcm)/y1)<<" : "<<lcm<<" : "<<((z*lcm)/y2);
}
int main() {
int x = 12, y1 = 15, y2 = 9, z = 16;
cout<<"The ratios are\t"<<" x:y = "<<x<<":"<<y1<<"\ty:z = "<<y2<<":"<<z<<endl;
cout<<"The common ratio of three numbers is\t";
calcThreeProportion(x, y1, y2, z);
return 0;
} ผลลัพธ์
The ratios are x:y = 12:15 y:z = 9:16 The common ratio of three numbers is 36 : 45 : 80