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

Średnia w C / błąd

Ostatnio zmodyfikowano 2016-11-18 13:26
Autor Wiadomość
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.

C/C++
#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 ] ); //kontrola
        printf( ", " );
    }
    printf( "\n" ); // nowa linie  dla wyruwnania komunikatu.
    min = tab[ 0 ]; //najmniejsza liczba
    for( i = 1; i < 7; i++ )
    if( tab[ i ] < min )
         min = tab[ i ];
   
    printf( "Najmniejsza liczba: %d\n", min );
   
    max = tab[ 0 ]; //najwieksza liczba
    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 ]; // sumuję elementy tablicy
   
    printf( "Suma: %d\n", sum ); //wypis kontrolny
   
   
    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;
}
P-153886
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
P-153887
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.
P-153888
michal11
» 2016-11-18 12:52:50
C/C++
float sr = 0;
for( i = 0; i < sum; i++ )
     sr = sum / 7;


lepiej dobrze przemyśl co ten kod robi.

C/C++
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:
C/C++
for( int & el: tab )
{
    if( el > 100 )
    {
        cout << el;
    }
}

albo bardziej klasycznie:
C/C++
for( i = 0; i < 7; i++ )
{
    if( tab[ i ] > w )
    {
        cout << tab[ i ];
    }
}
P-153890
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 !!!
P-153892
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
C/C++
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.
P-153893
mateczek
» 2016-11-18 13:26:49
C/C++
#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 ); //wypis kontrolny
    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 ] );
       
    }
}
P-153894
« 1 »
  Strona 1 z 1