我被分配了一个问题,要求我们使用数组和指向该数组的指针来解决2方程式系统。它是一种线性代数方式,x_1 =(DE-BF)/(AD-BC)和x_2 =(AF-CE)/(AD-BC)。系统是Ax_1 + Bx_2 = C和Dx_1 + Ex_2 = F.我的代码编译正常但是吐出垃圾。谁能帮我?我确定这是我的指针错误但我不知道如何纠正它。非常感谢提前。
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(){
double A,B,C,D,E,F;
cout << "Please enter a value for A: " << endl;
cin >> A;
cout << "Please enter a value for B: " << endl;
cin >> B;
cout << "Please enter a value for C: " << endl;
cin >> C;
cout << "Please enter a value for D: " << endl;
cin >> D;
cout << "Please enter a value for E: " << endl;
cin >> E;
cout << "Please enter a value for F: " << endl;
cin >> F;
double paramarray[6] = {A,B,C,D,E,F};
double* p;
p = ¶marray[6];
double x1 = (p[3]*p[4] - p[1]*p[5])/(p[0]*p[3] - p[1]*p[2]);
double x2 = (p[0]*p[5] - p[2]*p[4])/(p[0]*p[3] - p[1]*p[2]);
cout << "X_1 = " << x1 << endl;
cout << "X_2 = " << x2 << endl;
int f;
cin >> f;
return 0;
}
答案 0 :(得分:0)
p = ¶marray[6];
这就是问题所在。这意味着您将paramarray [6]的地址分配给p。 paramarray [6]没有定义,你试图访问越界数组。
尝试将其更改为
p = paramarray;
此外,如果您首先检查零分母并相应地更新您的等式,那将会更好。
答案 1 :(得分:0)
您的指针应该使用数组的基数进行初始化,该数组是第一个元素的地址。在你的程序中,你将它初始化为一个超出界限的地址,这是一个索引6,其中数组的最后一个索引是5本身。 大小为6的数组表示第一个索引为0,最后一个索引为5.
所以改变你的行:
p = ¶marray[6];
到
p = paramarray; //or p=¶marray[0].Both are same here
上面这一行将把第一个元素的地址存储在指针p中。