Как ввести данные в массив из независимой функции

0

В настоящее время я работаю над проектом. Мне нужно написать программу, которая вычисляет периметр и объем из 3 ящиков. Высота, ширина и глубина ящиков составляют 10, 20, 30, 40, 50, 60, 70, 80, 90. Первые 3 элемента представляют собой высоту, ширину и глубину первого окна, соответственно. Вторая группа из трех представляет собой вторую коробку, а последние три представляют последний бокс (высота, ширина, глубина).

Теперь мне нужно поместить 9 заданных значений в массив, которые я сделал. Затем мне нужно использовать 2 независимых функции для вычисления объема и периметра, и мне нужно использовать цикл для повторения вычислений для всех трех ящиков. как только функции вычисляют периметр и объем, 6 значений (3 периметра и 3 тома) должны быть помещены в массив, а затем отображены.

Я инициализировал массив и сохранил 9 значений в коде. Я создал две независимые функции, которые будут вычислять периметр и громкость. Я использовал цикл так, чтобы периметр и громкость были рассчитаны для всех трех ящиков. Теперь мне трудно понять, как хранить вычисленные значения в массиве?

Вот мой код:

    #include<iostream>

    using namespace std;

    struct myArrayWrapper
    {
        int m_array[9];//Array for the 9 given values
        int n_array[6];//Array for the 6 values we will be computing

    };

    int perimeter(myArrayWrapper a)//function to calculate the perimiter
    {
        int p;
        int* A = a.m_array; 
        int* B = a.n_array;
        for(int b = 0 && int a = 1 && int s = 0; a < 8 && b < 9; a+=3 && b+=3 && s+=2) {//for loop to calculate the perimeter of the 3 boxes
        p = 2*A[a] + 2*A[b];
    }

    }

    int volume(myArrayWrapper a)// function to calculate the volume
    {
    int v;
    int* B = a.m_array;//pointer
    for(int c = 0 && int d = 3 && int e = 6; c < 3; c+=3 && d+=3 && e+=3){
        int v;
        v = B[c]*B[d]*B[e];

    }

    }


    int main()
    {
    myArrayWrapper obj;
    obj.m_array[0] = 10;//height of box 1
    obj.m_array[1] = 40;//height of box 2
    obj.m_array[2] = 70;//height of box 3
    obj.m_array[3] = 20;//width of box 1
    obj.m_array[4] = 50;//width of box 2 
    obj.m_array[5] = 80;//width of box 3
    obj.m_array[6] = 30;//depth of box 1
    obj.m_array[7] = 60;//depth of box 2
    obj.m_array[8] = 90;//depth of box 3

    for(int x = 0; x < 8; x++){//Loop that checks to make sure that the given dimensions are greater than 0
    if(obj.m_array[x]>0)
        cout << "Element number " << x << "is greater than 0" << endl;
    else
        cout << "The element is not greater than 0" << endl;
    return 0;
    }

    perimeter(obj);
    volume(obj);

    }
  • 0
    Вы имеете в виду сохранение вычисленных значений (3 значения периметра и 3 объема) в n_array ? Кроме того, почему в ваших функциях нет возвращаемого значения?
  • 0
    Почему бы вам не использовать класс C ++ вместо этой структуры?
Показать ещё 1 комментарий
Теги:
arrays
function

1 ответ

0

Кажется, что вам нужно использовать оператор return. Это позволит вашим функциям фактически вернуть значение, которое они вычисляют, поэтому ваша функция периметра будет выглядеть примерно так:

int perimeter(myArrayWrapper a)//function to calculate the perimiter
{
    int p;
    /* your code */
    p = 2*A[a] + 2*A[b];
    return p;
}

Это вернет целочисленное значение, рассчитанное для p, а затем в вашем основном цикле вы можете присвоить возвращаемое значение вашему желаемому местоположению в вашем массиве.

Здесь содержится дополнительная информация о возвращении .

Еще одна вещь, которая может дать вам проблемы, которые я заметил, это то, что ваш оператор возврата в вашей основной функции будет вызван на первую итерацию цикла for. Когда оператор возврата вызывается внутри функции, функция фактически прекратит работу там и вернет это значение, что означает, что ваша основная функция останавливается, прежде чем она действительно достигнет вызовов ваших функций периметра и громкости.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню