C++ 此代码必须打印索引位置数组,但它不打印任何内容
这是一个完整的问题:- 数组的所有索引C++ 此代码必须打印索引位置数组,但它不打印任何内容,c++,C++,这是一个完整的问题:- 数组的所有索引 给您一个数字n,表示元素的计数 给你n个数字 给你一个数字x 您需要找到数组a中x出现的所有索引 返回一个适当大小的数组,该数组包含数组a中x出现的所有索引 样本输入 6. 15 11 40 4. 4. 九, 样本输出 3. 四, 这是我的代码:- #include<iostream> using namespace std; int* allIndices(int arr[],int n,int x,int idx,int* fsf){
#include<iostream>
using namespace std;
int* allIndices(int arr[],int n,int x,int idx,int* fsf){
if(idx==n){
int *q=new int[*fsf];
return q;
}
if(arr[idx]==x){
int* iarr=allIndices(arr,n,x,idx+1,fsf+1);
iarr[*fsf]=idx;
return iarr;
}
else{
int* iarr=allIndices(arr,n,x,idx+1,fsf);
return iarr;
}
}
int main(){
int n;
cin>>n;
int *p = new int[n];
for(int i=0;i<n;i++)
cin>>p[i];
int x;
cin>>x;
int k=0;
int *y=allIndices(p,n,x,0,&k);
for(int i=0;i<k;i++){
cout<<y[i]<<endl;
}
}
#包括
使用名称空间std;
int*allIndices(int arr[],int n,int x,int idx,int*fsf){
如果(idx==n){
int*q=新的int[*fsf];
返回q;
}
如果(arr[idx]==x){
int*iarr=所有属性(arr、n、x、idx+1、fsf+1);
iarr[*fsf]=idx;
返回iarr;
}
否则{
int*iarr=所有属性(arr,n,x,idx+1,fsf);
返回iarr;
}
}
int main(){
int n;
cin>>n;
int*p=新的int[n];
对于(int i=0;i>p[i];
int x;
cin>>x;
int k=0;
int*y=allIndices(p、n、x、0和k);
对于(inti=0;i你有k=0
,然后你在循环头中有i=0
,然后你有条件i,这做得很好。你可能有点太复杂了
#include <iostream>
using namespace std;
int* alLIndices(int arr[], int n, int x){
int *y = new int[n];
for(int i=0; i<n; i++){
if(arr[i] == x){
y[i] = i;
}
}
cout<<"Number "<<x<<" occurs at indices: "<<endl;
for(int i=0; i<n; i++){
cout<<y[i]<<endl;
}
}
int main() {
int n;
cout<<"Enter n: ";
cin>>n;
int *p = new int[n];
cout<<"Enter an array of numbers: "<<endl;
for(int i=0; i<n; i++)
cin>>p[i];
int x;
cout<<"Enter x: ";
cin>>x;
alLIndices(p, n, x);
return 0;
}
#包括
使用名称空间std;
整数*所有标识(整数arr[],整数n,整数x){
int*y=新的int[n];
对于(int i=0;iIs),您有什么具体问题吗?请提出好的问题。您将整数作为指针传递(&k->fsf),但随后传递“指针+1”!这不起作用。您希望k的值会改变,但*fsf永远不会改变。传递fsf作为引用而不是指针会更简单吗?此外,这可能是一个练习,您的老师可能不同意,但使用std::vector比使用动态数组简单得多。在小练习,但不删除分配给new的内存会造成内存泄漏,这是一个坏习惯。谢谢,修复了itI已在函数中传递了k变量的引用,因此allindices函数中创建的更改不会反映在main中,您能建议我如何修复吗it@vedantagarwal试着打印k在循环之前,看。它给出0,但我找不到修复的方法it@vedantagarwal等一下,我会编辑一个解释。@vedantagarwal注意,allIndicies
不会修改fsf
的基本值。您好@a\u Mel,实际上我在学习递归,所以我只想递归解决我的问题,而且我还找到了一个so对此我有点怀疑,但我对这段代码还是有点怀疑。我明白了。youtube上有一段很棒的递归视频。它可能会对你有所帮助。似乎不允许外部链接。只需搜索“解决任何递归问题的5个简单步骤”
int* iarr = allIndices(arr, n, x, idx+1, fsf+1);
#include <iostream>
using namespace std;
int* alLIndices(int arr[], int n, int x){
int *y = new int[n];
for(int i=0; i<n; i++){
if(arr[i] == x){
y[i] = i;
}
}
cout<<"Number "<<x<<" occurs at indices: "<<endl;
for(int i=0; i<n; i++){
cout<<y[i]<<endl;
}
}
int main() {
int n;
cout<<"Enter n: ";
cin>>n;
int *p = new int[n];
cout<<"Enter an array of numbers: "<<endl;
for(int i=0; i<n; i++)
cin>>p[i];
int x;
cout<<"Enter x: ";
cin>>x;
alLIndices(p, n, x);
return 0;
}