What type of argument should I use in the function(s)?

Jul 25, 2022 at 9:11pm
Hello everyone,
I am a bit beginner in cplusplus and I need to code a small piece of code but I do not know how to do it.
I have two cost matrices like f_kt=[[3 5 7
6 4 2]]

and c_kt=[[ 1 2 3]
4 5 6]];

the lines represent the number of products which is 2 and the coloumns represents the number of periods which is 3. I have a special cost analysis function which can be applied only one product to calculate the cost for all periods , which does 3*A+ 5A +7A +1B+2B +3B. If I had only one product I could do it easily like
because in that case the arrays would be f_kt=[3 5 7] and c_kt=[1 2 3] . This data would be the input of my special cost analysis function and I could calculate it. How can I calculate the total cost by reading data of the other products? As I said, that special function is only applicable to compute the cost of one line (one product).

What I want to obtain: 3*A+ 5A +7A +1B+2B +3B+ 6*A+ 4A +2A +4B+5B +6B

Thank you so much in advance
Last edited on Jul 25, 2022 at 9:12pm
Jul 25, 2022 at 9:33pm
27*A+21*B

If that is not what you require, then please have another go at trying to explain your problem.
Jul 26, 2022 at 3:28am
I think you're asking "how do I pass multi-dimensional arrays as function arguments", so here's one option.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>

int combine(int one[2][3], int two[2][3])
{
        //  Do your calculations, etc. 
        int result = 0;
        for(int i = 0; i < 2; i ++)
        {
                for(int k = 0; k < 3; k ++)
                {
                    result += one[i][k] + two[i][k];
                }
        }
        return result;
}

int main()
{
        int foo[2][3] = {{1, 1, 1},{1, 2, 3}};
        int bar[2][3] = {{8, 8, 8},{4, 5, 6}};
        std::cout << combine(foo, bar) << std::endl;
}


Eventually I recommend you look into the standard containers such as vectors so that you can benefit from dynamic memory.
Last edited on Jul 26, 2022 at 4:35am
Jul 26, 2022 at 2:07pm
Wait, I think I understand what's being asked. Here's the same as above, but able to take arrays of products of generic size. Basically the function can handle any size of product array so long as you tell it how many products are in the arrays as well:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>

int combine(int one[][3], int two[][3], int count)
{
        //  Do your calculations, etc. 
        int result = 0;
        for(int i = 0; i < count; i ++)
        {
                for(int k = 0; k < 3; k ++)
                {
                    result += one[i][k] + two[i][k];
                }
        }
        return result;
}

int main()
{
        int foo[2][3] = {{1, 1, 1},{1, 2, 3}};
        int bar[2][3] = {{8, 8, 8},{4, 5, 6}};
        std::cout << combine(foo, bar, 2) << std::endl;
}


Again, I recommend studying vectors soon, they solve many problems. https://cplusplus.com/reference/vector/vector/
Jul 28, 2022 at 2:59pm
Thank you so much , problem solved
Topic archived. No new replies allowed.