2014-12-07 6 views
0

Я пытаюсь создать программу, которая решает для корня данного полинома, и я хотел бы использовать fstream для получения полинома, корни которого программа решит. В принципе, есть текстовый файл, содержащий некоторые цифры, как, например:Fstream - получение определенных строк по первой строке

5 
3 
7 
-5 
0 
7 
-6 
3 
4 
0 
8 

Первое число будет степень полинома г, и от того, программа будет отсчитывать от значения г до 0. Затем программа выводит что-то вроде "The polynomial whose roots you'd like to compute is 3x^5+7x^4-5x^3+7x-6", извлекая значение из каждой строки.

Я смог реализовать что-то похожее на это, но вместо того, чтобы извлекать числа из текстового файла, пользователь должен был бы ввести его. Указанный код ниже:

int main(int argc, char *argv[]) 
{ 
int n; 

cout << "Enter the degree of your polynomial: "; 
cin >> n; 
double a[n]; 
for(int m = n; m >= 0; m--) 
{ 
if(m == 0) 
{ 
cout << "Please enter the constant: "; 
} 
else 
{ 
cout << "Please enter the coefficient of x^" << m << ": "; 
} 
cin >> a[m]; 
} 
cout<<endl<< "The polynomial you entered is: "; 
for(int i = n; i >= 0; i--) 
{ 
if(i == 0 && a[0] >0) 
{ 
cout << " + " << a[0] ; 
} 
else if(a[i] == 1 && i == n) 
{ 
cout << "x^" << i; 
} 
else if(a[i] == 1) 
{ 

cout << " + x^" << i; 
} 
else if(a[i] == -1 && i == n) 
{ 
cout << "-x^" << i; 
} 
else if(a[i] == -1) 
{ 

cout << " - x^" << i; 
} 
else if(a[i] < -1&& i!=0) 
{ 
cout << " - " << fabs(a[i]) << "x^" << i; 
} 

else if(i==n) 
{ 
cout << a[i] << "x^" << i; 
} 
else if(i != 0 && a[i]>0) 
{ 
cout << " + " << a[i] << "x^" << i; 
} 
else if(i==0&&a[0] < 0) 
{ 
    cout << " - " << fabs(a[0]); 
} 

Как реализовать что-то подобное с помощью fstream? Спасибо за помощь!

ответ

0
#include <fstream> 

int main() 
{ 
    ifstream mystream("textfilename.txt"); 

    int n; 
    mystream >> n; 
} 

Это почти идентично использованию cin, за исключением того, что вам нужно объявить ifstream.

+0

Итак, я сделал это, но почему-то получаю очень странные результаты, вместо того, чтобы получать _6x^7 + 5x^5 + 4x^4 ..._, я получаю _3.24034e-317x^7 + 2.32434e-317x^5 + 4.32891e-311x^5 ..._ Больше информации о том, что я делаю неправильно? Большое спасибо! – BeepBop

+0

@BeepBop, пожалуйста, разместите полную версию своего кода, и я взгляну на него –

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