Jeśli post jest w złym miejscu, poproszę o przeniesienie w razie potrzeby.
Mam kolejne zadanie dla 'zielonych' i niestety nie wiem co robić dalej, ponieważ wszystkie błędy są poprawione, kompiluje się do końca pierwszej funkcji i wysiada. Dlatego nie mam możliwości sprawdzenia, co jest źle i proszę o pomoc gdyby ktoś miał chwilkę czasu i zerknął :)
W programie trzy funkcje mają obsługiwać tablicę i każda ma używać dwóch wskaźników określających zakres.
Funkcja fill_array() ma zwrócić wskaźnik elementu znajdującego się za ostatnim elementem tablicy, inne funkcje mają go używać jako drugiego parametru wskazującego koniec danych.
W rozdziale nie ma niestety przykładu na to, jak napisać funkcję która zwraca wskaźnik :/
#include <iostream>
const int Max=5;
double fill_array (double *begin, double *ar_end);
void show_array (double *begin, double *end);
void revalue (double r, double *begin, double *end);
int main ()
{
using namespace std;
double properties [Max];
double *koniec;
*koniec = fill_array(properties, properties+Max);
show_array(properties, koniec);
if (*koniec>0)
{
cout<<"Podaj czynnik zmiany wartosci: ";
double factor;
while (!(cin>>factor)) //nieliczbowa wartosc na wejsciu
{
cin.clear();
while (cin.get()!='\n')
continue;
cout<<"Niepoprawna wartosc. Podaj liczbe: ";
}
revalue(factor, properties, koniec);
show_array(properties, koniec);
}
cout<<"Gotowe";
cin.get();
cin.get();
return 0;
}
double fill_array (double *begin, double *ar_end)
{
using namespace std;
double temp;
int i;
double *pt;
for (pt=begin,i=0; pt!=ar_end; pt++,i++)
{
cout<<"Podaj wartosc nr "<<(i+1)<<": ";
cin>>temp;
if(!cin) //bledne dane
{
cin.clear();
while (cin.get()!='\n')
continue;
cout<<"Bledne dane, wprowadzanie danych przerwane.\n";
break;
}
else if (temp<0)
break;
*pt=temp;
}
return *ar_end; //**tutaj funkcja powinna zwracać wskaźnik**
}
void show_array (double *begin, double *end)
{
using namespace std;
double *pt;
int i;
for (pt=begin, i=0; pt!=end; pt++, i++)
{
cout<<"Nieruchomosc nr "<<(i+1)<<": ";
cout<<*pt<<endl;
}
}
void revalue (double r, double *begin, double *end)
{
double *pt;
for (pt=begin;pt!=end;pt++)
(*pt)*=r;
}