CCbolt Temat założony przez niniejszego użytkownika |
Średnia w C / błąd » 2016-11-18 10:58:05 Zadanie podobne robiłem w C++ ale tutaj nie chce mi wyjść, dodatkowo problem mam z wypisanie licz większych od 100 i średniej ( bez średniej tego nie robię a z 100 mam zawieszenie myślowe) // poprawione ruszyło pozostało wypisanie liczb wiekszych od 100. #include <stdio.h>
int main() { int tab[ 7 ]; int i, min, max; for( i = 0; i < 7; i++ ) { printf( "Podaj liczbe nr %d: ", i + 1 ); scanf( "%d", & tab[ i ] ); } printf( "Elementy tablicy: " ); for( i = 0; i < 7; i++ ) { printf( "%d ", tab[ i ] ); printf( ", " ); } printf( "\n" ); min = tab[ 0 ]; for( i = 1; i < 7; i++ ) if( tab[ i ] < min ) min = tab[ i ]; printf( "Najmniejsza liczba: %d\n", min ); max = tab[ 0 ]; for( i = 1; i < 7; i++ ) if( tab[ i ] > max ) max = tab[ i ]; printf( "Najwieksza liczba: %d\n", max ); int sum = 0; for( i = 0; i < 7; i++ ) sum += tab[ i ]; printf( "Suma: %d\n", sum ); float sr = 0; for( i = 0; i < sum; i++ ) sr = sum / 7; printf( "Srednia %f\n", sr ); int w = 100; w = tab[ 0 ]; for( i = 0; i < 7; i++ ) if( tab[ i ] > w ) w = tab[ i ]; printf( "Liczby większe od 100: %d\n ", w ); return 0; }
|
|
michal11 |
» 2016-11-18 11:35:40 sr = sum / 7; dzielisz int przez int przez co otrzymujesz int, czyli masz obcięcie części ułamkowej, zamień 7 na 7.f |
|
CCbolt Temat założony przez niniejszego użytkownika |
» 2016-11-18 12:12:07 sr mam zrobione i jest w float chyba nie znieeniłem poprawnie kodu za to mam problem z wypisaniem liczb wiekszych od 100 z tablicy ponieważ czyta mi tylko jedną liczbe. |
|
michal11 |
» 2016-11-18 12:52:50 float sr = 0; for( i = 0; i < sum; i++ ) sr = sum / 7;
lepiej dobrze przemyśl co ten kod robi. int w = 100; w = tab[ 0 ]; for( i = 0; i < 7; i++ ) if( tab[ i ] > w ) w = tab[ i ];
printf( "Liczby większe od 100: %d\n ", w );
to ci wypisuje tylko jedną liczbę bo to robisz, wypisujesz tylko w, czyli de facto co tu robisz to obliczasz max z tablicy. Jeżeli chcesz wypisywać wszystkie el. z tablicy które są większe od 100 to wystarczy: for( int & el: tab ) { if( el > 100 ) { cout << el; } }
albo bardziej klasycznie: for( i = 0; i < 7; i++ ) { if( tab[ i ] > w ) { cout << tab[ i ]; } }
|
|
mateczek |
» 2016-11-18 13:00:59 i po co ci tyle pętli to wszystko można zrobić w jednej !!! No może gdy chcesz na koniec sobie wypisać liczby większe od 100 to w dwóch. A do liczenia max min średnia suma nawet tablic nie trzeba !!! |
|
CCbolt Temat założony przez niniejszego użytkownika |
» 2016-11-18 13:07:57 W c++ to napiszę zwłaszcza jak idą funkcje ale przy c zgłupiałem. //mam int w = 100; for( i = 0; i < 7; i++ ) if( tab[ i ] > w ) printf( "Liczby większe od 100: %d\n ", tab[ i ] );
teraz ten nedzny sr musze poprawić. // ok mam średnią dzięki. |
|
mateczek |
» 2016-11-18 13:26:49 #include <stdio.h> int main() { int tab[ 7 ]; int suma, min, max; printf( "Podaj liczbe nr %d: ", 1 ); scanf( "%d", & tab[ 0 ] ); suma = max = min = tab[ 0 ]; for( int i = 1; i < 7; i++ ) { printf( "Podaj liczbe nr %d: ", i + 1 ); scanf( "%d", & tab[ i ] ); if( tab[ i ] < min ) min = tab[ i ]; else if( tab[ i ] > max ) max = tab[ i ]; suma += tab[ i ]; } printf( "Najmniejsza liczba: %d\n", min ); printf( "Najwieksza liczba: %d\n", max ); printf( "Suma liczb: %d\n", suma ); printf( "Srednia %f\n",( double ) suma / 7 ); printf( "\nliczby wieksze od 100\n" ); for( int i = 0; i < 7; i++ ) { if( tab[ i ] > 100 ) printf( "%d , ", tab[ i ] ); } } |
|
« 1 » |