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

Funkcja z klasy nie zwraca wartości

Ostatnio zmodyfikowano 2013-03-25 14:43
Autor Wiadomość
krissuu
Temat założony przez niniejszego użytkownika
Funkcja z klasy nie zwraca wartości
» 2013-03-25 12:49:18
Siemka. Mam problem i nie mam pojęcia gdzie popełniam błąd. Chce aby moja funkcja zwracała wartość średnią elementów podanych do tablicy. Niestety tego nie robi... Mój kod:
C/C++
#include <iostream>
#include <cstdlib>
#include <conio.h>
using namespace std;
class tablica
{
    int MAX_rozm;
    int rozmiar_tab;
    int * wsk_tab;
    double srednia;
    //char nazwa [rozmiar];
   
public:
    tablica( int rozmiar ); // deklaracja konstruktora
    ~tablica(); // deklaracja destruktora
   
    void pokaz_tab();
    void dodaj_elementy( int n );
    double wartosc_srednia();
};

tablica::tablica( int rozmiar ) // definicja konstruktora
{
    MAX_rozm = rozmiar;
    wsk_tab = new int[ MAX_rozm ];
    for( int i = 0; i < MAX_rozm; i++ )
         wsk_tab[ i ] = 0;
   
    rozmiar_tab = 0;
}

tablica::~tablica() // definicja destruktora
{
    delete[] wsk_tab;
    wsk_tab = NULL;
}

void tablica::dodaj_elementy( int n ) // funkcja dodajaca elementy do tablicy
{
    for( int i = 0; i < n; i++ )
    {
        if( rozmiar_tab < MAX_rozm ) // zabezpieczenie przed wyjsciem poza zakres tablicy
        {
            cout << "Podaj kolejny element T[" << rozmiar_tab << "] = ";
            cin >> wsk_tab[ rozmiar_tab++ ];
        }
        else
             cout << "Przekroczono maksymalny rozmiar tablicy!\n";
       
    }
    cout << "\n\n";
}

void tablica::pokaz_tab() // funkcja pokazujaca elementy w tablicy
{
    cout << "Zawartosc tablicy: " << endl;
    for( int i = 0; i < rozmiar_tab; i++ )
    {
        if( i % 5 == 0 ) cout << endl;
       
        cout << "tab[" << i << "]= " << wsk_tab[ i ] << "\t";
    }
    cout << "\n\nLiczba elementow w tablicy wynosi: " << rozmiar_tab << endl << endl;
}

double tablica::wartosc_srednia()
{
    int suma = 0;
    srednia = suma / rozmiar_tab;
    for( int i = 0; i < rozmiar_tab; i++ )
    {
        suma = suma + wsk_tab[ i ];
    }
    cout << "Suma wszystkich elementow tablicy wynosi: " << suma << "\n\n";
   
    cout << "Srednia elementow tablicy wynosi: " << srednia << endl;
    return srednia;
   
}

int _tmain( int argc, _TCHAR * argv[] )
{
    tablica Tab( 5 ); // tworzymy tablice
   
    cout << "Tablica Tab:" << endl;
    Tab.dodaj_elementy( 5 ); // wypelniamy tablice
   
    Tab.pokaz_tab();
    Tab.wartosc_srednia();
   
   
    system( "PAUSE" );
    return 0;
}
P-79342
unimator
» 2013-03-25 14:32:40
C/C++
int suma = 0;
srednia = suma / rozmiar_tab; //Czyli srednia == 0
//Nigdzie nie widze dalej zmiennej srednia jako L-wartosci
//Tak wiec nie wiem czemu oczekujesz, ze funkcja zwroci Ci
//cokolwiek innego niz zero.
P-79345
krissuu
Temat założony przez niniejszego użytkownika
» 2013-03-25 14:43:56
Boże... Ok już widzę co narobiłem... Wystarczyło przenieść to w miejsce gdzie nasza suma już jest wyliczona...
C/C++
double tablica::wartosc_srednia()
{
    double suma = 0;
    for( int i = 0; i < rozmiar_tab; i++ )
    {
        suma = suma + wsk_tab[ i ];
    }
    cout << "Suma wszystkich elementow tablicy wynosi: " << suma << "\n\n";
   
    srednia = suma / rozmiar_tab;
    cout << "Srednia elementow tablicy wynosi: " << srednia << "\n\n";
    return srednia;
}

Dzięki za pomoc :)
P-79346
« 1 »
  Strona 1 z 1