Co jest źle w tym programie ?

Co jest źle w tym programie ?
R9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
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;

}

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
2

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

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
1

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

Kopiuj
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ć.

R9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
0

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

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
2
Kopiuj
unsigned sum(unsigned min,unsigned max)
  {
   min+=min&1;
   max-=max&1;
   return ((max+min)*(((max-min)>>1)+1))>>1;
  }
  • Rejestracja: dni
  • Ostatnio: dni
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.