C++ 用于检查数组中合成图形的最大公约数的函数 #包括 使用名称空间std; int sal_sk(int sal){//如果sal是一个复合图形,则为真,如果不是,则为假。 对于(int i=2;i 0){ c=b; b=a%b; a=c; } 返回a; } int main(){ int-ok; 做{ int n;//元素数 int*a// 内萨尔; cout
我甚至不需要一直读到数组部分就知道这个程序永远不会工作 我给你一个提示:C++ 用于检查数组中合成图形的最大公约数的函数 #包括 使用名称空间std; int sal_sk(int sal){//如果sal是一个复合图形,则为真,如果不是,则为假。 对于(int i=2;i 0){ c=b; b=a%b; a=c; } 返回a; } int main(){ int-ok; 做{ int n;//元素数 int*a// 内萨尔; cout,c++,arrays,function,C++,Arrays,Function,我甚至不需要一直读到数组部分就知道这个程序永远不会工作 我给你一个提示:sal_sk将始终返回true。另外,true和false不是int 就程序的其余部分而言,它几乎是不可出售的。你有一个opendo语句没有结果,main是不完整的,ok和sal变量是未使用的(?)。您正试图将cin数据放入未初始化的指针中。该new语句使用了错误的变量,而且它不在应该的位置。for循环从1开始索引,这是错误的,应该是0,并且if的括号位置错误循环体本身会破坏阵列 我建议你完全删除主函数,从头开始。除了阅读C
sal_sk
将始终返回true
。另外,true
和false
不是int
就程序的其余部分而言,它几乎是不可出售的。你有一个opendo
语句没有结果,main
是不完整的,ok
和sal
变量是未使用的(?)。您正试图将cin
数据放入未初始化的指针中。该new
语句使用了错误的变量,而且它不在应该的位置。for循环从1
开始索引,这是错误的,应该是0
,并且if
的括号位置错误循环体本身会破坏阵列
<>我建议你完全删除<代码>主<代码>函数,从头开始。除了阅读C++书籍,我能给你的最好建议是逐行阅读代码,并向你自己解释它所做的。如果你不能,回到书本。
几点提示:您不需要任何
do…而
语句,您希望在请求输入之前初始化数组,并且希望请求输入n次。if(sal_sk(A[i]==true))
我认为这不是你想要的。它采用了一些隐式转换,最终将a[I]
的传递值转换为1
(除非a[I]
是0
,否则它将保持0
)。您可能想删除==true
。尝试删除==true
似乎没有帮助,如果您必须为a[]
保留内存(新的,向量更好)此外,在lkd
中,您应该检查a>b
。如果没有,则交换。当然,sal_sk
应该返回一个bool
您忘记了写入结果…如何检查程序?
#include <iostream>
using namespace std;
int sal_sk (int sal){ // If sal is a composite figure, then true, if its not then false.
for (int i = 2; i <= sal; i++){
if(sal%i==0)
return true;}
return false;
}
int lkd(int a,int b){ // Checks the gcd
int c;
while(b > 0) {
c = b;
b = a % b;
a = c;
}
return a;
}
int main(){
int ok;
do{
int n;//Number of elements
int*a; //
int sal;
cout<<"Put in the number of elements"<<endl;
std::cin >> n;
cout<<"Input"<<n<<"elements"<<endl;
std::cin >> *a;
int *array = new int[*a];
int rez = a[0];
for(int i=1; i<n; i++) {
if(sal_sk(a[i]==true))
rez = lkd(rez, a[i]);
delete [] array;
}