Cześć
Co muszę dodać do tego kodu żeby wyniki zapisywane do pliku pod Win7 (VS 2013) były zgodne(chyba) z oczekiwanymi - chodzi mi o precyzje/format ponieważ pod linuksem otrzymuje dobry(tez chyba) zapis liczb dla:
#include <string>
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int main(void) {
long double *fib = NULL;
int n, i;
string filename;
cout << "Ile ?: ";
cin >> n;
if (n <= 0) {
cout << " n <= 0" << endl;
return 0;
}
fib = new long double[n];
if (fib == NULL) {
cout << "Mem alloc failure" << endl;
return 1;
}
#ifdef _WIN32
fstream file("D:\\fib.txt", ios::trunc | ios::out);
#elif __linux
fstream file("/home/dawid/fib.txt", ios::trunc | ios::out);
#endif
file.precision(10000);
fib[0] = 1;
fib[1] = 2;
file << "Mem: " << n * sizeof(long double) << endl;
file << "1 : " << fib[0] << endl;
for (i = 2; i < n; i++) {
fib[i] = fib[i - 1] + fib[i - 2];
file << i << " : " << fib[i] << endl;
}
delete fib;
file.close();
return 0;
}
Wynik pod Windowsem:
79 : 37889062373143904
80 : 61305790721611584
81 : 99194853094755488
82 : 160500643816367070
83 : 259695496911122560
84 : 420196140727489660
85 : 679891637638612220
86 : 1100087778366101900
87 : 1779979416004714000
88 : 2880067194370816000
89 : 4660046610375530500
90 : 7540113804746346500
91 : 12200160415121877000
[...]
170 : 394810887814999250000000000000000000
171 : 638817435613190510000000000000000000
172 : 1.03362832342818980000[......]0000000000e+036
Wynik pod Ubuntu:
79 : 23416728348467685
80 : 37889062373143906
81 : 61305790721611591
82 : 99194853094755497
83 : 160500643816367088
84 : 259695496911122585
85 : 420196140727489673
86 : 679891637638612258
87 : 1100087778366101931
88 : 1779979416004714189
89 : 2880067194370816120
90 : 4660046610375530309
91 : 7540113804746346429
[...]
170 : 244006547798191185555677396319862784
171 : 394810887814999156252404086684516352
172 : 638817435613190341826095881513861120
Dzięki
Dawid