• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Funkcja - Lokata bankowa

Object Storage Arubacloud
0 głosów
855 wizyt
pytanie zadane 13 listopada 2015 w C i C++ przez Plessio Obywatel (1,090 p.)

Witam, mam takie o to zadanie:

 

Stworzyć funkcję wyznaczającą wartość lokaty (tablica dwunastu miesięcy) przy lokacie na sumę W z kapitalizacją odsetek (e%) w skali 1, 2, 3...10 miesięcy (parametr s). Lokatę można stworzyć tylko na jeden rok. Deklaracja funkcji: float kredyt(float W, float e, int s, int *stanLok). StanLok to tablica opisująca stan lokaty w kolejnych miesiącach

 

Udało mi się stworzyć takie coś, lecz program się wykrzacza:

#include <iostream>
#include <math.h>

using namespace std;

float W, e;
int s, stanLok[12];

float kredyt(float W, float e, int s, int stanLok[])
{
	if (s == 1)
		return W;

	else
		return W + e*W;
}

int main()
{
	cout << "Podaj sume pieniedzy na lokacie: ";
	cin >> W;
	cout << "Podaj procent lokaty: ";
	cin >> e;
	cout << "Podaj ilosc miesiecy lokaty (maksymalnie 12): ";
	cin >> s;
	if (s < 1 && s > 12)
	{
		cout << "Podales zla ilosc miesiecy!";
	}
	else
	{
		stanLok[s] = W + e*W;
		kredyt(W, e, s,stanLok);
	}

	for (int i = 0; i < s; i++)
		cout << "Stan lokaty dla " << i+1 << " miesiaca wynosi: " << stanLok << endl;


	system("pause");
	return 0;

}

 

1 odpowiedź

0 głosów
odpowiedź 13 listopada 2015 przez furas Maniak (53,800 p.)

W funkcji liczysz wartość tylko dla jednego miesiąca i zwracasz ten wynik przez `return` a masz w funkcji policzyć dla wszystkich miesięcy (od 1 do 12 - czyli potrzebna jakaś pętla) i wyniki zapisywac w stanLock.

---

Przy wypisuwaniu zapominasz, że stanLock to tablica więc masz wypisywać stanLock[ i ] a nie stanLock.

komentarz 13 listopada 2015 przez Plessio Obywatel (1,090 p.)
edycja 13 listopada 2015 przez Plessio
#include <iostream>
#include <math.h>

using namespace std;

float W, e;
int s, stanLok[12];

float kredyt(float W, float e, int s, int stanLok[])
{
	if (s == 1)
		return W;

	else
		return W+kredyt(e/100*W);
}

int main()
{
	cout << "Podaj sume pieniedzy na lokacie: ";
	cin >> W;
	cout << "Podaj procent lokaty: ";
	cin >> e;
	cout << "Podaj ilosc miesiecy lokaty (maksymalnie 12): ";
	cin >> s;
	if (s < 1 || s > 12)
	{
		cout << "Podales zla ilosc miesiecy!" << endl;
	}
	else
	{
		for (int i = 0; i < s; i++)
		{
			kredyt(W, e, s, stanLok);
			stanLok[i] = W*e / 100 + W;
			cout << "Stan lokaty dla " << i + 1 << " miesiaca wynosi: " << stanLok[i] << endl;
		}

	}
	system("pause");
	return 0;

}

Przerobiłem na takie coś, ale funkcja wymaga więcej argumentów i nie wiem jak wcisnąć je tam.

komentarz 13 listopada 2015 przez furas Maniak (53,800 p.)
edycja 13 listopada 2015 przez furas

Prawdę mówiąc nic takiego nie zrobiłeś. 

Po to przekazujesz `stanLok` do `kredyt` aby w `kredyt` zapisywać wyniki od razu do `stanLok` a ty to wciąż robisz w `main`

Nie wiem po co robisz `return` jak i tak tej zwracanej informacji nie wykorzystujesz. Masz wyniki wrzucać od razu do `stanLok` a nie zwracać je przez `return`.

W `main` wykonujesz pętlę `for` a powinieneś ją wykonywac w `kredyt`. Masz w `main` wywołać `kredyt` tylko raz a nie wielokrotnie w pętli. A dopiero po wywołaniu `kredyt` będzie Ci potrzebna pętla `for` aby jedynie wypisywać wartości z `stanLok`.

W `main` masz pobrać dane od użytkownika, wywołać tylko raz `kredyt` i na koniec wypisać wyniki. Cała robota musi się odbyć wewnątrz `kredyt`.

---

http://ideone.com/hX2JEJ

komentarz 13 listopada 2015 przez furas Maniak (53,800 p.)

ps. parametr s (czyli kapitalizacja odsetek w skali X miesięcy) nie oznacza na ile miesięcy jest otwarta lokata tylko co ile miesięcy są dopisywane odsetki. Możesz mieć lokatę na 12 miesięcy a odsetki mogą być dopisywane co miesiąc albo co 2 miesiące lub 3 miesiące, itd.

Podobne pytania

0 głosów
0 odpowiedzi 300 wizyt
pytanie zadane 15 października 2019 w C i C++ przez four Użytkownik (720 p.)
0 głosów
4 odpowiedzi 2,773 wizyt
pytanie zadane 9 stycznia 2019 w C i C++ przez niezalogowany
0 głosów
2 odpowiedzi 858 wizyt

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

61,968 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...