Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C] nie sumuje prawidłowo

Ostatnio zmodyfikowano 2015-06-05 13:26
Autor Wiadomość
wlodi
Temat założony przez niniejszego użytkownika
[C] nie sumuje prawidłowo
» 2015-06-05 11:52:13
Mam taki kod:

C/C++
#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?
P-133209
Monika90
» 2015-06-05 11:55:16
Sumujesz kody znaków zamiast wartości cyfr. Musisz od każdego znaku cyfry odjąć '0'.
C/C++
sum1 += ch - '0';

Przed sprawdzeniem parzystości też.
P-133210
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!
P-133214
« 1 »
  Strona 1 z 1