Pomoc przy zadaniu ( głownie funkcje )

0

Witam,
Muszę napisać taki oto program :

Zadanie
Zadeklarować w funkcji main() dwie tablice A i B 20 elementowe liczb całkowitych.

  1. Napisać funkcję, która wypełnia tablicę liczbami losowymi z przedziału < p, k >. p, k wczytać w main.
    Wywołać dla tablicy A.
    void losuj(int t[], int n, int pocz, int kon);
  2. Napisać funkcję, która wypisuje elementy tablicy na ekran, wypisać tablicę A.
    void wypisz(int t[], int n);
  3. Napisać funkcję która oblicza element maksymalny w tablicy i ile razy on wystąpił w tej tablicy.
    Element maksymalny ma być zwrócony do main przez return, zaś ilość przez parametr referencyjny.
    Wywołać dla tablicy A.
    int maks(int t[], int n, int &ile);
  4. Napisać funkcję która oblicza i wypisuje średnią arytmetyczną elementów dodatnich w tablicy.
    Wywołać dla tablicy A. Jeżeli nie było w tablicy takich elementów wypisać odpowiedni komunikat.
    void srednia( int t[], int n);
  5. Napisać funkcję która tworzy tablicę B następująco:
    B[i] = 1/2*A[i] , gdy A[i] jest parzyste
    B[i] = 0 , gdy A[i] jest nieparzyste
    Wypisać tablicę B za pomocą funkcji.

Posortować rosnąco tablicę B. Wypisać tablicę po posortowaniu za pomocą funkcji.

Problem zaczyna się juz w zadaniu 4 ( Nie moge wyświetlić sredniej )
Mógłby ktoś pomóc dokonczyc to zadanie ?
Dziękiuje.

#include <iostream>
#define N 20
#include <ctime>
#include <cstdlib>

using namespace std;
void losuj_tab(int t[],int n, int p, int k);
void wypisz(int t[],int n);
int maks (int t[],int n, int &ile);
void srednia (int t[],int n);
int main()
{
    cout<<"Wiktor Dobrzynski"<< endl;
    int TabA[N];
    int TabB[N];
    int p, k;
    cout<<"Poczatek i koniec przedzialu "<< endl;
    cin>>p>>k;
    losuj_tab(TabA, N, p, k);
    wypisz(TabA,N);

    int Maks,ilosc;
    Maks=maks(TabA,N,ilosc);
    cout<<"Maksimum= "<<Maks<<endl;
    cout<<"Ilosc maks= "<<ilosc<<endl;
    int Srednia;
    Srednia=srednia(TabA,N);
    cout<<"SREDNIA= " <<Srednia<<endl;



    return 0;
}
void losuj_tab(int t[], int n, int p, int k)
{
    for(int i=0; i<n; i++)
        t[i]=rand()%(k-p+1)+p;

}
void wypisz(int t[],int n)
{
    for(int i=0; i<n; i++)
        cout<<t[i]<<"  ";
        cout<<endl;
}
int maks(int t[],int n, int &ile)
{
    int M=t[0];
    for (int i=1; i<n; i++)
    if(t[i]>M)
    M=t[i];

    ile=0;
    for (int i=0; i<n; i++)
        if(t[i]==M)
        ile++;
    return M;
}
void srednia (int t[],int n)
    {
        float sr;
        int suma;
        int ilosc;
        for (int i=1; i<n; i++)
        if(t[i]>0)
        {
            suma=suma+t[i];
            ilosc=ilosc+1;
        }
        if (ilosc==0 )
            cout<<"W tablicy nie bylo liczb dodatnich";
        else
        {
            sr=1.0*suma/ilosc;
            cout<<"srednia wynosi= "<<sr;
        }

    }
1

Indeks tablic zaczyna się od zera (to C, a nie matlab :P), w funkcji średnia:
for (int i=0; i<n; i++)

1
int Srednia
Srednia=srednia(TabA,N);

przypisujesz zmiennej integer funkcje która nie zwraca integer, co wiecej - nie zwraca nic (bo to void)

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