我有一个作业要求我从用户输入中获取一些方程式(1-3)作为ax + by + cz = d并计算行列式并找到矩阵和B向量。我已经定义了数量介于1到3之间的方程,但是我不知道如何从输入中获取a,b,c并将其放入矩阵中?以及如何从用户那里获得这种输入? the output should look like that
答案 0 :(得分:0)
请注意,这不是代码,只是有关如何在C中实现它的简要说明。
您的方法应如下:
1)向用户询问方程式的数量。
scanf("%d", &no_of_equations);
2)要求用户输入方程变量:
char var[no_of_equations];
for (i = 0; i < no_of_equations; ++i)
scanf("%c", &var[i])
3)使用malloc分配2d数组(矩阵)(系数的数量与方程的数量相同)
int *arr[no_of_equations];
for (i=0; i<no_of_equations; i++)
arr[i] = (int *)malloc(c * sizeof(int));
4)将方程式作为输入并使用字符串操作:
char* equations[no_of_equations];
for (i=0; i<no_of_equations; i++)
equations[i] = (char *)malloc(MAX_SIZE * sizeof(char));
for (j = 0; equations[i][j] != '\0'; j++) {
for (k = 0; k < no_of_equations; k++) {
if (equations[i][j] == var[k]) {
arr[i][k] = equations[i][j-1]; // Storing coefficient corresponding to kth coefficient for ith equation
}
该算法将采用O(n ^ 3)。欢迎进行任何改进。
答案 1 :(得分:-2)
您可以使用scanf函数从用户那里获取输入。使用scanf可以指定所需的输入类型。我建议你做这样的事情
int i=0,n;
float matrix[3][4];
for(i=0;i<3;i++){
printf("Type the %dth equation: ",i+1);
n=scanf("%fx+%fy+%fz=%d",&matrix[i][0],&matrix[i][1],&matrix[i][2],&matrix[i][3]);
if(n<0){
printf("Error while reading the equations!\n");
break;
}
//put your code to calculate the result here
}