2016-05-07 2 views
-1

я работаю над программой, которая считывает линейные уравнения из файла, такие как те, - и решать их с помощью матриц -:прочитанной коэффициенты линейных уравнений из файла в 2d массив в с

3x+2y-2z=9 
-2x+9y+12z=23 
4x-7y+9z=45 

Файл является должен содержать п уравнений с п переменными, как получить только цифры и знаки из приведенных выше уравнений для хранения в 2d динамического массива Целые

Так выход будет (некоторые вещи, как это):

3 2 -2 9 
-2 9 12 23 
4 -7 9 45 

Спасибо Расширенного

+0

Что вы сделали до сих пор? Возможно, вам стоит искать 'fscanf' для начала. – 4386427

+0

Пожалуйста, покажите нам, что вы пробовали. Подсказка: 'fscanf' или' fgets' + 'sscanf'. –

+0

как 'fscanf', так и' sscanf' не читает коэффициенты из файла Ex: fscanf (filePointer, "% d", &coff); Также, если я использую: fscanf (filePointer, "% s,% d", символы и coff) символ читает всю строку и кофф не читает коэффициенты тоже, я думаю, потому что уравнение представляет собой последовательность символов без пробелов ... так что это не работает правильно, я понимаю что-то неправильно? @CoolGuy – Islams

ответ

1

Использование fscanf, то «d» Модификатор ручки подписало целое число, это означает, что он будет заботиться о входном числе, имеет ли он + или - перед ним, попробуйте следующий код:

#include <stdio.h> 

int main(void) { 
    int x, y, z, e; 
    FILE *fp = fopen("eq.txt", "r"); 
    if (!fp) 
     return 1; 
    while (fscanf(fp, "%dx%dy%dz=%d", &x, &y, &z, &e) == 4) { 
     printf("%d %d %d %d\n", x, y, z, e); 
    } 
    return 0; 
} 

Он выводит файл, который вы публикуемую:

3 2 -2 9 
-2 9 12 23 
4 -7 9 45 
+0

Thnaks очень @fluter – Islams

+0

У меня есть 3 вопроса @fluter: (Во-первых) почему вы пишете x, y, z здесь «% dx% dy% dz =% d» вместо «% d% d% d =% d» ... (Во-вторых) важность оператора «=» в формате .... (Третье), что я могу сделать, чтобы прочитать n уравнений из файла? – Islams

+0

@Islams Строка формата должна соответствовать фактическому входному файлу, ваш файл не имеет пробелов и содержит «=» между ними, вот почему это так. Теперь он читает весь файл, если вы хотите прочитать первое n, вы можете сделать 'for (I = 0; i fluter

Смежные вопросы