wskaźnik na adres początku i końca tablicy

0

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;
	}
}
1

double *koniec = fill_array(properties, properties + Max);
double *fill_array(double *begin, double *end);
return pt;

0

Tak chodzi o zwrócenie adresu końca. Można i bez gwiazdki:

double *koniec = &fill_array(properties, properties + Max);
double &fill_array(double *begin, double *end);
return *pt;

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