"foo++;" 让我的质数查找器崩溃
"foo++;" crashes my prime number finder
今天我试着做一个程序,试图找到质数,将它们添加到数组:"arraiki",然后通过比较数组:"arraiki" 和自动填充的数组来检查它是否正常工作: "myInput"。
但不幸的是,当我试图更改 temp 的值时,它会自行崩溃,即数组的索引:"arraiki".
迷你版。
int temp = 0;
{
loop, if...
arraiki[temp] = i;
temp++;
}
完整代码:
#include <iostream>
using namespace std;
string prime(int &range)
{
string answer="";
for (int i=2; i<range; i++)
{
if (range%i==0) answer = "NOPE";
}
if(answer=="NOPE") return "NAH";
else return "TRUTH";
}
int main()
{
int arraiki[] = {};
int myInput[] = {2,5,7};
int temp = 0;
for (int i = 2; i<100; i++)
{
if(prime(i)=="TRUTH")
{
arraiki[temp] = i;
/// --> causes problem temp++;
/*error.log()*/ cout << "temp is: " << temp << " value of arraiki is: " <<arraiki[temp] << " and i: " << i << endl;
}
}
/// SOON ™
/*
for (int =0; i<(sizeof(arraiki)/sizeof(arraiki[0])); i++)
{
if(arraiki[i]==myInput[i])
cout << "OK AT: " << i << endl;
else
cout << "SMTH WENT WRONG AT: " << i << endl;
}
*/
return 0;
}
temp++ 错误 "log";已关闭
temp 是:0 arraiki 的值是:2 和 i:2
temp is: 0 arraiki 的值是: 3 and i: 3
temp 是:0 arraiki 的值是:5 和 i:5
temp 是:0 arraiki 的值是:7 和 i:7
temp 是:0 arraiki 的值是:11 和 i:11
temp is: 0 arraiki 的值是: 13 and i: 13
temp 是:0 arraiki 的值是:17 和 i:17
temp 是:0 arraiki 的值是:19 和 i:19
temp is: 0 arraiki 的值是: 23 and i: 23
temp 是:0 arraiki 的值是:29 和 i:29
(...)
temp is: 0 arraiki 的值是: 97 and i: 97
所以,它正确显示素数。
PS:我可以做得更好吗?请诚实。
我不确定你使用的是什么语言,但它看起来像 C++。如果是,则必须先声明 arraiki
中的元素数,然后才能对数组使用非零索引。尝试:
int arraiki[100] ;
而不是
int arraiki[] = {};
今天我试着做一个程序,试图找到质数,将它们添加到数组:"arraiki",然后通过比较数组:"arraiki" 和自动填充的数组来检查它是否正常工作: "myInput"。 但不幸的是,当我试图更改 temp 的值时,它会自行崩溃,即数组的索引:"arraiki".
迷你版。
int temp = 0;
{
loop, if...
arraiki[temp] = i;
temp++;
}
完整代码:
#include <iostream>
using namespace std;
string prime(int &range)
{
string answer="";
for (int i=2; i<range; i++)
{
if (range%i==0) answer = "NOPE";
}
if(answer=="NOPE") return "NAH";
else return "TRUTH";
}
int main()
{
int arraiki[] = {};
int myInput[] = {2,5,7};
int temp = 0;
for (int i = 2; i<100; i++)
{
if(prime(i)=="TRUTH")
{
arraiki[temp] = i;
/// --> causes problem temp++;
/*error.log()*/ cout << "temp is: " << temp << " value of arraiki is: " <<arraiki[temp] << " and i: " << i << endl;
}
}
/// SOON ™
/*
for (int =0; i<(sizeof(arraiki)/sizeof(arraiki[0])); i++)
{
if(arraiki[i]==myInput[i])
cout << "OK AT: " << i << endl;
else
cout << "SMTH WENT WRONG AT: " << i << endl;
}
*/
return 0;
}
temp++ 错误 "log";已关闭
temp 是:0 arraiki 的值是:2 和 i:2
temp is: 0 arraiki 的值是: 3 and i: 3
temp 是:0 arraiki 的值是:5 和 i:5
temp 是:0 arraiki 的值是:7 和 i:7
temp 是:0 arraiki 的值是:11 和 i:11
temp is: 0 arraiki 的值是: 13 and i: 13
temp 是:0 arraiki 的值是:17 和 i:17
temp 是:0 arraiki 的值是:19 和 i:19
temp is: 0 arraiki 的值是: 23 and i: 23
temp 是:0 arraiki 的值是:29 和 i:29
(...)
temp is: 0 arraiki 的值是: 97 and i: 97
所以,它正确显示素数。
PS:我可以做得更好吗?请诚实。
我不确定你使用的是什么语言,但它看起来像 C++。如果是,则必须先声明 arraiki
中的元素数,然后才能对数组使用非零索引。尝试:
int arraiki[100] ;
而不是
int arraiki[] = {};