There are basically two mistakes in your logic
First is when you are finding smallest number
if(a[k]<small)
{
small=a[k];
}
This is wrong as there will some condition arise when a[k] will be 0. So each time when the loop runs small will always be zero.
See for example
So it should be replace with
if(a[k]<small **&& a[k]!=0**)
{
small=a[k];
}
Another problem is when you are calculating sum
if(sum==0)
break;
printf("%d\n",sum);
sum=0;
Here, a condition will arise when there will be some negative elements, so result may either be 0 or negative so it should be replaced with
if(sum==0**||sum<0**)
break;
printf("%d\n",sum);
sum=0;
Due to this your code is in infinite loop
15
solved What am I doing wrong? The loop runs infinitely….P.S.- I am a newbie [closed]