View Single Post
Old 12-16-2006, 01:54 AM   #1 (permalink)
the_master
Recruit
 
Join Date: Dec 2006
Posts: 1
the_master is on a distinguished road
A small problem in the output

Hi guys how are you , hope you are ok. I have a small problem with my code. briefly my program is about chained sequence numbers which requires a user to enter sequences separated by (-1) in an input file as follow:

123 122 121

-1

45 67 89

-1



in the output file the following will be shown:

the sequence 123 122 121 is chained

the sequence 45 67 89 is not chained



( a sequence is called chained when a number is differs by one digit from the previous number )

As can be seen int input that i have to enter -1 between each sequence... that's ok. But my main problem is that i have to enter -1 also after the last entered sequence otherwise an error will be shown in the compiler. so i want to write the input like that :

123 121 123

-1

123 455 788



insted of

123 121 123

-1

123 455 788

-1



also my code should accept only positive numbers, thats ok but in my code -1 will be considred and i think that the first problem will sove this problem



Therefore, how can i fix that problem... i tried too much times but i didn't reach to any thing.... i wonder if you could help me guys.

The code is :

Code:
#include <iostream> #include <fstream> using namespace std; bool differsByOneDigit ( int , int ); void outputResults ( ostream & , const int * , int , bool ); int main() { ifstream input ( "c:\\data.txt" ); ofstream output ( "c:\\out.txt" ); if ( input.fail() || output.fail() ) { cout <<"input or output file did not open!!! " << endl; return 1; } int first , next ; //32bit int == 2147483647 int sequence [ 10 ];//sequence read int seqLength = 0; //sequence length int j; int temp; bool match; //matching sequence int firstSeq; if ( ! ( input >> temp ) ) { //until you here otherwise, bad file format will be handled by program termination. cout << "File has a non-int within" << endl; cout << "Bad file format , terminating program!!! "<< endl ; return 1; } else if ( (temp > 1000000000) || (temp < -1 ) ) { //until you here otherwise, out of range number will be handled by program termination cout << "File has out of range number "<< endl; cout << " TERMINATING program!!! "<< endl; return 1; } while ( ! input.eof() ) { firstSeq = temp; //read next sequence while ( temp != -1 && seqLength < 10 && !input.eof() ) { sequence [ seqLength ++ ] = temp; if ( ! ( input >> temp ) ) { //until you here otherwise, bad file format will be handled by program termination. cout << "File has a non-int within"<< endl; cout << "Bad file format , terminating program!!! "<< endl ; return 1; } else if ( (temp > 1000000000) || (temp < -1 ) ) { //until you here otherwise, out of range number will be handled by program termination cout << "File has out of range number "<< endl; cout << " TERMINATING program!!! " << endl; return 1; } } if ( temp != -1 ) { //until you here otherwise, bad file format will be handled by program termination. cout << "File has a sequence length greater than 10!!!"<< endl; cout << "Bad file format , terminating program!!! "<< endl; return 1; } if ( seqLength <= 1 ) { cout << "Sequence of one or less found!!"<< endl ; cout << "Bad file format , terminating program!!! " << endl; return 0; } sequence [ seqLength ] = -1; j = 0; first = sequence [ j ]; next = sequence [ j + 1 ]; j += 2; match = true; while ( match && next != -1) { match = differsByOneDigit( first , next ); first = next; next = sequence [ j ]; j++; } if ( match ) match = differsByOneDigit ( first , firstSeq ); //check front to back outputResults ( output , sequence , seqLength , match ); if ( ! ( input >> temp ) ) { if ( !input.eof() ) { //until you here otherwise, bad file format will be handled by program termination. cout << "File has a non-int within"<< endl ; cout << "Bad file format , terminating program!!! "<< endl; return 1; } } else if ( (temp > 1000000000) || (temp < -1 ) ) { //until you here otherwise, out of range number will be handled by program termination cout << "File has out of range number "<< endl ; cout << "TERMINATING program!!! "<< endl; return 1; } seqLength = 0; } output.close(); input.close(); return 0; } bool differsByOneDigit ( int first , int next ) { int differentDigits = 0; while ( first != 0 && next != 0 && differentDigits <= 1 ) { if ( first % 10 != next % 10 ) //count different digits differentDigits ++; first /= 10; next /= 10; } if ( differentDigits > 1 || first || next ) return false; else return true; } void outputResults ( ostream & output , const int * sequence , int length , bool isChainedSequence ) { int j = 0; output << "The sequence : "; cout << "The sequence : "; while ( j < length && sequence [ j ] != -1 ) { output << sequence [ j ] << " " ; cout << sequence [ j ++ ] << " " ; if ( j % 7 == 0 ) { output << endl; cout << endl; } } if ( isChainedSequence ) { output << " is chained. " << endl; cout << endl << "has been found....OPEN the output file to CHECK whether is it chained or not" << endl; } else { output << " is not chained. " << endl; cout << endl << "has been found....OPEN the output file to CHECK whether is it chained or not" << endl; } output << endl <<"****************************************************" << endl; cout << endl <<"****************************************************" << endl; }
REGARDS
__________________
the_master is offline   Reply With Quote