在c++中对最小数组元素求和

Sum after smallest array element in C++

本文关键字:数组元素 求和 c++      更新时间:2023-10-16
int modulusumma(int mas[], int skaits) { //1b)Elementu summa pec skaitla 0
 int i,a,b;
for(i=0; i<skaits; i++)
        mas[i]=abs(mas[i]);
int smallest = INT_MAX;
 for (i=0; i<skaits; i++){
if (mas[i] < smallest) {
    smallest = mas[i];
}
b=0; 
 for (i=0; i<skaits; i++)
if(mas[i]==smallest)
a=i;
if(a!=i)
for (i=a; i<skaits; i++)
b+=mas[i];
return b;

这个东西得到最小数之后的和,但它包括它并计算前一个,例如555555555555555555551111(包含20个整数的数组)的和将是9。我能做些什么来解决这个问题?对不起,我的英语不好,我需要做一个20个整数的数组,并得到最小的元素之后的元素的和。

您可能希望找到最小元素的索引,类似于(未经测试,修复了一些差一的错误):

size_t argmin( const size_t n, const int a[n] )
{
  size_t m = 0;
  for ( size_t i = 1; i < n; ++i )
    if ( a[i] < a[m] )
      m = i;
  return m;
}
long sum_after_min( const size_t n, const int a[n] )
{
  const size_t m = argmin( n, a );
  long sum = 0;
  if ( SIZE_MAX == m )
    return 0; // Or else m+1 would underflow!
  for ( size_t i = m + 1; i < n; ++i )
    sum += a[i];
  return sum;
}

另外,一定要指定如果最小的参数是重复的会发生什么。