Witam, program poniżej działał dobrze do czasu aż zacząłem swoje karkołomne pierwsze próby użycia znaczników. Ogólnie nakierowuje się na komórki spoza wyznaczonych obszarów i nie mam pojęcia czemu ponieważ powinny być limitowane stałą Max = 5, która w funkcji fill_array() jest nazwana limit.
Program z zasady ma wczytywać wartości podane przez użytkownika funkcją fill, wyświetlić funkcją show, zmienić ich wartosc podanym mnoznikiem funkcją revalue i znów wyświetlić po zmianie.
Z góry dziękuję także za wszelkie uwagi dot. wskaźników :) Przerobiłem ten temat w książkach i Praty i Grębosza + filmik Zelenta na YT, a dalej nie czuje bym umiał ich używać :/
#include <iostream>
using namespace std;
const int Max = 5;
int * fill_array(double *ar, const int limit);
void show_array(const double *ar, int *n);
void revalue(double r, double *ar, int *n);
int main()
{
double properties[Max];
int * wsk;
wsk = fill_array(properties, Max);
show_array(properties, wsk);
if (*wsk > 0)
{
cout << "Podaj mnoznik zmiany wartosci: ";
double factor;
while (!(cin >> factor))
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "Niepoprawna wartosc, podaj liczbe!";
};
revalue(factor, properties, wsk);
show_array(properties, wsk);
}
cout << "Gotowe!\n" << endl;
cin.get();
return 0;
}
int *fill_array(double *ar, const int limit)
{
double temp;
int wart;
int *wartosc;
wartosc = &wart;
for (wart=0; wart<limit; wart++)
{
cout << "Podaj wartosc nr " << *wartosc+1 << ": ";
cin >> temp;
if (!cin)
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "Bledne dane, wprowadzanie przerwane\n";
break;
}
else if (temp < 0)
break;
ar[*wartosc] = temp;
}
return wartosc;
}
void show_array(const double *ar, int *n)
{
for (int i = 0; i < *n; i++)
{
cout << "Nieruchomosc nr " << i+1 << ": " << *(ar + i) << endl;
}
return;
}
void revalue(double r, double *ar, int *n)
{
for (int i = 0; i < *n; i++)
{
*(ar + i) *= r;
}
return;
}