В настоящее время я работаю над проектом. Мне нужно написать программу, которая вычисляет периметр и объем из 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);
}
Кажется, что вам нужно использовать оператор 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. Когда оператор возврата вызывается внутри функции, функция фактически прекратит работу там и вернет это значение, что означает, что ваша основная функция останавливается, прежде чем она действительно достигнет вызовов ваших функций периметра и громкости.
n_array
? Кроме того, почему в ваших функциях нет возвращаемого значения?