Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用二维阵列求解C++;_C++_Arrays_Dynamic_Matrix_Primes - Fatal编程技术网

C++ 用二维阵列求解C++;

C++ 用二维阵列求解C++;,c++,arrays,dynamic,matrix,primes,C++,Arrays,Dynamic,Matrix,Primes,我不确定我的程序到底出了什么问题。它编译时不会出错,但它甚至无法正确运行第一个函数。我试着请一些朋友帮我解决这个问题,但他们没有帮助 我希望有人能帮助我,至少让我知道我犯了一个错误,但还没有发现 头文件(sieve.h): #包括 #包括 #包括 #包括 使用名称空间std; 无效FindPrimeNumber(int**,int); 无效打印素数(整数**,整数); 无效FindPrimeNumber(整数**arr,整数n) { 对于(int x=2;x STD::向量< /代码>等等。这一

我不确定我的程序到底出了什么问题。它编译时不会出错,但它甚至无法正确运行第一个函数。我试着请一些朋友帮我解决这个问题,但他们没有帮助

我希望有人能帮助我,至少让我知道我犯了一个错误,但还没有发现

头文件(sieve.h):

#包括
#包括
#包括
#包括
使用名称空间std;
无效FindPrimeNumber(int**,int);
无效打印素数(整数**,整数);
无效FindPrimeNumber(整数**arr,整数n)
{
对于(int x=2;x您这里有一个问题:

//deallocate the array
for(int i = 0; i < row; i++)
{delete[] arr[i];
delete[] arr;}
理想情况下,尽管您甚至不应该像这样使用原始数组,但请使用
std::vector

int z = arr[1][x];
findPrimeNumber
函数中发生这种情况时,
arr[1][x]
尚未初始化,这意味着您在尝试读取该值时有未定义的行为


除此之外,你所做的没有任何意义,似乎也不是埃拉托斯坦筛的实现。你不需要一个二维数组,你需要一个布尔值的一维数组。处理完成后,
arr[N]
如果
N
是素数,则应为
true
,如果
N
不是素数,则应为
false

你为什么要使用2D数组?我正试图教自己如何正确使用动态创建的2D数组。我的教授从未真正教过我如何正确使用2D数组。当然-但你打算如何将2D数组用于一维数组像这个筛子这样的算法?抛开对2d数组的需求不谈,为什么你要在没有初始化的情况下读取数组值?我不知道怎么做。我如何才能将数组的值从1声明为最大值?老实说,这只是一个小问题,而不是主要问题的根本原因。@Doc:是的,这不是根本原因,但我知道这是一个严重的错误,它还突出了代码格式错误的问题(很难发现简单的错误)不知道这是为什么我要尝试使用这个。好的,如果你要正确地学习C++,你就需要真正掌握C++语言和标准容器类,比如“代码> STD::向量< /代码>等等。这一点可能看起来很有挑战性,但最终它比用指针乱搞要容易得多,也更健壮。是的,好的,我找到了关于向量的部分。现在读。
//deallocate the array
for(int i = 0; i < row; i++)
{delete[] arr[i];
delete[] arr;}
//deallocate the array
for(int i = 0; i < row; i++)
{
    delete[] arr[i];
}
delete[] arr;
int z = arr[1][x];