برنامه محاسبه نسبت تقسیم سود — راهنمای کاربردی


در این مطلب، روش نوشتن برنامه محاسبه نسبت تقسیم سود بیان و پیاده‌سازی آن در زبان‌های برنامه‌نویسی گوناگون شامل «سی‌پلاس‌پلاس» (++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)  
 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)  
 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) — به زبان ساده
telegram
twitter
GeeksforGeeks

الهام حصارکی

«الهام حصارکی»، فارغ‌التحصیل مقطع کارشناسی ارشد مهندسی فناوری اطلاعات، گرایش سیستم‌های اطلاعات مدیریت است. او در زمینه هوش مصنوعی و داده‌کاوی، به ویژه تحلیل شبکه‌های اجتماعی، فعالیت می‌کند.

نوشته برنامه محاسبه نسبت تقسیم سود — راهنمای کاربردی اولین بار در مجله فرادرس. پدیدار شد.