gpt4 book ai didi

c++ - C++中的数组压缩和搜索(基础)

转载 作者:行者123 更新时间:2023-11-30 03:36:21 25 4
gpt4 key购买 nike

所以我需要有关 20 个元素的数组的帮助。

我需要找到每个元素的绝对值,如果它的值小于 1,则从数组中删除该元素。然后在数组的末尾放置 0 代替删除的元素。

所以我正在寻找一些可以帮助我做到这一点的功能。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>



int OddSumm(int arr[], int lenght)
{
int i,p,z;
p=0;
for (i=0; i<lenght; i++)
if(arr[i]%2!=0 && arr[i]!=0 ){
p+=arr[i];
}
return p;
}

int SummBetweenNegativeNumbers(int arr[], int lenght) {
int s,i,r,z;
s=0;

for (i=0; i<lenght; i++)
if(arr[i]<0){
i++;
r=i;
for (i=r; i<lenght; i++)
if(arr[i]<0){
--i;
z=i;
for (i=r; i<=z; i++)
s+=arr[i];

}
}
return s;
}

int main(int argc, char *argv[])
{
int var;
int i,arr[20];
int s,p,lenght;
lenght=20;


{
printf("Type in %d elements \n",lenght);
for (i=0; i<lenght; i++)
scanf("%d", &arr[i]);
}

p=OddSumm(arr,lenght);
s=SummBetweenNegativeNumbers(arr,lenght);

printf("\n\t 1a)Odd numbers summ: %d",p);
printf("\n\t 1b)Elements summ between negativ numbers: %d", s);
printf("\n\t 2)Compressed array: ");
for(i=lenght-1; i>=0; i--)
printf(" %d",arr[i]);
printf("\n\n");
system("pause");


return 0;
}

最佳答案

  1. 使用std::transform 转换您的数据
  2. 使用std::remove 压缩这些非零值
  3. 使用std::fill 填充零

示例代码

#include <vector>
#include <cstdlib>
#include <iterator>
#include <algorithm>
#include <iostream>

int my_function(int value){
value = std::abs(value);
return value<1 ? 0:value;
}

int main()
{
int v[]={0,1,2,-4,-5,3};
std::transform(std::begin(v),std::end(v),std::begin(v),my_function);
auto end=std::remove(std::begin(v),std::end(v),0);
std::fill(end,std::end(v),0);
for(auto value : v)std::cout<<value<<' ';
}

关于c++ - C++中的数组压缩和搜索(基础),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40742066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com