在这个程序中,我需要得到 线性系统 并且这个系统有 n 变量和 n 方程。我需要在文本文件 (.txt) 中提取方程的系数并将它们放在矩阵上。文本文件的第一行有一个数字,即系统中方程的数量。其他行,有方程。
例如,如果我有以下文本文件:

3
2x - 3y = 0
4x + z = 12
5y - 6z = 10
具有系数的矩阵将是:
|2 -3  0  0|
|4  0  1 12|
|0  5 -6 10|
我知道如何得到线性系统的解,但我怎样才能得到系统的系数(没有库)?我尝试了只从字符串(字符 vector )读取数字的函数,但如果系数是字母(返回 0)或不存在,它们将不起作用。
规则:

代码:
#include <stdio.h>
#include <string.h>
#include <ctype.h>

#define MAXCHAR 1000
#include "LinkedList.c"

//in the future use STRTOK e SSCANF (SPRINTF maybe)

int main() {
FILE *fp;
char str[MAXCHAR];
int character;
int c = 0;
char fileaddress[50];
char *cp;
char *variaveis;
char *p;

int quant = 0;
int numDeEquacoes = 0;

printf("Enter the address of the file you want to open: ");

gets(fileaddress);
printf(fileaddress);


//int coeficientes[3][3];

fp = fopen(fileaddress, "r");
if (fp == NULL){
    printf("\n");
    printf("Cannot open file %s",fileaddress);
    return 1;
}
    printf("\n");

while (fgets(str, MAXCHAR, fp) != NULL)
{
    quant++;

    if(quant==1)
    {
        numDeEquacoes = (str[0] - '0');
    }

    printf("%s", str);

    //gets(str, sizeof(str), stdin);
        printf("Variables of equation: ");

        for(cp=str; *cp; ++cp)
            if(isalpha(*cp))
            {
               printf("%c", *cp, "\n");
               //scanf("%c", )
            }

            //THE CODE THAT RESULTS IN ONLY NUMBERS
            while (*p)
            {
                if ( isdigit(*p) || ( (*p=='-'||*p=='+') && isdigit(*(p+1))) )
                {
                    long val = strtol(p, &p, 10);
                    printf("%ld\n Coefficients:", val, "\n");
                }
                else
                {
                    p++;
                }
            }//ENDS HERE


        //printf("Variaveis: ", variaveis);
        //printf("\n");

    //variaveis = strstr(str);
    //printf(variaveis);


}

fclose(fp);

if(quant-1!=numDeEquacoes)
{
    printf("The number of equations is wrong!\n");
    printf("The number of equations is: %i", numDeEquacoes,"\n");
    printf("The variable quant is: %i", quant,"\n");

    return 0;
}

//int coeficientes[numDeEquacoes][numDeEquacoes];

//printf("coef:",coeficientes);

return 0;
}

最佳答案

您应该读取信号(+ 或 -)并乘以系数。如果信号为+,则乘以+1,否则乘以-1。如果没有变量(或字母),则系数为 0。

关于c - 如何获得线性方程的系数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52664490/

10-13 06:49