包含多维数组的程序出错
Error with program containing multidimensional array
编写此程序时遇到一些错误。搜索了一段时间,但我找不到有同样问题的人,多维数组。
这个程序的目的很普通。制作一个数组,用随机整数填充它,显示,显示偶数,以奇怪的方式排序。再次显示。
//main.cpp
#include "header.h"
#include <iostream>
using namespace std;
int main()
{
int arrayInt[fd][sd];
initializeArray(arrayInt[fd][sd]);
}
//functions.cpp
#include <iostream>
#include "header.h"
using namespace std;
void displayArray(int arrayInt[][sd])
{
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 6; i++)
{
cout << arrayInt[i][j];
}
cout << "" << endl;
}
system("pause");
}
void initializeArray(int arrayInt[][sd])
{
for (int i = 0; i < 9; i++)
{
for (int j = 0; i < 6; i++)
{
arrayInt[i][j] = rand() % 101;
}
}
displayArray(arrayInt[fd][sd]);
evenArray(arrayInt[fd][sd]);
sortArray(arrayInt[fd][sd]);
displayArray(arrayInt[fd][sd]);
}
void sortArray(int arrayInt[][sd])
{
int temp = 0;
for (int i = 0; i < 9; i++)
{
if (i % 2 == 0)
for (int j = 0; i < 6; i++)
{
while (arrayInt[i][j] > arrayInt[i][j + 1])
{
temp = arrayInt[i][j];
arrayInt[i][j] = arrayInt[i][j + 1];
arrayInt[i][j + 1] = temp;
}
while (arrayInt[i][j] < arrayInt[i][j - 1])
{
temp = arrayInt[i][j];
arrayInt[i][j] = arrayInt[i][j - 1];
arrayInt[i][j - 1] = temp;
}
}
if (i % 2 == 1)
for (int j = 0; i < 6; i++)
{
while (arrayInt[i][j] < arrayInt[i][j + 1])
{
temp = arrayInt[i][j];
arrayInt[i][j] = arrayInt[i][j + 1];
arrayInt[i][j + 1] = temp;
}
while (arrayInt[i][j] > arrayInt[i][j - 1])
{
temp = arrayInt[i][j];
arrayInt[i][j] = arrayInt[i][j - 1];
arrayInt[i][j - 1] = temp;
}
}
}
system("pause");
}
void evenArray(int arrayInt[][sd])
{
int temp = 0;
for (int i = 0; i < 9; i++)
{
for (int j = 0; i < 6; i++)
{
if (arrayInt[i][j] % 2 == 0)
{
temp +=1;
cout << arrayInt[i][j];
}
}
cout << "" << endl;
}
system("pause");
}
//header.h
#include <iostream>
#include <string>
using namespace std;
const int fd = 8;
const int sd = 5;
void displayArray(int arrayInt [][sd]);
void initializeArray(int arrayInt [][sd]);
void sortArray(int arrayInt [][sd]);
void evenArray(int arrayInt [][sd]);
错误:
错误 C2664:'void sortArray(int [][5])':无法将参数 1 从 'int' 转换为 'int [][5]'functions.cpp
错误 C2664:'void initializeArray(int [][5])':无法将参数 1 从 'int' 转换为 'int [][5]' main.cpp
错误 C2664:'void evenArray(int [][5])':无法将参数 1 从
'int' 到 'int [][5]' functions.cpp
错误 C2664:'void displayArray(int [][5])':无法将参数 1 从 'int' 转换为 'int [][5]'functions.cpp
错误 C2664:'void displayArray(int [][5])':无法将参数 1 从 'int' 转换为 'int [][5] 'functions.cpp
当您将 array
传递给函数时,您必须仅传递数组名称。
arrayInt[fd][sd]
指的是一个元素。数组索引也从 0 开始。最后一个元素由
访问
arrayInt[fd-1][sd-1]
.
所以arrayInt[fd][sd]
导致溢出
所以改变initializeArray(arrayInt[fd][sd]);
至
initializeArray(arrayInt);
并更改其他此类调用以便仅传递数组名称
行
initializeArray(arrayInt[fd][sd]);
没有意义,因为 arrayInt[fd][sd]
是 int
类型;调用函数如下。
initializeArray(arrayInt);
编写此程序时遇到一些错误。搜索了一段时间,但我找不到有同样问题的人,多维数组。
这个程序的目的很普通。制作一个数组,用随机整数填充它,显示,显示偶数,以奇怪的方式排序。再次显示。
//main.cpp
#include "header.h"
#include <iostream>
using namespace std;
int main()
{
int arrayInt[fd][sd];
initializeArray(arrayInt[fd][sd]);
}
//functions.cpp
#include <iostream>
#include "header.h"
using namespace std;
void displayArray(int arrayInt[][sd])
{
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 6; i++)
{
cout << arrayInt[i][j];
}
cout << "" << endl;
}
system("pause");
}
void initializeArray(int arrayInt[][sd])
{
for (int i = 0; i < 9; i++)
{
for (int j = 0; i < 6; i++)
{
arrayInt[i][j] = rand() % 101;
}
}
displayArray(arrayInt[fd][sd]);
evenArray(arrayInt[fd][sd]);
sortArray(arrayInt[fd][sd]);
displayArray(arrayInt[fd][sd]);
}
void sortArray(int arrayInt[][sd])
{
int temp = 0;
for (int i = 0; i < 9; i++)
{
if (i % 2 == 0)
for (int j = 0; i < 6; i++)
{
while (arrayInt[i][j] > arrayInt[i][j + 1])
{
temp = arrayInt[i][j];
arrayInt[i][j] = arrayInt[i][j + 1];
arrayInt[i][j + 1] = temp;
}
while (arrayInt[i][j] < arrayInt[i][j - 1])
{
temp = arrayInt[i][j];
arrayInt[i][j] = arrayInt[i][j - 1];
arrayInt[i][j - 1] = temp;
}
}
if (i % 2 == 1)
for (int j = 0; i < 6; i++)
{
while (arrayInt[i][j] < arrayInt[i][j + 1])
{
temp = arrayInt[i][j];
arrayInt[i][j] = arrayInt[i][j + 1];
arrayInt[i][j + 1] = temp;
}
while (arrayInt[i][j] > arrayInt[i][j - 1])
{
temp = arrayInt[i][j];
arrayInt[i][j] = arrayInt[i][j - 1];
arrayInt[i][j - 1] = temp;
}
}
}
system("pause");
}
void evenArray(int arrayInt[][sd])
{
int temp = 0;
for (int i = 0; i < 9; i++)
{
for (int j = 0; i < 6; i++)
{
if (arrayInt[i][j] % 2 == 0)
{
temp +=1;
cout << arrayInt[i][j];
}
}
cout << "" << endl;
}
system("pause");
}
//header.h
#include <iostream>
#include <string>
using namespace std;
const int fd = 8;
const int sd = 5;
void displayArray(int arrayInt [][sd]);
void initializeArray(int arrayInt [][sd]);
void sortArray(int arrayInt [][sd]);
void evenArray(int arrayInt [][sd]);
错误:
错误 C2664:'void sortArray(int [][5])':无法将参数 1 从 'int' 转换为 'int [][5]'functions.cpp 错误 C2664:'void initializeArray(int [][5])':无法将参数 1 从 'int' 转换为 'int [][5]' main.cpp 错误 C2664:'void evenArray(int [][5])':无法将参数 1 从 'int' 到 'int [][5]' functions.cpp 错误 C2664:'void displayArray(int [][5])':无法将参数 1 从 'int' 转换为 'int [][5]'functions.cpp 错误 C2664:'void displayArray(int [][5])':无法将参数 1 从 'int' 转换为 'int [][5] 'functions.cpp
当您将 array
传递给函数时,您必须仅传递数组名称。
arrayInt[fd][sd]
指的是一个元素。数组索引也从 0 开始。最后一个元素由
arrayInt[fd-1][sd-1]
.
所以arrayInt[fd][sd]
导致溢出
所以改变initializeArray(arrayInt[fd][sd]);
至
initializeArray(arrayInt);
并更改其他此类调用以便仅传递数组名称
行
initializeArray(arrayInt[fd][sd]);
没有意义,因为 arrayInt[fd][sd]
是 int
类型;调用函数如下。
initializeArray(arrayInt);