В функцию внутри конструктора переменные передаются в произвольном порядке
Моя проблема в том, что, если писать передачу переменных объекту класса engine в том же порядке, в котором они указаны в конструкторе, они все равно передаются в произвольном (или нет) порядке. Как это исправить?:
class engine{
private:
int vid_topl; // вид топлива
int o_stup[3]; // объем каждой ступени
int s_stup[3]; // скорость ступени
int t_stup[3]; // время работы ступени
public:
engine(int vi, int ob[3], int sk[3], int vr[3]) // СТРОКА 1
{
vid_topl = vi;
for (int i = 0; i < 3; i++){
o_stup[i] = ob[i];
s_stup[i] = sk[i];
t_stup[i] = vr[i];
}
}
int get_topl()
{return vid_topl;}
int get_o_st(int i)
{return o_stup[i];}
int get_s_st(int i)
{return s_stup[i];}
int get_t_st(int i)
{return t_stup[i];}
.......
int i, v, o[3], s[3], t[3];
for (i = 0; i < 3; i ++)
{
printf("Введите объем ступени %d: ", i + 1);
scanf("%d", &o[i]); // объем
printf("Введите конечную скорость ступени %d (в км/ч): ", i + 1);
scanf("%d", &s[i]); // скорость
printf("Введите время работы ступени %d (в секундах): ", i + 1);
scanf("%d", &t[i]); // время
}
......
engine raketa(v, &o[3], &s[3], &t[3]);
Ввод такой:
Введите объем ступени 1: 100
Введите конечную скорость ступени 1 (в км/ч): 1000
Введите время работы ступени 1 (в секундах): 10
Введите объем ступени 2: 200
Введите конечную скорость ступени 2 (в км/ч): 2000
Введите время работы ступени 2 (в секундах): 10
Введите объем ступени 3: 300
Введите конечную скорость ступени 3 (в км/ч): 3000
Введите время работы ступени 3 (в секундах): 10
при проверке
for (i = 0; i < 3; i++){
printf("Объем %d: %d\n", i, raketa.get_o_st(i));
printf("Скорость %d: %d\n", i, raketa.get_s_st(i));
printf("Время %d: %d\n", i, raketa.get_t_st(i));
}
выдает
Вид топлива: 100
Объем 0: 100
Скорость 0: 100
Время 0: 1000
Объем 1: 3
Скорость 1: 200
Время 1: 2000
Объем 2: 0
Скорость 2: 300
Время 2: 3000
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
А что за ерунду вы передаете в конструктор?
engine raketa(v, &o[3], &s[3], &t[3]);
Вы же передаете несуществующие массивы - за концами реальных! Вот так вызывайте:
engine raketa(v, o, s, t);