有没有人帮我看看为什么会这样搞了半天也没搞好
main.cpp
#include <iostream>
#include "../include/calc.h"
using namespace std;
int main() {
int n;
char get;
double a, b, c, d, e, f, g, h, i, j, k, l;
cout << "此程序可以计算出二元或三元一次方程组的解" << endl;
cin.get();
while (true) {
cout << "二元还是三元:";
cin >> n;
switch (n) {
case 2:
cout << "请依次输入未知数项的系数和右值,共6个(暂不支持分数)" << endl;
cin >> a >> b >> c >> d >> e >> f; //接收输入
calc_2(a, b, c, d, e, f); //计算
while (true) {
cout << "是否退出?(y/n)";
cin >> get;
if (get == 'y' || get == 'Y') { //判断get是否为y或Y
return 0; //结束程序
} else if (get == 'n' || get == 'N') { //判断get是否为n或N
break; //跳出while循环
} else {
cout << "输入错误!请重新输入" << endl;
continue; //继续while循环
}
}
break; //跳出switch语句
case 3:
cout << "请依次输入未知数项的系数和右值,共12个(暂不支持分数)" << endl;
cin >> a >> b >> c >> d >> e >> f >> g >> h >> i >> j >> k >> l; //接收输入
calc_3(a, b, c, d, e, f, g, h, i, j, k, l); //计算
while (true) {
cout << "是否退出?(y/n)";
cin >> get;
if (get == 'y' || get == 'Y') { //判断get是否为y或Y
return 0; //结束程序
} else if (get == 'n' || get == 'N') { //判断get是否为n或N
break; //跳出while循环
} else {
cout << "输入错误!请重新输入" << endl;
continue; //继续while循环
}
}
break; //跳出switch语句
default:
cout << "输入错误!请重新输入" << endl;
}
}
}
func.cpp
#include <iostream>
using namespace std;
void calc_2(double a, double b, double c, double d, double e, double f) { //二元一次方程组的通解
double x, y;
if (a * e - b * d == 0) {
if (c * e - b * f == 0 || a * f - c * d == 0) {
cout << "无数解" << endl;
} else {
cout << "无解" << endl;
}
} else {
x = (c * e - b * f) / (a * e - b * d);
y = (a * f - c * d) / (a * e - b * d);
cout << "x的值为:" << x << endl << "y的值为:" << y << endl;
}
}
void calc_3(double a, double b, double c, double d, double e, double f,
double g, double h, double i, double j, double k, double l) { //三元一次方程组的通解
double x, y, z;
if (a * (f * k - g * j) + b * (g * i - e * k) + c * (e * j - f * i) == 0) {
if (b * (g * l - h * k) + c * (h * j - f * l) + d * (f * k - g * j) == 0 ||
a * (h * k - g * l) + c * (e * l - h * i) + d * (g * i - e * k) == 0 ||
a * (f * l - h * j) + b * (h * i - e * l) + d * (e * j - f * i) == 0) {
cout << "无数解" << endl;
} else {
cout << "无解" << endl;
}
} else {
x = (b * (g * l - h * k) + c * (h * j - f * l) + d * (f * k - g * j)) /
(a * (f * k - g * j) + b * (g * i - e * k) + c * (e * j - f * i));
y = (a * (h * k - g * l) + c * (e * l - h * i) + d * (g * i - e * k)) /
(a * (f * k - g * j) + b * (g * i - e * k) + c * (e * j - f * i));
z = (a * (f * l - h * j) + b * (h * i - e * l) + d * (e * j - f * i)) /
(a * (f * k - g * j) + b * (g * i - e * k) + c * (e * j - f * i));
cout << "x的值为:" << x << endl << "y的值为:" << y << endl << "z的值为:" << z << endl;
}
}
calc.h
#pragma once
void calc_2(double a, double b, double c, double d, double e, double f);
void calc_3(double a, double b, double c, double d, double e, double f,
double g, double h, double i, double j, double k, double l);
【以下回答由 GPT 生成】
这是一个C++代码,而不是C语言代码。首先,删除开头的#include <iostream>
,因为在C语言中没有iostream头文件。
其次,修改cin.get()
为getchar()
,因为cin.get()在C语言中无效,而getchar()可以用来读取输入缓冲区中的一个字符。
在C语言中,没有命名空间的概念,所以删除using namespace std;
。
最后,根据项目中的calc.h文件的内容,确保calc_2和calc_3函数的声明和实现正确。
修改后的代码如下所示:
#include <stdio.h>
#include "../include/calc.h"
int main() {
int n;
char get;
double a, b, c, d, e, f, g, h, i, j, k, l;
printf("此程序可以计算出二元或三元一次方程组的解\n");
getchar();
while (1) {
printf("二元还是三元:");
scanf("%d", &n);
switch (n) {
case 2:
printf("请依次输入未知数项的系数和右值,共6个(暂不支持分数)\n");
scanf("%lf %lf %lf %lf %lf %lf", &a, &b, &c, &d, &e, &f); // 接收输入
calc_2(a, b, c, d, e, f); // 计算
while (1) {
printf("是否退出?(y/n)");
scanf(" %c", &get);
if (get == 'y' || get == 'Y') { // 判断get是否为y或Y
return 0; // 结束程序
} else if (get == 'n' || get == 'N') { // 判断get是否为n或N
break; // 跳出while循环
} else {
printf("输入错误!请重新输入\n");
continue; // 继续while循环
}
}
break; // 跳出switch语句
case 3:
printf("请依次输入未知数项的系数和右值,共12个(暂不支持分数)\n");
scanf("%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf", &a, &b, &c, &d, &e, &f, &g, &h, &i, &j, &k, &l); // 接收输入
calc_3(a, b, c, d, e, f, g, h, i, j, k, l); // 计算
while (1) {
printf("是否退出?(y/n)");
scanf(" %c", &get);
if (get == 'y' || get == 'Y') { // 判断get是否为y或Y
return 0; // 结束程序
} else if (get == 'n' || get == 'N') { // 判断get是否为n或N
break; // 跳出while循环
} else {
printf("输入错误!请重新输入\n");
continue; // 继续while循环
}
}
break; // 跳出switch语句
default:
printf("无效的选择,请重新输入\n");
break; // 跳出switch语句
}
}
}
请注意,我只是修改了C++到C,并做了一些语法上的调整。如果仍然有问题,可能是在calc.h文件中还存在其他问题。请提供calc.h文件的内容,以进行进一步的检查。
【相关推荐】