Closed Thread
Results 1 to 4 of 4

Thread: A small problem in the output

  1. #1
    The_Master is offline Newbie
    Join Date
    Dec 2006
    Posts
    4
    Rep Power
    0

    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. 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 << endl << "File has a non-int within";
           cout << endl << "Bad file format , terminating program!!! ";
           return 1;
       }
       else if ( temp > 1000000000 )
       {
           //until you here otherwise, number greater than 1 billion will be handled by program termination
           cout << endl << "File has number greater than 1 billion";
           cout << endl << "Too large number , terminating program!!! ";
           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 << endl << "File has a non-int within";
                   cout << endl << "Bad file format , terminating program!!! ";
                   return 1;
               }
               else if ( temp > 1000000000 ) 
               {
                   //until you here otherwise, number greater than 1 billion will be handled by program termination
                   cout << endl << "File has number greater than 1 billion";
                   cout << endl << "Too large number , terminating program!!! ";
                   return 1;
               }
           }
           if ( temp != -1 )
           {
               //until you here otherwise, bad file format will be handled by program termination.
               cout << endl << "File has a sequence length greater than 10!!!";
               cout << endl << "Bad file format , terminating program!!! ";
               return 1;
           }
           if ( seqLength <= 1 )
           {
               cout << endl << "Sequence of one or less found!!";
               continue;
           }
           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 << endl << "File has a non-int within";
                   cout << endl << "Bad file format , terminating program!!! ";
                   return 1;
               }
           }
           else if ( temp > 1000000000 ) 
           {
               //until you here otherwise, number greater than 1 billion will be handled by program termination
               cout << endl << "File has number greater than 1 billion";
               cout << endl << "Too large number , terminating program!!! ";
               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 : ";
    
       while ( j < length )
       {
           output << sequence [ j ++ ] << " " ;
           if ( j % 7 == 0 )
               output << endl;
       }
       if ( isChainedSequence )
           output << endl << "Is a chained sequence " << endl;
    
       else
           output << endl << "is a not a chained sequence " << endl;;
    
       output << endl <<"****************************************************" << endl;
    
    }
    Regards

  2. CODECALL Circuit advertisement
    Join Date
    Always
    Posts
    Many

     
  3. #2
    Void's Avatar
    Void is offline Programming Expert
    Join Date
    Jun 2006
    Posts
    410
    Rep Power
    23
    Without looking to in depth into you program it looks like your program will try to read forever if no -1 is found. I suggest that you read all of the input into one string and then split the string by a -1. This would keep you from needing an ending -1.
    Void

  4. #3
    The_Master is offline Newbie
    Join Date
    Dec 2006
    Posts
    4
    Rep Power
    0
    could you please write me the code because i'm very depressed and i dont know what to do

  5. #4
    Join Date
    Jul 2006
    Posts
    16,489
    Blog Entries
    75
    Rep Power
    143
    It sounds like it's not picking up the EOF.
    Programming is a branch of mathematics.
    My CodeCall Blog | My Personal Blog

Closed Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Small problem + Array
    By Jerryn in forum PHP Development
    Replies: 5
    Last Post: 05-13-2011, 03:42 PM
  2. small problem with eclipse CDT
    By soso in forum Software Development Tools
    Replies: 0
    Last Post: 03-02-2011, 08:05 AM
  3. Small problem
    By Edvinas in forum PHP Development
    Replies: 2
    Last Post: 06-16-2010, 07:10 AM
  4. problem with output
    By Siten0308 in forum C# Programming
    Replies: 12
    Last Post: 09-24-2008, 06:09 PM
  5. A small Problem
    By Timotay in forum Python
    Replies: 2
    Last Post: 10-18-2007, 09:45 AM

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts