Untitled

 avatar
unknown
c_cpp
5 months ago
1.8 kB
1
Indexable
#include <bits/stdc++.h>
using namespace std;

// Function to round a float to the nearest integer
int fround(float x) 
{
    x = x + 0.5; // Add 0.5 to round to the nearest whole number
    int a = static_cast<int>(x); // Convert to integer
    return a;
}

// Function to calculate and display effort, development time, and staff required
void calculate(float table[][4], int n, string mode[], int size) 
{
    float effort, time, staff;
    int model;

    // Determine the model based on the size
    if (size >= 2 && size <= 50) 
        model = 0; // Organic model
    else if (size > 50 && size <= 300) 
        model = 1; // Semi-Detached model
    else if (size > 300) 
        model = 2; // Embedded model

    // Calculate effort, development time, and staff using COCOMO formulas
    effort = table[model][0] * pow(size, table[model][1]);
    time = table[model][2] * pow(effort, table[model][3]);
    staff = effort / time;

    // Display the results
    cout << "The mode is " << mode[model] << endl;
    cout << "Effort = " << effort << " Person-Months" << endl;
    cout << "Development Time = " << time << " Months" << endl;
    cout << "Average Staff Required = " << fround(staff) << " Persons" << endl;
}

int main() 
{
    // Coefficients for COCOMO model (Organic, Semi-Detached, Embedded)
    float table[3][4] = {
        {2.4, 1.05, 2.5, 0.38},  // Organic
        {3.0, 1.12, 2.5, 0.35},  // Semi-Detached
        {3.6, 1.20, 2.5, 0.32}   // Embedded
    };

    // Models names
    string mode[] = {"Organic", "Semi-Detached", "Embedded"};

    int size = 4;  // Size of the software project (in KLOC)
    
    // Call the calculate function to estimate effort, time, and staff
    calculate(table, 3, mode, size);

    return 0;
}
Editor is loading...
Leave a Comment