尽管是一个 Project Euler 程序,但下面的代码实际上并不太关心它。我想添加 50 个 100 位数字,并将每个数字的每个数字分配给数组 addends[100][50] 中的一个元素。然后我会单独添加每个数字/位置,并结转额外的数字。这些数字是从名为 的文本文件中读取的Input.txt
,它仅包含所有数字。http://projecteuler.net/problem=13
我无法string numbers[100][50]
从文件输入流 ( <fstream>
) 将字符分配给字符串数组 ( ) 的元素。评论中更完整地描述了该问题:
“[对于第一个循环] 这个循环为字符串数组中的每个字符串分配一个数字。即使第二个数字 (50) 没有做任何事情(它似乎被 std::string 覆盖;参见变量声明),它需要在那里才能使循环工作。循环的“逻辑”相同;“j”什么也不做,但需要在那里才能使循环工作?
而且,(对于第二个循环)“这个循环从相应的字符串数组元素中填充“addends[100][50]”数组。如果我尝试用数组“numbers[i] 调用“char_to_int()” [j]”,编译器抱怨输入的数据类型不正确。添加变量“k”使循环运行一次,但最终在第二次循环中崩溃(使用“numbers[i][j ][k]")。所以我尝试了“char_to_int((numbers[i][j]).c_str())”,但编译器抱怨“const char *”与“char”不兼容。添加指针可以解决问题 ("char_to_int( *( (numbers[i][j]).c_str() ) )"),但程序稍后仍然崩溃。" 我取出了一些无关紧要的代码以使其更具可读性。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int char_to_int(char chInput);
int main()
{
int placeholder; //so console doesn't close immediately upon finish
int sum[102] = {0}; // 100+2, 100 places + 2 places from carrying over
int addends[100][50] = {0};
string numbers[100][50];
ifstream input("Input.txt");
/* This loop assigns a number to every string in the string array. Even
* though the second number (50) doesn't do anything (it seems to be
* overridden by std::string; see variable declaration), it needs to be
* there for the loop to work. Same "logic" for the loop; "j" doesn't do
* anything but needs to be there??? Confused :-\
*/
for (int i = 0; i < 100; i++)
for (int j = 0; j < 1; j++)
getline(input, numbers[i][j]);
/* This loop fills in the "addends[100][50]" array from the corresponding
* string array element. If I try to call "char_to_int()" with the array
* "numbers[i][j]", the compliler complains that the input isn't of the
* right data type. Adding a variable "k" makes the loop work for one run,
* but eventually crashes on the second loop (using "numbers[i][j][k]").
* So I tried "char_to_int((numbers[i][j]).c_str())", but the compiler
* complains that "const char *" is incompatible with "char". Adding a
* pointer resolves the issue ("char_to_int( *( (numbers[i][j]).c_str() ) )"),
* but the program still crashes on the second loop through.
*/
for (int i = 0; i < 100; i++)
for (int j = 0; j < 50; j++)
for (int k = 0; k < 1; k++) //used when the variable "k" was being used
addends[i][j] = char_to_int( (numbers[i][j]).c_str() );
return 0;
}
代码还没有完成;我决定不继续,因为我(显然)需要先解决这个问题。