در این مطلب، روش نوشتن برنامه محاسبه نسبت تقسیم سود بیان و پیادهسازی آن در زبانهای برنامهنویسی گوناگون شامل «سیپلاسپلاس» (++C)، «جاوا» (Java)، «پایتون» (Python)، «سیشارپ» (#C) و «پیاچ پی» (PHP) انجام شده است.
برنامه محاسبه نسبت تقسیم سود
یک آرایه از مقادیر و دورههای زمانی داده شده است. این آرایه، میزان پولی که N فرد سرمایهگذاری کردهاند و همچنین، مدت زمانی که هر یک از آنها سرمایهگذاری کردهاند را نشان میدهد. اکنون، هدف محاسبه نسبت تقسیم سود آنها در پایان مدت سرمایهگذاری است. مثال زیر برای درک بهتر مسئله، قابل توجه است.
Input: n = 2, Amount1 = 7000, Time1 = 12 months Amount2 = 6000, Time2 = 6 months Output: 7 : 3 Input: n = 3, Amount1 = 5000, Time1 = 6 months Amount2 = 6000, Time2 = 6 months Amount3 = 1000, Time3 = 12 months Output: 5 : 6: 2
الگوریتم مورد استفاده برای محاسبه نسبت تقسیم سود در ادامه آمده است.
- سهم اولین فرد: (میزان پولی که توسط اولین فرد سرمایهگذاری شده است) * (مدت زمان سرمایهگذاری فرد)
- سهم دومین فرد: (میزان پولی که توسط دومین فرد سرمایهگذاری شده است) * (مدت زمان سرمایهگذاری فرد)
- سهم سومین فرد: (میزان پولی که توسط سومین فرد سرمایهگذاری شده است) * (مدت زمان سرمایهگذاری فرد)
و به همین ترتیب برای سایر افراد نیز محاسبه میشود.
- نسبت تقسیم سود: سهم اولین نفر : سهم دومین نفر : سهم سومین نفر
در ادامه، پیادهسازی رویکرد بالا، در زبانهای برنامهنویسی گوناگون انجام شده است.
برنامه محاسبه نسبت تقسیم سود در ++C
// C++ implementation of above approach #include <bits/stdc++.h> using namespace std; // Calculating GCD of an array. int find_Gcd(int crr[], int n) { int i; int result = crr[0]; for (i = 1; i < n; i++) result = __gcd(crr[i], result); return result; } // Function to calculate the Share void profitRatio(int amountArr[], int timeTrr[], int n) { int i, crr[n]; for (i = 0; i < n; i++) crr[i] = amountArr[i] * timeTrr[i]; int Share = find_Gcd(crr, n); for (i = 0; i < n - 1; i++) cout << crr[i] / Share << " : "; cout << crr[i] / Share; } // Driver Code int main() { int amountArr[] = { 5000, 6000, 1000 }; int timeTrr[] = { 6, 6, 12 }; int n = sizeof(amountArr) / sizeof(amountArr[0]); profitRatio(amountArr, timeTrr, n); return 0; }
برنامه محاسبه نسبت تقسیم سود در جاوا
// Java implementation of // above approach import java.io.*; class GFG { // Recursive function to // return gcd of a and b static int __gcd(int a, int b) { // Everything divides 0 if (a == 0 || b == 0) return 0; // base case if (a == b) return a; // a is greater if (a > b) return __gcd(a - b, b); return __gcd(a, b - a); } // Calculating GCD of an array. static int find_Gcd(int crr[], int n) { int i; int result = crr[0]; for (i = 1; i < n; i++) result = __gcd(crr[i], result); return result; } // Function to calculate the Share static void profitRatio(int amountArr[], int timeTrr[], int n) { int i; int crr[] = new int[n] ; for (i = 0; i < n; i++) crr[i] = amountArr[i] * timeTrr[i]; int Share = find_Gcd(crr, n); for (i = 0; i < n - 1; i++) System.out.print(crr[i] / Share + " : "); System.out.print(crr[i] / Share); } // Driver Code public static void main (String[] args) { int amountArr[] = {5000, 6000, 1000}; int timeTrr[] = {6, 6, 12}; int n = amountArr.length; profitRatio(amountArr, timeTrr, n); } } // This code is contributed // by inder_verma.
برنامه محاسبه نسبت تقسیم سود در پایتون ۳
# Python3 implementation of above approach # Recursive function to # return gcd of a and b def __gcd(a, b): # Everything divides 0 if(a == 0 or b == 0): return 0; # base case if(a == b): return a; # a is greater if(a > b): return __gcd(a - b, b); return __gcd(a, b - a); # Calculating GCD of an array. def find_Gcd(crr, n): result = crr[0]; for i in range(1, n): result = __gcd(crr[i], result); return result; # Function to calculate the Share def profitRatio(amountArr, timeTrr, n): i = 0; crr = [0] * n; for i in range(n): crr[i] = amountArr[i] * timeTrr[i]; Share = find_Gcd(crr, n); for i in range(n - 1): print(int(crr[i] / Share), end = " : "); print(int(crr[i + 1] / Share)); # Driver Code amountArr = [5000, 6000, 1000]; timeTrr = [6, 6, 12]; n = len(amountArr); profitRatio(amountArr, timeTrr, n); # This code is contributed # by mits
برنامه محاسبه نسبت تقسیم سود در #C
// C# implementation of // above approach using System; class GFG { // Recursive function to // return gcd of a and b static int __gcd(int a, int b) { // Everything divides 0 if (a == 0 || b == 0) return 0; // base case if (a == b) return a; // a is greater if (a > b) return __gcd(a - b, b); return __gcd(a, b - a); } // Calculating GCD of an array. static int find_Gcd(int []crr, int n) { int i; int result = crr[0]; for (i = 1; i < n; i++) result = __gcd(crr[i], result); return result; } // Function to calculate the Share static void profitRatio(int []amountArr, int []timeTrr, int n) { int i; int []crr = new int[n] ; for (i = 0; i < n; i++) crr[i] = amountArr[i] * timeTrr[i]; int Share = find_Gcd(crr, n); for (i = 0; i < n - 1; i++) Console.Write(crr[i] / Share + " : "); Console.Write(crr[i] / Share); } // Driver Code public static void Main () { int []amountArr = {5000, 6000, 1000}; int []timeTrr = {6, 6, 12}; int n = amountArr.Length; profitRatio(amountArr, timeTrr, n); } } // This code is contributed // by inder_verma.
برنامه محاسبه نسبت تقسیم سود در PHP
<?php // PHP implementation of // above approach // Recursive function to // return gcd of a and b function __gcd($a, $b) { // Everything divides 0 if ($a == 0 or $b == 0) return 0; // base case if ($a == $b) return $a; // a is greater if ($a > $b) return __gcd($a - $b, $b); return __gcd($a, $b - $a); } // Calculating GCD of an array. function find_Gcd($crr, $n) { $i; $result = $crr[0]; for ($i = 1; $i < $n; $i++) $result = __gcd($crr[$i], $result); return $result; } // Function to calculate the Share function profitRatio($amountArr, $timeTrr, $n) { $i; $crr = array(); for ($i = 0; $i < $n; $i++) $crr[$i] = $amountArr[$i] * $timeTrr[$i]; $Share = find_Gcd($crr, $n); for ($i = 0; $i < $n - 1; $i++) echo $crr[$i] / $Share , " : "; echo $crr[$i] / $Share; } // Driver Code $amountArr = array(5000, 6000, 1000); $timeTrr = array(6, 6, 12); $n = count($amountArr); profitRatio($amountArr, $timeTrr, $n); // This code is contributed // by inder_verma ?>خروجی قطعه کد بالا، به صورت زیر است.
5 : 6 : 2
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامه نویسی
- آموزش ساختمان دادهها
- مجموعه آموزشهای ساختمان داده و طراحی الگوریتم
- رنگآمیزی گراف به روش حریصانه — به زبان ساده
- الگوریتم دایجسترا (Dijkstra) — از صفر تا صد
- الگوریتم پریم — به زبان ساده
- متن کاوی (Text Mining) — به زبان ساده