Как я могу принять несколько уравнений в качестве пользовательского ввода? - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть задание, в котором меня просят взять несколько уравнений (1-3) из пользовательского ввода в виде ax + by + cz = d, вычислить определитель и найти матрицу и вектор B. Я уже определилчисло уравнений от 1 до 3, но я не могу понять, как я могу получить a, b, c из входных данных и получить его в матрицу?и как я могу получить такую ​​информацию от пользователя? вывод должен выглядеть так

Ответы [ 2 ]

0 голосов
/ 13 апреля 2019

Обратите внимание, что это не код, а просто краткое представление о том, как реализовать его в 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 (с помощьюколичество коэффициентов совпадает с числом уравнений)

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),Любые улучшения приветствуются.

0 голосов
/ 13 апреля 2019

Вы можете использовать функцию 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 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...