[C] nie sumuje prawidłowo
Ostatnio zmodyfikowano 2015-06-05 13:26
wlodi Temat założony przez niniejszego użytkownika |
[C] nie sumuje prawidłowo » 2015-06-05 11:52:13 Mam taki kod: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <math.h> #include <ctype.h>
int main( void ) { int ch; int x1 = 0; int x2 = 0; float sum1 = 0; float sum2 = 0; printf( "Wpisz liczby całkowite:\n" ); while(( ch = getchar() ) != '#' ) { if( isdigit( ch ) && ch % 2 == 0 ) { sum1 += ch; x1++; } else if( isdigit( ch ) && ch % 2 != 0 ) { sum2 += ch; x2++; } } printf( "ilosc l parzystych: %d ich srednia: %f\n", x1, sum1 / x1 ); printf( "ilosc l nieparzystych: %d ich srednia: %f\n", x2, sum2 / x2 ); system( "pause" ); return 0; }
Program poprawnie wyświetla ilość liczb parzystych i nieparzystych lecz niepoprawnie średnią. Jest to konsekwencją złego sumowania. Np. wpisuję ciąg 1234# i wyświetla średnią dla parzystych 51, dla nieparzystych 50. Problem jest ze zmienną ch w instrukcji if ? Nadawana jest jej jakaś nowa wartość? Jeśli tak to w którym momencie? |
|
Monika90 |
» 2015-06-05 11:55:16 Sumujesz kody znaków zamiast wartości cyfr. Musisz od każdego znaku cyfry odjąć '0'. Przed sprawdzeniem parzystości też. |
|
wlodi Temat założony przez niniejszego użytkownika |
» 2015-06-05 13:26:54 Ok już widzę gdzie był błąd, dziękuje bardzo! |
|
« 1 » |