Problem przy programie w C++

0

Witam,

mam napisać tak program:

//1. Zaprojektuj i wykonaj klasę Statystyka służącą do przechowywania zbioru wartości liczbowych i wykonywania na nich statystyk (pliki statystyka.h i statystyka.cpp).
Właściwości:
Dane typu float mają być przechowywane w tablicy utworzonej dynamicznie.
Należy pamiętać liczbę wartości.
Zadbaj o to aby składniki kluczowe dla spójności danych czyli wskaźnik do tablicy oraz liczba wartości były niedostępne z zewnątrz (prywatne).

Jeżeli przewidujesz konstruktor domyślny, nie powinien on tworzyć tablicy, a liczba elementów powinna być ustawiona na 0.
Można przewidzieć konstruktor z parametrem, który utworzy tablicę o podanym rozmiarze.
Uwaga! Jeżeli operacja ta się nie powiedzie, liczba elementów powinna zostać wyzerowana.
Konieczne jest napisanie destruktora, który zwolni pamięć.
Metody:
Należy umożliwić wykorzystanie prywatnych danych za pomocą publicznych metod:
wartosc - zwraca wartość o numerze wskazanym poprzez parametr,
nowawartosc - wstawia podaną wartość do podanej pozycji tablicy,
W obu powyższych funkcjach należy sprawdzić czy podany numer mieści się w tablicy.
metoda ile – zwraca liczbę elementów.
Metoda utworz – utworzenie od nowa tablicy o rozmiarze podanym przez parametr,
jeżeli tablica już istniała, należy zwolnić pamięć a następnie utworzyć nową tablicę.
Metoda wypisz – wyświetlenie wszystkich wartości z tablicy oraz ich liczby.
Metody: srednia, max, min – obliczanie i zwracanie statystyk.
2. Napisz funkcję main (main.cpp), która powoła do życia obiekt klasy Statystyka oraz przetestuje poszczególne metody tej klasy: wprowadzi i wyświetli wartości, obliczy statystyki, pobierze wartość elementu, zmieni wartość elementu, utworzy tablicę od nowa.
Sprawdź czy rzeczywiście prywatne składniki są niedostępne.
3. Napisz w module Statystyka.cpp funkcję pobierz , która nie należy do żadnej klasy i ma pobierać od użytkownika wszystkie dane do już istniejącego obiektu typu Statystyka podanego jako parametr.
Aby funkcja miała dostęp do prywatnych składników klasy, uczyń ją funkcją zaprzyjaźnioną.
4. Napisz klasę Dziennik (dziennik.h i dziennik.cpp), która będzie przechowywać i przetwarzać oceny ucznia z trzech różnych przedmiotów.
Właściwości:
Każdemu z przedmiotów odpowiadać ma jeden obiekt klasy Statystyka, można utworzyć trzy osobne obiekty lub tablicę 3-elementową (uwaga – Statystyka musi wtedy mieć konstruktor domyślny).
Metody:
PodajOceny: Użytkownik podaje wszystkie oceny ze wszystkich przedmiotów. Wykorzystaj funkcję pobierz.
WypiszOceny: Wyświetlenie wszystkich ocen ze wszystkich przedmiotów
WypiszStat: Wyświetlenie wszystkich statystyk dla wszystkich przedmiotów
WypiszWszystko: Wyświetlenie ocen i statystyk
Srednia: Zwraca średnią ze wszystkich ocen.
5. W funkcji main utworz dziennik ucznia i wywołaj kolejno wszystkie utworzone metody.
Ma powstać 5 plików
2 projekty – 1 statystyka, 2 dziennik//

Napisałem część kodu.

main.cpp

#include <cstdlib>
#include <iostream>
#include "statystyka.h"

using namespace std;

int main()
{
 	STATYSTYKA stst();	
    system("PAUSE");
    return EXIT_SUCCESS;
}
 

statystyka.h

#ifndef STATYSTYKA_H_
#define STATYSTYKA_H_
class STATYSTYKA;
#endif   
 

statystyka.cpp

 
#include <cstdlib>
#include <iostream>
#include "statystyka.h"

class STATYSTYKA
{
 	  public:
	  		 STATYSTYKA();
			 float liczbaEl = 0;
 	  private:
	  		  float *tab = new float[liczbaEl];
	  		  		if(tab == 0)
	  		  		cout<<"Brak pamięci\n";

			   void wartosc()
			    {
			   		 cout<<"Która wartość chcesz wyświetlić? ";
			   		 cin>>liczbaEl;
			   		 if(!liczbaEl)
			   		 {
					  			  cout<<"Brak takiego elementu!\n";
				      }
			   		  else 
						 {
						   		  cout<<"\nTa liczba to: "<<tab[liczbaEl];
					      }
			    }
			   void nowawartosc()
			    {
			   		 cout<<"Którą element chcesz zaminić? ";
			   		 cin>>liczbaEl;
		   		  	 if(!liczbaEl)
			   		 {
					  			  cout<<"Brak takiego elementu!\n";
				      }
			   		  else 
			   		  {
 		  			   	   		  cout<<"\nWprowadź nowy element: ";
			   		 			  cin>>tab[liczbaEl];
				      }
			    }
			   int ile() 
			    {	
			   		int ile = 0;
			   		for(int i=0;i<liczbaEl;i++)
					   {
					   		ile+=tab[liczbaEl];
							cout<<ile;
						}
					 return ile;	
                }				 
              void utworz()
                {
			   	  if(liczbaEl<>NULL)
			   	  delete [] tab; 
			   	  STATYSTYKA() // jak można się odwołać do stworzenia tab?
			   	  {
				   			  cout<<"\nPodaj wielkość tablicy: ":
		  				      cin>>liczbaEl;
				  }
                 }  
			   void wypisz()
			    {
			   		for(i=0;i<liczbaEl;i++)
			   		{
					          cout<<"\nW elemencie tablicy pod numerem: "<<liczbaEl;
							  cout<<" - znajduje sie liczba: "<<tab[liczbaEl];
				    }
                }  
				float srednia()
				{
				 	 float sred = 0;
				 	 for(int i=0;i<liczbaEl;i++)
				 	 {
 						      suma+=tab[liczbaEl];
 						      sred=suma/ile;
		              }
		            return sred;
				}
				float max()
				 {
				  	  float max = tab[0];
				  	  if(int i=1;i<liczbaEl;i++)
				  	  {
					   		 if(tab[liczbaEl]>max)
					   		 max=tab[liczbaEl];
				       }
				 	return max; 
		        }
		        float min()
				 {
				  	  float min = tab[0];
				  	  if(int i=1;i<liczbaEl;i++)
				  	  {
					   		 if(tab[liczbaEl]<min)
					   		 min=tab[liczbaEl];
				       }
				 	return min; 
		         }
}			   	   		   	

Najwiecej błędów jak widać jest z liczbaEl.

Nie chodzi mi o to, aby ktoś napisał to za mnie. Proszę o wskazówkę.

0

1.Dowiedz się co to konstruktor klasy.
2.Ciągle będziesz wszędzie brał element poza tablicą.
3. W max i min w środku pętli użyj i zamiast liczbaEl.
To kilka podpowiedzi ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1