#include
#include
using namespace std;
void save 1()
{
ofstream of:
of.open("hello1.bat");
if (!of.is_open()){
count <<"open failed "
< return; } of <<"hello World!"< if (of.fail()) count<<"write failed" < of.close(); } void save 2() { ofstream of("hello2.bat"); not finished yetDocumentation:
#include
CFraction F1,F2;
double D;
CString S;
// Assignment
F1 = 5.126; // double
F2 = "5.126"; // string
F1 = "5 63/500"; // string with fraction
D = F1; // double = CFraction
F2 = D; // CFraction = double
// Math
F1 = F2 + D; // Mix and match them
F2 = F1/D;
// any math operation you want
// Comparison
if ((F1 > D) || (F1 < F2))
D = F2/F1;
F2 = 15.0135; // 5 27/2000
S = F2.ToString(); // Returns "5 27/2000"
// Another version of ToString limits the denominator to the passed maximum value.
S = F2.ToString(64); // Returns "15 1/64" because 64 was exceeded with first estimate 1/74
// Or, if you are working with stock prices and you only want to show fractions when
// the deniminator is 2,4,8,16,32,64,128,or 256 or up to passed maximum denominator ( <= 256)
S = F2.ToStockString(); // Returns "15.0135" because fraction is not a normal stock price
// Or, force the denominator to be a valid stock price denominator up to passed Max. Den.
S = F2.ForceToStockString(); // Returns closest stock price "15 3/256"
S = F2.ForceToStockString(64); // Returns closest stock price "15 1/64"
// If you are like me, you are wondering what it will do with PI :-)
F1 = 3.1415926535897932384626433832795; // From Calculator - well beyond doubles capability
S = F1.ToString(); // Returns "3 3612111/25510582" // The difference is about 5.79087e-16
// You can increase precision when you know that a value has a very large denominator.
// A double passed to ToString specifies the allowed error to shoot for.
// Warning: Using a smaller allowed error can cause invalid results for fractions that
// can be accurately converted using a larger allowed error. Also, since __int64 is used,
// a denomintor cannot exceed 18 or 19 digits.
S = F1.ToString(10.0e-50); // Pushing it way up returns "3 36853866/260280919"
// The difference to double precision is 0 because doubles accuracy was reached.
// The actual difference is about 1.27274e-16.
// If you have access to a more accurate type (like Calculator does),
// you can replace double in the code to increase accuracy. You can also
// replace __int64 if you want a denominator > 18 digits.
// Lets try a resonable maximum denominator fo PI, like 999
S = F1.ToString(999); // returns "3 16/113"
// The first three estimates this class gives for PI are 3 1/7, 3 15/106, and 3 16/113
The algorithm was developed using the formula for converting a decimal fraction to a string fraction. Any fractional part can be represented as:
�1/(I1 + 1/(I2 + 1/(I3 + 1/In ...
where I1 is the integer part of the reciprocal of the fraction and I2 is the integer part of the reciprocal minus I1 ... etc. To determine the integer numerator and denominator, the expression can be reduced. It turns out that the numerator is simpler to calculate than the denominator, so the denominator can simply be determined by dividing the numerator by the original decimal.
Reduction of 1/(I1 + 1/(I2 + 1/(I3 + 1/In ... ))) - There is a way to mathmatically reduce this elegantly. However, I think a simple step by step algebraic approach will be understood by more readers.
As we continue, a pattern to the numerators appears
showing that N1 = 1,�� N2 =
I2, and
�� Nn = In*Nn-2 + Nn-3
�
#include
int main() //Find the Day of the Week for a Date
{
int mon, day, year;
cout << "Enter a date for which you wish to know"
<< endl;
cout << "the day of the week (MM DD YYYY)? ";
cin << month >> day >> year;
if (year < 1752)
cout << "Only Gregorian dates accepted, sorry "
<< endl;
else {
if (month < 3) { //Jan & Feb = 13 & 14 preceding year
month += 12;
year -= 1;
{ // end if
weekDay = (day + 2*month + 3*(month+1)/5 + year +
year/4 - year/100 + year/400 + 1) % 7;
if (month > 12) { //reset Jan & Feb
month -= 12;
year += 1 ;
} // end if
cout << month << "/" < day <<
"/" << year << " falls on ";
switch (weekday)
{
case 0: cout << "Sunday" << endl; break;
case 1: cout << "Monday" << endl; break;
case 2: cout << "Tuesday" << endl; break;
case 3: cout << "Wednesday" << endl; break;
case 4: cout << "Thursday" << endl; break;
case 5: cout << "Friday" << endl; break;
case 6: cout << "Saturday" << endl; break;
} // end switch
} // end else
return 0;
} // end main
There were 5 mistakes in that so change them , or you will not be able to compile or run it.
In case you can't figure out the errors here they
are:
Line 5: change mon to month
add the variable weekday
Line 8: change the << to >>
(we want to save the value to a variable, not write it to the
output stream)
Line 15: change the { to } (we want to end the block, not start
one)
Line 16: change weekDay to weekday to match the declaration
Line 20: change the < to <<
Continue correcting errors and rebuilding until you have no
errors:
Enpoj and if you have any questions or useless facts tell me in
my guest book.
�
�
�