c++ - 检查数组中合成图形的最大公约数的函数
问题描述
#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;
}
所以我有这段代码,但我看不出它为什么不起作用的问题,有人可以帮我吗?这些功能应该可以工作,所以这应该是他们的错,我认为我不太了解数组,所以我认为有问题。注释将帮助您理解代码谢谢!
解决方案
我什至不需要一直阅读到数组部分就可以看到这个程序永远不会工作。
我会给你一个线索:sal_sk
总是会回来true
。还有true
,false
不是int
。
就程序的其余部分而言,它几乎是无法挽救的。您有一个开放do
语句,它无处可去,main
不完整,ok
和sal
变量未使用(???)。您正在尝试将cin
数据转换为未初始化的指针。该new
语句使用了错误的变量,而且它不在它应该在的位置。for
循环从错误开始索引,1
应该是0
,并且if
括号在错误的位置。循环体本身会破坏数组。
我建议您完全删除该main
功能并从头开始。除了阅读 C++ 书籍之外,我能给你的最好建议是逐行阅读你的代码并向自己解释它的作用。如果做不到,就回去看书。
一些提示:您不需要任何do...while
语句,您想在请求输入之前初始化数组,并且您想询问输入n
时间。
推荐阅读
- reactjs - Ionic React v5:配置项目以处理 Sass/Scss 文件
- ruby - 比较两个范围/数组时如何返回匹配项和非匹配项
- java - 读取文件的 Java 代码未在 VS 代码编辑器上编译
- php - 终端中的php openssl库未加载错误
- java - 如何使用对象类型作为方法/构造函数的参数?
- asp.net-core - ASP.NET Core 共享 Cookie 问题
- google-apps-script - 如何在 Gsheet 单元格上显示来自 Google Drive 的图像?
- sql - 如何基于标识列在sql中增量创建项目ID
- powershell - Windows 事件查看器 xPath 查询不适用于某些字符串。转义字符?
- macos - 在 Mac 上的终端输出上搜索文本(不使用终结器)