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

สี่เหลี่ยมผืนผ้าที่มีความต่างระหว่างความยาวและความกว้างน้อยที่สุดใน C++

ภาพรวม

เมื่อได้รับพื้นที่ของสี่เหลี่ยมผืนผ้าเป็นอินพุต เป้าหมายคือการหาด้านของสี่เหลี่ยมผืนผ้าที่ทำให้ความต่างระหว่างความยาวและความกว้างมีค่าน้อยที่สุด

พื้นที่สี่เหลี่ยมผืนผ้า = ความยาว × ความกว้าง

ตัวอย่าง

อินพุต − พื้นที่ = 100

เอาต์พุต − ด้านของสี่เหลี่ยมผืนผ้าที่มีความต่างน้อยที่สุด:

ความยาว = 10, ความกว้าง = 10

คำอธิบาย − คู่ตัวประกอบของพื้นที่ 100 ได้แก่ 2-50, 4-25, 5-20, 10-10 คู่ที่มีความต่างน้อยที่สุดคือ 10-10 ซึ่งความต่างเท่ากับ 0 สี่เหลี่ยมจัตุรัสจึงเป็นสี่เหลี่ยมผืนผ้าที่ด้านเท่ากันทุกด้าน

อินพุต − พื้นที่ = 254

เอาต์พุต − ด้านของสี่เหลี่ยมผืนผ้าที่มีความต่างน้อยที่สุด:

ความยาว = 127, ความกว้าง = 2

คำอธิบาย − คู่ตัวประกอบที่เป็นไปได้เพียงคู่เดียวคือ 127 และ 2

แนวทางการแก้ปัญหา

หาค่ารากที่สองของพื้นที่ จากนั้นวนลูปจากค่าดังกล่าวลงมาที่ 1 เพื่อหาตัวประกอบที่ให้ความต่างน้อยที่สุด

  • รับค่าพื้นที่เป็นจำนวนเต็ม
  • ฟังก์ชัน rectangleSides(int area1) รับพื้นที่และพิมพ์ด้านของสี่เหลี่ยมผืนผ้าที่มีความต่างน้อยที่สุด
  • กำหนดตัวแปร length, breadth, tmp1
  • ตั้งค่า tmp1 = ceil(sqrt(area1))
  • วนลูป for (int i = tmp1; i > 0; i--)
  • ถ้า area1 % i == 0 ให้ตั้ง length = area1 / i และ breadth = i แล้ว break
  • พิมพ์ค่า length และ breadth

ตัวอย่างโค้ด C++

#include <bits/stdc++.h> 
using namespace std; 

void rectangleSides(int area1){ 
    int length, breadth; 
    int tmp1 = ceil(sqrt(area1)); 
    for (int i = tmp1; i > 0; i--) { 
        if (area1 % i == 0) { 
            length = area1 / i; 
            breadth = i; 
            break; 
        } 
    } 
    cout << "Sides of Rectangle with minimum difference :" << endl; 
    cout << "Length = " << length << ", Breadth = " << breadth << endl; 
} 

int main(){ 
    int Area = 140; 
    rectangleSides(Area); 
    return 0; 
}

ผลลัพธ์

Sides of Rectangle with minimum difference : Length = 14, Breadth = 10