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;
这个东西得到最小数字之后的总和,但是它包括它并且还计算前一个,例如55555555555555551111(具有20个整数的数组)的总和将是9.我该怎么做才能解决这个问题? 对不起,对于我的英语,我需要制作20个整数的数组,并获得最低值之后的元素总和。
答案 0 :(得分:0)
您可能希望找到最小元素的 index ,例如(未经测试,修复了一些错误的错误):
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;
}
另外,请务必说明如果最小参数是重复的话会发生什么。