Witam, oto mój kod na zadane z odcinka 11 oraz rozwiązanie zadania domowego z tego odcinka, wszysko w formie funkcji. Jedna rzecz mnie zastanawia, mianowicie dlaczego we funkcji highest() moge sobie przpisac do zmiennych *tab i program sobie leci pokolei bo wiadomo wskaznik tablicy jest jej 0 elementem Tutaj jest wszystko ok, ale w przypadku funkcji closest() juz nie moge zastosowac tego samego sposobu bo program niby sie kompiluje ale nie oblicza tej wartosci (napisalem w komentarzu te miejsca gdzie chcialem zastosowac to samo). Ja chyba nie rozumem wskaznikow do konca.Moze ktos wytlumaczyc o co tu chodzi.
#include <iostream>
#include <time.h>
#include <cstdlib>
#include <cmath>
#include <math.h>
using namespace std;
int avg(int *tab, int ilosc);
int highest(int *tab, int ilosc);
int closest(int *tab,int ilosc,int sredniawka,int w_bezw);
int main()
{
int ile;
cout << "Podaj ilosc liczb: ";
cin >> ile;
int *tablica; tablica = new int [ile]; int *wskaznik; wskaznik = tablica;
int maks = highest(wskaznik, ile);
int srednia = avg(wskaznik, ile);
int x = abs(srednia - tablica[0]);
int najbl = closest(wskaznik, ile,srednia,x );
cout << "Srednia wynosi: " << srednia << "\n";
cout << "Najwieksza liczba to: " << maks << "\n";
cout << "Najblizsza liczba to: " << najbl;
delete[]tablica;
return 0;
}
int avg(int *tab, int ilosc)
{
int suma = 0;
for(int i = 0; i < ilosc; i++)
{
suma += *tab;
tab++;
}
return suma/ilosc;
}
int highest(int *tab, int ilosc)
{
int maks = *tab;
for(int i=0;i<ilosc;i++)
{
cout << "liczba " << i+1 << " : ";
cin >> *tab;
if(*tab>maks)
maks = *tab;
tab++;
}
return maks;
}
int closest(int *tab,int ilosc,int sredniawka,int w_bezw)
{
int najbl = tab[0]; // tutaj da rade przypisac *wskaznik
for (int i = 0; i < ilosc; i++)
{
if(abs(sredniawka - tab[i])< w_bezw) // tutaj po przypisaniu *wskaznik juz program nie dziala jak trzeba
{
najbl = tab[i]; // tutaj to samo
}
}
return najbl;
}