How to collapse integers in text file into single digit in the fastest time?

Hi experts!

I have this text file consist of integers (10 MB file) and i want to collapse all the integers into single digit in the fastest time possible. Imagine 10MB of file would consist of how many integers..

I need help on this urgently..maybe you guys can put comments on the coding you wrote so i can understand the process in the coding  because i'm not so good with C++..

i give away 500 points for the best solution..

thanks a lot..
Diode_TempAsked:
Who is Participating?
 
jkrConnect With a Mentor Commented:
>>doesn't require sstream!

Um, but there's something else at odds a *lot* if a stringstream is giving trouble. At least, that's part of the C++ standard.
0
 
jhshuklaCommented:
binary or text. what is the collapsing mechanism? an example:
1234567890
sum of digits = 45
sum of digits = 9
now the number is single digit so you stop.
0
 
Diode_TempAuthor Commented:
i forgot..

the integers in the text file is in one line.. but it would be a long one to make it 10MB.. no space between the integers..

12347435794864982316498652189236598236593218659213865923659385698231659   -->>  all through the way..

collapse them in single digit (plus each integers until get single digit)

cheers
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
Diode_TempAuthor Commented:
yeah jhshukla.. exactly like you said.. :)
0
 
guntherothkCommented:
Presumably your 10Mb of text is meant to have some format. How many characters represent each integer? Or do you simply want to pack two 4-bit digits into each byte to halve the size of the file?
0
 
jkrCommented:
So you could

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;

int main () {

    ifstream is ( "file.txt");
    string str;

    getline(is,str);

    while(str.size() != 1) {

        for ( int i = 0; i < str.size(); ++i) {

             n+=str[i]-'0';
        }

        stringstream ss;

        ss << n;

        str = ss.str();
    }

    cout << n << endl;

    return 0;
}
0
 
jhshuklaCommented:
jkr:
...
n += str[i]-'0'
n %= 10;
...

jaydutt
0
 
jkrCommented:
>>n %= 10;

No, that's being taken of during the next round in the 'while()' loop.
0
 
jhshuklaCommented:
yup. my bad.
0
 
Diode_TempAuthor Commented:
hi jkr..

i'm having problem compiling your codes because my compiler said it was unable to open include file "sstream.h". I'm using Borland C++ version 5.02.

0
 
jkrCommented:
>> my compiler said it was unable to open include file "sstream.h"

There shouldn't be such a file - it is <sstream>, without a trailing .h extension. You might want to check if there's an updated STL version for your compiler at www.stlport.org
0
 
Diode_TempAuthor Commented:
i put <sstream> without .h extension and that is the error msg.

i'll try to find the updated STL version you said (although i don't know what it is..:)
0
 
jkrCommented:
That's baiscally a bunch of header files to replace your STL an the one or the other library...
0
 
Diode_TempAuthor Commented:
i try to install the updated STL but still cannot.. iguess the installion is not a success because it abit messy that i could not understand how to install..

so is there any way to solve this or if there is any other codings that can do the same function?
i like your coding because it short andunderstandable..but i cannot compile it..sorry
0
 
jhshuklaCommented:
...
n += str[i]-'0'
n %= 10;
...

doesn't require sstream!
0
 
Diode_TempAuthor Commented:
it give error now..

Error:  NONAME01.CPP(12,20):Could not find a match for 'std::getline(ifstream,std::basic_string<char,std::string_char_traits<char>,std::allocator<char>>)'

any other codings? Please..
0
 
Diode_TempAuthor Commented:
Anyone please?

jkr? Any other ways?
0
 
jhshuklaCommented:
did you try what I posted? I am not trying to prove jkr wrong but you should try everything that is posted here and that makes sense to you.
0
 
Diode_TempAuthor Commented:
i've tried your version and posted the error up there..

Error:  NONAME01.CPP(12,20):Could not find a match for 'std::getline(ifstream,std::basic_string<char,std::string_char_traits<char>,std::allocator<char>>)'

If there any modification to be done?
0
 
jhshuklaCommented:
i tried and it compiles and runs fine with MSVC++ 6.0.
try is.getline()
0
 
jhshuklaCommented:
no prob with bcc either. here's command line output

C:\Documents and Settings\Jaydutt>bcc32 cpp.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
cpp.cpp:
Warning W8012 cpp.cpp 17: Comparing signed and unsigned values in function main()
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

C:\Documents and Settings\Jaydutt>

Jaydutt
0
 
Diode_TempAuthor Commented:
sorry Jaydutt.. i've tried.. but still got error..both bcc and msvc++..

can you please write here the whole coding with the changes you made? maybe i wrote the codes wrongly..i'm not so good in C++ even the basics one.. if possible for Borland C++ because i familiar wth Borland C++...i don't know how to detect the error if using MSVC++..it just show errors found but not pointed where the error is..maybe i'm the only one who do not know to use MSVC++ :)

thanks
0
 
Hamed ZaghaghiProgrammerCommented:
you must use these headers:

<iostream> --->  <iostream.h>
<fstream>  --->  <fstream.h>
<string>     --->  <string.h>
<sstream> --->  <strstrea.h> or <strstream.h>

have a good programming day.
0
 
jhshuklaConnect With a Mentor Commented:
sorry again for late response. and no I did not make any major change in the code. I copy-pasted jkr's code (10/08/2004 11:23AM EDT) and declared variable n. but that is not what the compiler is complaining about.
0
 
jhshuklaCommented:
50+/-10 points to jkr
50+/-10 points to jhshukla
delete the rest of points.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.