### Project Euler problem 13 issue reading from file

Greetings.

I am having some trouble with a program I made for calculating the first 10 digits of the sum of 100 50-digit numbers (http://projecteuler.net/problem=13) and for whatever reason, it refuses to read the values from the file i pasted the number in.
This is what I have thus far:

 ``12345678910111213141516171819202122232425262728293031323334353637383940`` ``````#include #include using std::cout; using std::endl; int main() { const short nLineSize = 100, nColSize = 50, nDigitSize = 10; char c; std::ifstream ifs("array.txt"); short anArray[nLineSize][nColSize] = { 0 }, i = 0, j = 0; for (i = 0; i < nLineSize; ++i) // the column length is essentially the number of digits in each number, so each row will only contain the digits of one number for (j = 0; j < nColSize; ++j) { ifs >> c; anArray[i][j] = c - '0'; // convert numeric character to integer } ifs.close(); short nDigitSum; short nDigits[nDigitSize] = { 0 }, p = 0; for (i = nColSize - 1; i >= 0; --i) // the summing process will be from left to right, just like a basic mathematical sum { nDigitSum = 0; for (j = 0; j < nColSize; ++j) nDigitSum += anArray[j][i]; // add each line of the same column to the sum if (nDigitSum > 9) // anything higher than 9 is not a digit anymore anArray[j - 1][i - 1] += nDigitSum / 10; // so we add its prefix to the next column of digits nDigits[p] = nDigitSum % 10; // memorize the last digit found in each sum. note that they will be in reverse order p++; } for (i = nDigitSize - 1; i >= 0; --i) cout << nDigits[i] << ' '; cout << endl; return 0; }``````

What I'm going for is essentially something like this:

123 +
128
----
251

The problem is the above code doesn't work when I paste the 100 50-digit numbers into the file (note that there are no spaces or newlines between the digits). It says the stack around the variable "anArray" was corrupted and I have no idea why.
When I use a more rudimentary set of values, such as 123456123456123456123456123456123456 (123456 pasted 6 times), and set nLineSize, nColSize and nDigitSize to 6, it does what it's supposed to do (it prints 740736, which is 123456 * 6).

So, what am I doing wrong?
Thank you in advance.
Last edited on
Topic archived. No new replies allowed.