我有一个程序应该打印2个列表,如下一个列表,基本相同的列表但向后,但它第一次工作,但它打印一些奇怪的输出,我将显示下面。
0123456789
9876543210
但是我从我的程序得到的实际输出是:
任何人都可以告诉我我的代码有什么问题,我不知道为什么我会得到这个输出。
void createFile(){
ofstream myfile;
myfile.open ("TEST1.txt");
for(int x = 0; x < 10; x++){
myfile << x << "\n";
}
myfile.close();
}
void popArray(int array1[]){
ifstream infile("TEST1.txt");
int x;
while(infile >> array1[x]){
cout << array1[x];
}
}
void reverseList(int array2[]){
for(int x = 9; x > -1; x--){
cout << setw(2) << array2[x];
}
}
void checkLists(int array1[], int array2[], int sizeOfArray){
for(int x = array1[1]; x < sizeOfArray; x++){
for(int y = array2[1]; x < sizeOfArray; x++){
if(x == y)
cout << "Palindrome" << endl;
else{
cout << "Not" << endl;
}
}
}
}
int main()
{
int array1[10];
int array2[10];
createFile();
popArray(array1);
cout << "\n";
reverseList(array1);
cout << "\n";
checkLists(array1, array2, 10);
}
答案 0 :(得分:2)
我认为这是个问题:
void popArray(int array1[]){
ifstream infile("TEST1.txt");
int x;
while(infile >> array1[x]){
cout << array1[x];
}
}
你永远不会指明x是什么。如果我理解你要做什么,我认为这应该有效:
void popArray(int array1[]){
ifstream infile("TEST1.txt");
int x;
for (x=0; x < 10; x++){
cout << array1[x];
}
}
再读一遍。你在这里也有错误:
void checkLists(int array1[], int array2[], int sizeOfArray){
for(int x = array1[1]; x < sizeOfArray; x++){
for(int y = array2[1]; x < sizeOfArray; x++){
if(x == y)
cout << "Palindrome" << endl;
else{
cout << "Not" << endl;
}
}
}
}
我会做类似的事情:
bool checkLists(int array1[], int array2[], int sizeOfArray){
bool isPalindrome=true;
for(int x = 0; x < sizeOfArray; x++){
if(array1[x] != array2[sizeOfArray-(x+1)]){
isPalindrome = false;
}
}
return isPalindrome;
}
然后在main
结束时你可以:
if(checkLists(array1, array2, 10)){
cout << "Is Palindrome\n";
}
else{
cout << "Is Not Palindrome\n";
}
虽然我在这里,但我也可以解决这个问题:
void reverseList(int array2[]){
for(int x = 9; x > -1; x--){
cout << setw(2) << array2[x];
}
}
将其更改为:
void reverseList(int array1[], int array2[]){
for(int i = 0; i < 10; i++){
array2[9-i] = array1[i];
}
}
我认为,如果你将我的答案的所有部分放在一起,你或多或少会有一些有用的东西。我自己没有测试过它。
答案 1 :(得分:1)
void popArray(int array1[]){
ifstream infile("TEST1.txt");
int x;
while(infile >> array1[x]){
cout << array1[x];
}
}
您没有在循环中更改x
(或根本没有初始化x
!)
答案 2 :(得分:0)
for(int x = array1[1]; x < sizeOfArray; x++){
for(int y = array2[1]; x < sizeOfArray; x++){if(x == y)
cout << "Palindrome" << endl;
else{
cout << "Not" << endl;
}
}
我应该用这个代替你的代码
for(int x = 0; x < sizeOfArray; x++){
for(int y = 0; y < sizeOfArray; y++){
if(array1[x]== array2[y])
cout << "Palindrome" << endl;
else{
cout << "Not" << endl;
}
}