Diode_Temp
asked on
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..
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..
ASKER
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..
12347435794864982316498652 1892365982 3659321865 9213865923 6593856982 31659 -->> all through the way..
collapse them in single digit (plus each integers until get single digit)
cheers
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..
12347435794864982316498652
collapse them in single digit (plus each integers until get single digit)
cheers
ASKER
yeah jhshukla.. exactly like you said.. :)
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?
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;
}
#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;
}
jkr:
...
n += str[i]-'0'
n %= 10;
...
jaydutt
...
n += str[i]-'0'
n %= 10;
...
jaydutt
>>n %= 10;
No, that's being taken of during the next round in the 'while()' loop.
No, that's being taken of during the next round in the 'while()' loop.
yup. my bad.
ASKER
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.
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.
>> 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
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
ASKER
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..:)
i'll try to find the updated STL version you said (although i don't know what it is..:)
That's baiscally a bunch of header files to replace your STL an the one or the other library...
ASKER
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
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
...
n += str[i]-'0'
n %= 10;
...
doesn't require sstream!
n += str[i]-'0'
n %= 10;
...
doesn't require sstream!
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
it give error now..
Error: NONAME01.CPP(12,20):Could not find a match for 'std::getline(ifstream,std ::basic_st ring<char, std::strin g_char_tra its<char>, std::alloc ator<char> >)'
any other codings? Please..
Error: NONAME01.CPP(12,20):Could not find a match for 'std::getline(ifstream,std
any other codings? Please..
ASKER
Anyone please?
jkr? Any other ways?
jkr? Any other ways?
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.
ASKER
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_st ring<char, std::strin g_char_tra its<char>, std::alloc ator<char> >)'
If there any modification to be done?
Error: NONAME01.CPP(12,20):Could not find a match for 'std::getline(ifstream,std
If there any modification to be done?
i tried and it compiles and runs fine with MSVC++ 6.0.
try is.getline()
try is.getline()
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
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
ASKER
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
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
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.
<iostream> ---> <iostream.h>
<fstream> ---> <fstream.h>
<string> ---> <string.h>
<sstream> ---> <strstrea.h> or <strstream.h>
have a good programming day.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
50+/-10 points to jkr
50+/-10 points to jhshukla
delete the rest of points.
50+/-10 points to jhshukla
delete the rest of points.
1234567890
sum of digits = 45
sum of digits = 9
now the number is single digit so you stop.