C++ C++;阵列间隔 #包括 #包括 #包括 #包括 #包括 #包括 双最大值(整数大小,双arr[]){ int max=arr[0]; 对于(int i=1;imax) max=fabsf(arr[i]); } 返回最大值; } 双和(整数大小,双arr[]){ 双和=0; int i=大小-大小; 做{ i++; 如果(arr[i]>0)中断; }而(i>0); 如果(i==0)返回0; 对于(i=i;i

C++ C++;阵列间隔 #包括 #包括 #包括 #包括 #包括 #包括 双最大值(整数大小,双arr[]){ int max=arr[0]; 对于(int i=1;imax) max=fabsf(arr[i]); } 返回最大值; } 双和(整数大小,双arr[]){ 双和=0; int i=大小-大小; 做{ i++; 如果(arr[i]>0)中断; }而(i>0); 如果(i==0)返回0; 对于(i=i;i,c++,arrays,sorting,C++,Arrays,Sorting,请查看并使用它,如下所示: #include <math.h> #include <iostream> #include <cstdlib> #include <stdlib.h> #include <time.h> #include <cstring> double MAX(int Size,double arr[]){ int max =arr[0]; for (int i = 1; i < Size; ++i

请查看并使用它,如下所示:

#include <math.h>
#include <iostream>
#include <cstdlib>
#include <stdlib.h>
#include <time.h>
#include <cstring>


double MAX(int Size,double arr[]){
int max =arr[0];
for (int i = 1; i < Size; ++i)
{
    if(fabsf(arr[i])>max) 
    max = fabsf(arr[i]);
}
return max;

}

double SUM(int Size,double arr[]){
double sum = 0;
int i = Size -Size;

do{
    i++;
    if(arr[i]>0) break;
}while(i>0);

if(i==0) return 0;

for(i=i;i<Size;i++)
    sum =sum+arr[i];    
return sum;
}






void sort(int Size,double *arr, double A, double B){
int count = 0;
int i,j;
for(i = 0;i<Size;i++){
    double tmp = *(arr+i)<0?  : *(arr+i);
    if(A<=tmp && tmp<=B){
        count ++;
    }
}

i = 0;
while(count>0){
    printf("%d",count);
    double tmp = *(arr+i)<0? : *(arr+i);
    if(A<=tmp && tmp<=B){
        for(j =i;j<Size;j++){
            *(arr+j)=*(arr+j+1);
        }
        *(arr+Size-1)=0;
        count--;
        Size--;
    }
    if(A>tmp || tmp>B){
        i++;
    }   
  }
}






int main(int argc, char** argv) {
double *arr;
int arrSize = 10;
int ifRand = 0;
double A,B,max,sum;

char test[] = "-rand";
for(int i=1;i<argc;i++)
{
    if(strcmp(test,argv[i])==0){
        ifRand = 1;
        break;
    }
}

fflush(stdin);
if(ifRand){
    srand(time(0));
    arr = new double[arrSize];
    for (int i=0; i<10; i++)
        arr[i] =(double)rand()/RAND_MAX*100-50;
    A = (double)rand()/RAND_MAX*100-50;
    B = (double)rand()/RAND_MAX*100-50;
    if(A>B){
        double tmp = A;
        A=B;
        B=tmp;
    }
}else{
    printf("\n Ievadiet masiva garumu: ");
    scanf("%d", &arrSize);
    arr = new double[arrSize];
    double elements;
    for (int i = 0; i < arrSize; i++) {
        printf("Ievadiet masiva elementu %d \n", i + 1);
        scanf("%lf", &elements);
        arr[i] = elements;
    }
    printf("Ievadiet A \n");
    scanf("%lf", &A);
    printf("Ievadiet B \n");
    scanf("%lf", &B);
}
printf("Masivs:\n");
for (int i = 0; i < arrSize; i++) {
    printf("\%.3f  ", arr[i]);
}
printf("\nA = %.3f",A);
printf("\nB = %.3f",B);

max = MAX(arrSize,arr);
sum = SUM(arrSize,arr);
sort(arrSize,arr,A,B);

printf("\nLielaka vertiba ir %.3f",max);
printf("\nSumma vertibam pec pirma pozitiva elementa ir %.3f",sum);
printf("\nMasivs pec saspiesanas:");
for (int i = 0; i < arrSize; i++) {
    printf("\%.3f  ", arr[i]);
}

return ifRand;
}
void sort_to_front(整数大小、双*arr、双A、双B)
{
稳定分区(arr,arr+Size,[&](双a){返回a>=a&&a
我需要的是这样的东西:在5个元素的数组中{1,2,3,4,5}
区间A(2)和B(4)。结果应该像{2,3,4,1,5}.i
如果有其他方法,不需要上面的代码。这就是我所拥有的
发现并尝试使用

您可以使用头
中声明的标准算法
std::stable_partition

这是一个演示程序

void sort_to_front(int Size, double *arr, double A, double B)
{
    stable_partition(arr, arr + Size, [&](double a){ return a >= A && a <= B; });
}

你的问题是什么?你能发布更完整的代码吗?你的主要内容和你的输入在哪里?arr的来源在哪里?如何将间隔中的元素推到arrayAs的前面?作为一名成员,你有一年多的问题,你应该有时间阅读,特别是命名为和的部分。还有和。最后,请学习如何使用crErickVazovsky在C++中,数组是连续的内存块。如果你想把某个东西放在数组的开头,你就不能把它“推”到那里。你必须把其他的东西都移到自己上面,为它腾出空间,然后自己放在那里。如果你不能简单地“推”东西,就应该使用<代码> STD::向量< /代码>。
#include <iostream>
#include <utility>
#include <iterator>
#include <algorithm>

int main()
{
    int a[] = { 1, 2, 3, 4, 5 };
    std::pair<int, int> range(2, 4);

    for (int x : a) std::cout << x << ' ';
    std::cout << std::endl;

    std::stable_partition( std::begin( a ), std::end( a ),
        [&]( const int &item ) 
        { 
            return range.first <= item && item <= range.second; 
        });

    for (int x : a) std::cout << x << ' ';
    std::cout << std::endl;

    return 0;
}
1 2 3 4 5
2 3 4 1 5