Mam zrobić program, który w funkcji fill_array, otrzymuje adres początku oraz końca tablicy, i zwraca koniec tablicy(wprowadzanie można przerwać wcześniej) funkcja show_array, powinna wyświetlić wszystkie elementy, lecz gdy odpalam program, to po pobraniu wartości pętla w funkcji show_array odczyta prawidłowo tyle danych ile zostało wprowadzonych, ale się nie zakończy, tylko dalej będzie działać, wywalając śmieci. Co muszę poprawić w tym kodzie, żeby działało prawidłowo?
#include<iostream>
using namespace std;
const int Max = 5;
double fill_array(double *begin, double *end);
void show_array(double *begin, double *koniec);
void revalue(double r, double *begin, double *koniec);
int main()
{
double properties[Max];
double wynik = fill_array(properties, properties + Max);
double *koniec = &wynik;
show_array(properties, koniec);
cout<< "Podaj czynnik zmiany wartosci: ";
double factor;
cin>>factor;
revalue(factor, properties, koniec);
show_array(properties, koniec);
cout<< "Gotowe" << endl;
cin.get();
cin.get();
return 0;
}
double fill_array(double *begin, double *end)
{
double temp, *pt;
int i = 0;
for (pt = begin; pt != end; pt++, i++)
{
cout<< "Podaj wartosc nr " << i + 1 << ": ";
cin>>temp;
if (!cin)
{
cin.clear();
while (cin.get() != '\n')
continue;
cout<< "Bledne dane, wprowadzanie danych przerwane.\n";
break;
}
else if (temp < 0)
break;
*pt = temp;
}
return (*pt);
}
void show_array(double *begin, double *koniec)
{
double *pt;
int i = 1;
for (pt = begin; pt != koniec; pt++, i++)
{
cout<< "Nieruchomosc nr " << i << ": "
<< *pt << endl;
}
}
void revalue(double r, double *begin, double *koniec)
{
double *pt;
for (pt = begin; pt != koniec; pt++)
{
*pt = *pt * r;
}
}