Program zawierający proste funkcje - jak to zapisać?

2018-11-10 20:03
0

Cześć,
mam taki program i parę pytań do niego:

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

double gen(double *tab, size_t rozmiar)
{
int suma = 0;

for (int i=0; i<100; i++)
{
tab[i]=(0+rand() % 1001)/10. ;
cout << tab[i];
cout << endl;
}
}

double maks(double *big, double tab[])
{
int mx = 0;

for(int i = 0; i < 100; i++)
{
if(tab[i] > big)
{
big = tab[i];
mx = i;
}
}
cout << mx;
}

double mini(double *small, double tab[])
{
int mn = 0;

for(int i = 0; i < 100; i++)
{
if(tab[i] > small)
{
small = tab[i];
mn = i;
}
}
cout << mn;
}

double srednia(int ilosc, double tab[])
{
double wynik=0;

for(int i=0; i<ilosc; i++)
{
wynik+=tab[i];
}
return wynik/ilosc;
}

int main()
{
srand(time(NULL));

double big, small, ilosc, tab;
gen(tab, 100);
cout << "Maksymalna wartosc: " << maks(big) << endl;
cout << "Minimalna wartosc: " << mini(small) << endl;
cout << "Srednia arytmetyczna tablicy: " << srednia(ilosc, tab) << endl;
return 0;
}

W jaki sposób poprawnie w ogóle tworzyć funkcję zawierającą w sobie tablicę? Jak się do takiej funkcji potem odwołać w main'ie?
Wydaje mi się, że to co mam jest źle, albo przynajmniej niesforne.

Czy srand(time) musi być w main'ie raz wywołany, czy mogę go dać gdziekolwiek indziej?

W którym momencie należy używać wskaźników przy tworzeniu takich funkcji?

Ten program się nie kompiluje, error: invalid operands of types ‘double’ and ‘double*’ to binary ‘operator>’| wyświetla się w funkcji double mini przy pierwszej pętli if.

Proszę o rady co w ogóle jest złe w zapisie, bo nie mogę się już połapać.

Będę naprawdę wdzięczna za jakąkolwiek pomoc :)

edytowany 1x, ostatnio: furious programming, 2018-11-10 22:31

Pozostało 580 znaków

2018-11-10 20:07
0

a gdzie tworzysz tę tablicę?

Pozostało 580 znaków

2018-11-10 20:10
0

Właśnie tego trochę nie rozumiem, bo na laboratorium zrozumiałam tyle, że ma być wskaźnik na tablicę w funkcji, ale jak i gdzie tę tablicę stworzyć to nie wiem.

Pozostało 580 znaków

2018-11-10 20:14
0

masz treść tego zadania? tablicę twórz w main

Pozostało 580 znaków

2018-11-10 20:18
0

Treść była taka, by stworzyć trzy funkcje, jedna wskazuje największą wartość w losowo wygenerowanej tablicy, druga najmniejszą, a trzecia średnią tych liczb w tablicy. Liczby mają być rzeczywiste.
I potem to wywołać w main'ie.

Czyli jeśli mam na samym początku wskaźnik *tab w funkcji gen (do generowania zawartości tablicy), to jak powinno i gdzie wyglądać stworzenie tej tablicy? Mógłbyś podać kawałek kodu tego?

Pozostało 580 znaków

2018-11-10 20:39
0
 #define ROZMIAR 100
int main()
{
double tab[ROZMIAR];

i teraz w pętlach nie używasz magicznej liczby 100 tylko ROZMIAR. Pokombinuj dalej i pokaż jak Ci idzie, bo w tym kodzie widzę jeszcze wiele rzeczy do poprawy

Pozostało 580 znaków

2018-11-10 20:41
0

Funkcję z tablicą tworzysz tak samo jak każde inne funkcje, tylko w argumentach przekazujesz swoją tablicę i np. jako drugi argument wywołania jej rozmiar czy limit
srand() może być użyty poza mainem, czyli możesz go wrzucić na początek swojej funkcji gen()
jeśli chcesz użyć wskaźnika, to możesz zrobić funkcję, która zwraca wskaźnik na pierwszy indeks swojej tablicy - czyli wskazuje bezpośrednio tablicę
program się nie kompiluje, bo są błędy :D a nawet i dużo, sugeruję zapoznać się lepiej z funkcjami o tu


(っ◔◡◔)っ ♥ Kto produkcji nie wy♥bie ten nie zazna szczęścia w niebie ♥

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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