Co jest źle w tym programie ?

0

Witam,
Program ma wypisywać kolejno sumę liczb parzystych ze zbioru (min..max). Program kompiluje się lecz wyniki wychodzą złe. Co tu jest nie tak ?

int sum (int min, int max){
int suma;
suma=0;
while(min<=max){
if (min%2==0) {
suma=suma+min;
min++ ;
}
else {
min++;
}
return suma;
}
}

int main(void) {
int min;
int max;
int q;
printf("Podaj minimum");
scanf("%d",&min);
printf("Podaj maximum");
scanf("%d",&max);
q=sum(min,max);
printf("Suma liczb parzystych wynosi: %d \n",q);
system("pause");

return 0;

}

2

Zacznij od formatowania, dalej pójdzie z górki.

1

Ma złe formatowanie. Przez co nie widzisz błędu.

int sum(int min, int max)
{
    int suma;
    suma = 0;
    while (min <= max) {
        if (min % 2 == 0) {
            suma = suma + min;
            min++;
        } else {
            min++;
        }
        return suma;
    }
}

Popatrz gdzie jest return i czy powinno tam być.

0

O matko, faktycznie return powinien być niżej. Dziękuje już poszło :-)

2
unsigned sum(unsigned min,unsigned max)
  {
   min+=min&1;
   max-=max&1;
   return ((max+min)*(((max-min)>>1)+1))>>1;
  }
0

Naucz się pisać czytelny kod bo pewnie sam z niego nie rozumiałeś nic.
A tak to 10 sek. i masz rozwiązany problem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1