如何将一些方程式作为用户输入?

时间:2019-04-13 14:29:40

标签: c

我有一个作业要求我从用户输入中获取一些方程式(1-3)作为ax + by + cz = d并计算行列式并找到矩阵和B向量。我已经定义了数量介于1到3之间的方程,但是我不知道如何从输入中获取a,b,c并将其放入矩阵中?以及如何从用户那里获得这种输入? the output should look like that

2 个答案:

答案 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 
}