所以我编写了下面的代码作为解决二维线性方程组的程序。
#include <stdio.h>
int main( )
{
int eq[2][3];
int D, Dx, Dy;
int sol[2];
printf("Enter cofficients of first equation: ");
scanf("%d %d %d", &eq[0][0], &eq[0][1], &eq[0][2]);
printf("Enter cofficients of second equation: ");
scanf("%d %d %d", &eq[1][0], &eq[1][1], &eq[1][2]);
D = eq[0][0]*eq[1][1] - eq[1][0]*eq[0][1];
Dx = eq[0][2]*eq[1][1] - eq[1][2]*eq[0][1];
Dy = eq[0][0]*eq[1][2] - eq[1][0]*eq[0][2];
if(D != 0){
sol[0] = Dx/D; // x solution
sol[1] = Dy/D; // y solution
printf("x = %d, y = %d \n", sol[0], sol[1]);
}
else{
printf("No unique solutions exist. \n");
}
return 0;
}
我现在的任务是使用原型将其转换为函数:
bool determinantFunction(int e[][3], int s[]);
我的问题是我不知道从哪里开始。我已经阅读了尽可能多地使用C语言中的布尔值,但我不明白我是如何或为什么要实现它来制作一个决定性函数。
答案 0 :(得分:1)
所以,只需将现有代码放在这样的函数中(我并不是说你的代码是对还是错),你会得到类似的东西:
bool determinantFunction(int e[][3], int s[])
{
int D, Dx, Dy;
// calculate determinant
D = e[0][0]*e[1][1] - e[1][0]*e[0][1];
Dx = e[0][2]*e[1][1] - e[1][2]*e[0][1];
Dy = e[0][0]*e[1][2] - e[1][0]*e[0][2];
// if non-singular ...
if (D != 0)
{
// success
s[0] = Dx/D; // return x solution
s[1] = Dy/D; // return y solution
return true;
}
// no solution
return false;
}
然后你的main
会变成这样(未经测试):
int main( )
{
int eq[2][3];
int sol[2];
printf("Enter cofficients of first equation: ");
scanf("%d %d %d", &eq[0][0], &eq[0][1], &eq[0][2]);
printf("Enter cofficients of second equation: ");
scanf("%d %d %d", &eq[1][0], &eq[1][1], &eq[1][2]);
if (determinantFunction(eq, sol))
{
printf("x = %d, y = %d \n", sol[0], sol[1]);
}
else{
printf("No unique solutions exist. \n");
}
return 0;
}
对于您的示例:4x - 3y = -14和3x - 5y = -5,与以下内容相同:
4x - 3y + 14 = 0
3x - 5y + 5 = 0
你会得到:
好的,上次更新 - 硬编码系数:
int eq[2][3] = {{4, -3, 14}, {3, -5, 5}};
int sol[2];
if (determinantFunction(eq, sol))
{
printf("x = %d, y = %d \n", sol[0], sol[1]);
}
else{
printf("No unique solutions exist. \n");
}
答案 1 :(得分:0)
此类功能可行的一种可能方式是,如果存在唯一解决方案则返回true
,否则返回false
。如果确实找到了解决方案,它将存储在作为第二个参数传递的数组中。
基本上,您只需将现有代码移动到一个函数中即可。您的sol
数组将作为第一个参数传递给您。
int main()
{
int eq[2][3];
// ...
int sol[2];
if (determinantFunction(eq, sol)) {
printf("%d %d\n", sol[0], sol[1]);
} else {
printf("No unique solutions exist.\n");
}
}