# 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..
###### Who is Participating?

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

Commented:
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

Author 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

Author Commented:
yeah jhshukla.. exactly like you said.. :)
0

Commented:
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

Commented:
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

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

jaydutt
0

Commented:
>>n %= 10;

No, that's being taken of during the next round in the 'while()' loop.
0

Commented:
0

Author 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

Commented:
>> 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

Author 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

Commented:
That's baiscally a bunch of header files to replace your STL an the one or the other library...
0

Author 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

Commented:
...
n += str[i]-'0'
n %= 10;
...

doesn't require sstream!
0

Author 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>>)'

0

Author Commented:

jkr? Any other ways?
0

Commented:
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

Author 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

Commented:
i tried and it compiles and runs fine with MSVC++ 6.0.
try is.getline()
0

Commented:
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()

C:\Documents and Settings\Jaydutt>

Jaydutt
0

Author 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

ProgrammerCommented:

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

have a good programming day.
0

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

Commented:
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.