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

Tablica dynamiczna w klasie.

Ostatnio zmodyfikowano 2015-12-05 08:47
Autor Wiadomość
pepe450
Temat założony przez niniejszego użytkownika
Tablica dynamiczna w klasie.
» 2015-12-05 07:59:11
Witam wydaje mi się że napisałem prawidłowo poniższy kod jednak zauważyłem że funkcja void Sales::ShowSales() pokazuje inne wartości niż wprowadzam z klawiatury.
Czy zle operuję wskaznikiem stąd ten bład?

C/C++
#include<iostream>
#include<cstdlib>
using namespace std;
class Sales
{
    double * sales;
    int rozmiar;
    double average;
    double minimum;
    double maksimum;
   
public:
    Sales()
    {
        cout << "Bez paremetru" << endl;
        cout << "Podaj rozmiar tablicy: " << endl;
        cin >> rozmiar;
        sales = new double[ rozmiar ];
        average = 0;
        minimum = 0;
        maksimum = 0;
    }
    Sales( int r )
    {
        cout << "Z parametrem" << endl;
        average = 0;
        minimum = 0;
        maksimum = 0;
        double sum = 0;
        rozmiar = r;
        sales = new double[ rozmiar ];
        for( int i = 0; i < rozmiar; i++ )
        {
            sales[ i ] = rand() % 100;
            if( i == 0 )
                 minimum = maksimum = sales[ i ];
           
            sum += sales[ i ];
            if( minimum > sales[ i ] )
                 swap( minimum, sales[ i ] );
            else if( maksimum < sales[ i ] )
                 swap( maksimum, sales[ i ] );
           
        }
        average = sum / rozmiar;
    }
   
    ~Sales()
    {
        delete[] sales;
    }
    void SetSales();
    void ShowSales();
};

int main()
{
    Sales a;
    a.SetSales();
    a.ShowSales();
    Sales b( 5 );
    b.ShowSales();
    return 0;
}
void Sales::SetSales()
{
    double sum = 0;
    for( int i = 0; i < rozmiar; i++ )
    {
        cout << "Podaj " << i << " wartosc do struktury: " << endl;
        cin >> sales[ i ];
        if( i == 0 )
             minimum = maksimum = sales[ i ];
       
        sum += sales[ i ];
        if( minimum > sales[ i ] )
             swap( minimum, sales[ i ] );
        else if( maksimum < sales[ i ] )
             swap( maksimum, sales[ i ] );
       
    }
    average = sum / rozmiar;
}
void Sales::ShowSales()
{
    cout << "Zawartosc struktury: " << endl;
    cout << "Wartosci z tablicy: " << endl;
    for( int k = 0; k < rozmiar; k++ )
         cout << sales[ k ] << endl;
   
    cout << endl;
    cout << "Minimum: " << minimum << endl;
    cout << "Maksimum: " << maksimum << endl;
    cout << "Srednia: " << average << endl;
}

P-141425
carlosmay
» 2015-12-05 08:47:27
Jak zamieniasz miejscami to robi się misz-masz, a później cuda w wynikach.
C/C++
sum += sales[ i ];
if( minimum > sales[ i ] )
     minimum = sales[ i ];
else if( maksimum < sales[ i ] )
     maksimum = sales[ i ];

P-141426
« 1 »
  Strona 1 z 1