Witam, jeżeli jest to za niski poziom na dany dział to z góry przepraszam. Jestem nowy użytkownikiem... A więc do rzeczy.
Obecnie szkolę się za pomocą kursu z Shebang.pl i przerabiam sobie różne zadania, które były jakby "zadane" w tamtejszych artykułach.
W tej chwili zastanawiam się na poprawnością pewnego kodu. Moim zadaniem było zmodyfikowanie kodu źródłowego z przekazywaniem przez referencję na przekazywanie przez wartość.
Oryginalny kod z kursu:
#include <iostream>
using namespace std;
void zamien(double& a, double& b)
{
double tymczasowa(a); // Zmienna do tymczasowego przechowania wartości zmiennej a
a = b; // Zastępujemy wartość zmiennej a wartością zmiennej b
b = tymczasowa; // Pobieramy wartość a ze zmiennej tymczasowej i zapisujemy ją w b
}
int main()
{
double a(1.2), b(4.5);
cout << "wartość a: " << a << ", wartość b: " << b << endl;
zamien(a,b); // Wywołanie funkcji
cout << "wartość a: " << a << ", wartość b: " << b << endl;
return 0;
}
Zmodyfikowany kod przeze mnie:
#include <iostream>
using namespace std;
double zamienA(double a, double b)
{
double tymczasowa(a); // Zmienna do tymczasowego przechowania wartości zmiennej a
a = b; // Zastępujemy wartość zmiennej a wartością zmiennej b
b = tymczasowa; // Pobieramy wartość a ze zmiennej tymczasowej i zapisujemy ją w b
double wynik;
wynik = a;
return wynik;
}
double zamienB(double a, double b)
{
double tymczasowa(a); // Zmienna do tymczasowego przechowania wartości zmiennej a
a = b; // Zastępujemy wartość zmiennej a wartością zmiennej b
b = tymczasowa; // Pobieramy wartość a ze zmiennej tymczasowej i zapisujemy ją w b
double wynik;
wynik = b;
return wynik;
}
int main()
{
double a(1.2), b(4.5);
cout << "wartość a: " << a << ", wartość b: " << b << endl;
// zamien(a,b); // Wywołanie funkcji
double a1, b1;
a1 = zamienA(a,b);
b1 = zamienB(a,b);
cout << "wartość a: " << a1 << ", wartość b: " << b1 << endl;
return 0;
}
Co prawda, efekt działania jest poprawy. Jednakże nie mam pewności, co do poprawności kodu źródłowego - wiem, że da się to uprościć. Typowo jak totalny nowicjusz utrudniłem kod, dlatego bardzo zależy mi na poznaniu prostszej formy, która jest poprawna i wydajna.
Z góry dziękuję. :)