Witam!
Uczę się programowania w C++ już od jakiegoś czasu.
Dziś jednak dotarłem do ściany, której nie mogę zburzyć, a oto opis problemu.
Mam program, który już wcześniej zrobiłem, lecz teraz zadaniem jest zamiana funkcji w taki sposób, by każda z nich używała dwóch wskaźników określających zakres.
Dodatkowo, funkcja "fill_array()" zamiast zwracać aktualną liczbę zapisanych elementów, powinna zwracać wskaźnik elementu znajdującego się za ostatnim wypełnionym elementem.
Inne funkcje powinny używać tego wskaźnika jako drugiego parametru pozwalającego wykryć koniec danych.
Dodaję czysty kod zadania, gdyż myślę, że mój tok myślenia jest w tej sprawie trochę ograniczony i zbędne jest dodawanie moich prób zdziałania czegokolwiek.
Proszę o pomoc :)
#include <iostream>
const int Max = 5;
// prototypy funkcji
int fill_array(double ar[], int limit);
void show_array(const double ar[], int n);
void revalue(double r, double ar[], int n);
int main()
{
using namespace std;
double properties[Max];
int size = fill_array(properties, Max);
show_array(properties, size);
if (size > 0)
{
cout << "Podaj czynnik zmiany wartości: ";
double factor;
while (!(cin >> factor)) //gdy nieliczbowa wartosc
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "Niepoprawna wartość; podaj liczbę: ";
}
revalue(factor, properties, size); //zmiana wartosci
show_array(properties, size);
}
cout << "Gotowe.\n";
cin.get();
cin.get();
return 0;
}
int fill_array(double ar[], int limit)
{
using namespace std;
double temp;
int i;
for (i = 0; i < limit; i++)
{
cout << "Podaj wartość nr " << (i + 1) << ": ";
cin >> temp;
if (!cin) // błędne dane
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "Błędne dane, wprowadzanie danych przerwane.\n";
break;
}
else if (temp < 0) // nakaz zakończenia
break;
ar[i] = temp;
}
return i;
}
void show_array(const double ar[], int n)
{
using namespace std;
for (int i = 0; i < n; i++)
{
cout << "Nieruchomość nr " << (i + 1) << ": ";
cout << ar[i] << endl;
}
}
// mnoży każdy element tablicy ar[] przez r(przez wspolczynnik)
void revalue(double r, double ar[], int n)
{
for (int i = 0; i < n; i++)
ar[i] *= r;
}