【发布时间】:2012-05-13 19:25:57
【问题描述】:
我正在编写一个基本的国际象棋程序来计算你可以用给定的国际象棋数字做多少组。数据文件:
4
22 3 5 6 2 0
1 1 1 1 1 1
8 4 4 4 1 2
5 3 3 3 0 2
代码:
#include <iostream>
#include <fstream>
#include <vector>
int main
(int argc, char *argv[])
{
std::fstream data_file;
size_t i, k;
std::vector<long> chess;
long t, n;
data_file.open("U1.txt", std::ios::in);
data_file >> n;
for (i = 0; i < n; i++)
chess.push_back(0);
for (i = 0; i < n; i++) {
for (k = 0; k < 6; k++) {
data_file >> t;
std::cout << t << " ";
chess[k] += t;
}
std::cout << std::endl;
}
data_file.close();
for (int i = 0; i < 6; i++)
std::cout << chess[i] << " ";
std::cout << std::endl;
data_file.open("U1rez.txt", std::ios::out);
data_file << n;
std::cout << n << std::endl;
data_file.close();
return EXIT_SUCCESS;
}
输出:
22 3 5 6 2 0
1 1 1 1 1 1
8 4 4 4 1 2
5 3 3 3 0 2
36 11 13 14 3 4
4
为什么我在第 5 行的 36、11、13 和 14 之后的最终结果中得到 3 和 4?当我打印测试值时,我似乎得到了正确的数字,但是在向量容器中添加它们时出现了严重错误。
【问题讨论】:
-
您已将
i和k声明为 size_t ,这是一个无符号整数类型,但您的向量是有符号整数类型。此外,您应该在循环内声明i和k以避免范围冲突。
标签: c++ debugging error-handling