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

bank, co dalej?

Object Storage Arubacloud
0 głosów
614 wizyt
pytanie zadane 3 października 2015 w C i C++ przez hakiros54 Obywatel (1,160 p.)

dobra, nie wiem co dalej, chyba sie troche pogubiłem, chciałem zrobić program w ktorym podajemy ile dajemy do banku, jaka jest stopa procentowa (czy jakos tak), na ile dajemy kase oraz co ile będzie się odnawiać ta cena w banku (wiecie, ze np 4 razy w roku sie odnawia czyli ze jak mamy np. 1000 zł a stopa procentowa wynosi 4 % to dodajemy do 1000 1% i następnym razem procenty będą liczone od 1010 zł, itd. 4 razy w roku) ale padłem ;P najpierw zrobiłem ten program tylko bez tego odnawiania sie ceny to mi sie udało, ale jak spróbowałem to dodać to juz nie wiem jak :/

#include <iostream>

using namespace std;
int miesiace, odswierzanie; float oprocentowanie[2], kwota, koniec, razem[999999];

int main()
{
    cout << "jaka kwote posiadasz na koncie"<<endl;
    cin  >> kwota;
    cout << "na ile miesiecy dajesz pieniadze do banku" << endl;
    cin  >> miesiace;
    cout << "podaj oprocentowanie w skali rocznej(w procentach)"<<endl;
    cin  >> oprocentowanie[1];
    cout << "podaj ile razy w roku stan konta ma się odświerzać"<<endl;
    cin  >> odswierzanie;
    oprocentowanie[0]=((((oprocentowanie[1]/100)*0.80)/(12/miesiace))/odswierzanie);
    razem[0]==kwota;
    for (int i=1; i<=odswierzanie; i++ )
    {
     
     razem[i] = (oprocentowanie[0]*razem[i-1])+razem[i-1];
    }
    koniec= ((kwota*oprocentowanie[0])+kwota);
    cout <<"po roku na koncie bedziesz mial:"<<endl<<koniec;
    return 0;
}

 

3 odpowiedzi

0 głosów
odpowiedź 3 października 2015 przez hakiros54 Obywatel (1,160 p.)
na koncu pewnie cos sie bedzie nie zgadzać bo jeszcze nie przerobiłem tego z tej prostrzej wersji
0 głosów
odpowiedź 3 października 2015 przez ScriptyChris Mędrzec (190,190 p.)

Proszę: 


#include <iostream>

using namespace std;
int miesiac = 1, odswiezanie, dlugoscLokaty, licznik, counter;
float oprocentowanie, kwotaWplacona, naKoniecLokaty, razem;

int main()
{
    cout << "jaka kwote posiadasz na koncie ";
    cin  >> kwotaWplacona;
    cout << endl <<"na ile miesiecy dajesz pieniadze do banku ";
    cin  >> dlugoscLokaty;
    cout << endl << "podaj oprocentowanie w skali rocznej (w procentach) ";
    cin  >> oprocentowanie;
    cout << endl << "podaj ile razy w roku stan konta ma sie odświezac ";
    cin  >> odswiezanie;

    oprocentowanie = (oprocentowanie/100)/12;
    razem = kwotaWplacona;
    licznik = 12/odswiezanie;
    counter = licznik;
    for (int i = miesiac; i <= dlugoscLokaty; i++ )
    {
        razem += (kwotaWplacona * oprocentowanie);

        if (i == counter)
        {
            cout << "Po " << miesiac << " miesiacach na koncie masz " << razem << endl;
            counter += licznik;
        }
        if (i >= dlugoscLokaty)
        {
            cout <<"po roku na koncie bedziesz mial: " << razem << "(minelo " << miesiac << " miesiecy)";
            break;
        }
        miesiac++;
    }
    return 0;
}

Sprawdziłem wg kalkulatora lokat. Niby dobrze liczy, ale kalkulatory biorą pod uwagę jakiś podatek, więc ciut inne wyniki wychodzą. Np. http://www.totalmoney.pl/kalkulatory/ile-zarobisz-na-lokacie

komentarz 4 października 2015 przez hakiros54 Obywatel (1,160 p.)
podatek wynosi 20%, chciałem go uwzględnić w moim programie (dlatego w oprocentowanie w pewnym momencie robiłem *0.8) ale ten twoj program i tak nie działa tak jak miał :/ prawie wszystko dobrze nie licząc tego z czym miałem problem, w tym odświeżaniu nie chodziło mi o to żeby pokazywało ile będę miał pieniędzy po np. 6 miesiącach tylko o to by potem od tej kwoty odliczać. np. 10 000 zł dajemy, oprocentowanie 3% na 12 miesięcy, odswieżanie 2 razy w roku

wiec po 6 miesiącach bedzie 10 150, ale po 12 miesiącach już bedzie 10 302,25 bo % będzie odliczany od 10 150
komentarz 4 października 2015 przez ScriptyChris Mędrzec (190,190 p.)
edycja 4 października 2015 przez ScriptyChris

Chodzi Ci o to, że to odświeżanie ma oznaczać termin kapitalizacji odsetek? Bo ja przyjąłem, że co miesiąc te procenty są liczone, a odświeżanie to chciałeś, aby co x miesięcy pokazywał stan konta. A Ty przez odświeżanie rozumiesz ilość miesięcy co ile kapitalizowane (podliczane) są odsetki?

[edit]

Jeśli tak, to kwestia zmiany 2 linijek kodu:

#include <iostream>

using namespace std;
int miesiac = 1, odswiezanie, dlugoscLokaty, licznik, counter;
float oprocentowanie, kwotaWplacona, naKoniecLokaty, razem;

int main()
{
    cout << "jaka kwote posiadasz na koncie ";
    cin  >> kwotaWplacona;
    cout << endl <<"na ile miesiecy dajesz pieniadze do banku ";
    cin  >> dlugoscLokaty;
    cout << endl << "podaj oprocentowanie w skali rocznej (w procentach) ";
    cin  >> oprocentowanie;
    cout << endl << "podaj ile razy w roku stan konta ma sie odœwiezac (termin kapitalizacji odsetek) ";
    cin  >> odswiezanie;

    oprocentowanie = (oprocentowanie/100)/12;
    razem = kwotaWplacona;
    licznik = 12/odswiezanie;
    counter = licznik;
    for (int i = miesiac; i <= dlugoscLokaty; i++ )
    {
        if (i == counter)
        {
            razem += (kwotaWplacona * oprocentowanie);
            cout << "Po " << miesiac << " miesiacach na koncie masz " << razem << endl;
            counter += licznik;
        }
        if (i >= dlugoscLokaty)
        {
            cout <<"po roku na koncie bedziesz mial: " << razem << "(minelo " << miesiac << " miesiecy)";
            break;
        }
        miesiac++;
    }
    return 0;
}

Mam nadzieję, że o to Ci chodziło :) Tylko dopisz tam co trzeba, żeby uwzględnić ten podatek od odsetek.

komentarz 4 października 2015 przez hakiros54 Obywatel (1,160 p.)
teraz to już wszystko pomieszałeś ;P dałem 1000 zł do banku, oprocentowanie 1 % 1 odswiezenie i było w banku 12 miesiecy, po roku było 1000,83 tak wyszło w tym programie ;P
komentarz 4 października 2015 przez ScriptyChris Mędrzec (190,190 p.)

To już nie wiem o co Ci chodzi :) Ostatnie pytanie brzmi "podaj ile razy w roku stan konta ma sie odœwiezac (termin kapitalizacji odsetek)" - jeśli ma to być w stosunku rocznym, no to 12 miesięcy (oprocentowanie też jest przeliczane w stosunku rocznym, tyle że kapitalizacja jest po wybranej liczbie mie sięcy). Sprecyzuj o co Ci konkretnie chodzi, albo jeśli już wiesz jak to zapisać, to zmień kod ;)

komentarz 4 października 2015 przez hakiros54 Obywatel (1,160 p.)
popatrz, jak dam pieniądze na lokate na rok, i tam te 1000 zł to jak oprocentowanie wynosi 5% to po roku masz 1050 zł a jesli zostawisz te pieniądze na kolejny rok, to nie będziesz miał 1100, będziesz miał 1102,5 bo w następnym roku kwota będzie odliczana od 1050 a nie 1000, i chodzi mi o to że gdybym to co tu zapisałem miało by być w programie to wyglądało by to tak:
jaką kwote masz w banku?
1000
na ile dajesz pieniądze(miesiące)?
24 (bo najpierw na rok, potem na drugi więc razem bedzie 24)
jakie jest oprocentowanie
5%
ile razy kwota ma sie odswiezac?
2(po 1 roku i po 2)
po 12 miesiącach na koncie będziesz miał: 1050 zł
po 24 miesiącach na koncie będziesz miał: 1102,5 zł

mam nadzieje ze rozumiesz teraz o co mi chodzi :)
gdybym dał na rok ale 12 razy miało by sie odświeżać to wyglądało by to tak:
po 1 miesiącu będziesz miał : 1002,5
po 2 1005 (jkwoty ponizej jednego grosza nie liczyłem bo by mi to wieki zajeło)
po 3 1007,6
po 4 1010,61
po 5 1013.13
po 6 1015.66
po 7 1018.19
po 8 1020.73
po 9 1023.28
po 10 1025.83
po 11 1028.39
po 12 1030.96

mam nadzieje ze rozumisz o co mi chodzi, każdą kolejną kwote robi sie na podstawie poprzedniej łącznie nawet złotówki sie na tym nie zarobiło ale jakby sie ustaliło że kwota sie odnawia codziennie (czyli wpisało się tam 365 zamiast 12) albo zrobiło tak że co miesiac sie odświeża ale wsadziło by sie na 20 lat to by z tego niezła suma wyszła.
komentarz 5 października 2015 przez ScriptyChris Mędrzec (190,190 p.)
#include <iostream>

using namespace std;
int miesiac = 1, odswiezanie, dlugoscLokaty, licznik, counter;
float oprocentowanie, kwotaWplacona, naKoniecLokaty, razem;

int main()
{
    cout << "jaka kwote posiadasz na koncie ";
    cin  >> kwotaWplacona;
    cout << endl <<"na ile miesiecy dajesz pieniadze do banku ";
    cin  >> dlugoscLokaty;
    cout << endl << "podaj oprocentowanie w skali rocznej (w procentach) ";
    cin  >> oprocentowanie;
    cout << endl << "podaj ile razy w roku stan konta ma sie odœwiezac (termin kapitalizacji odsetek) ";
    cin  >> odswiezanie;

    oprocentowanie = (oprocentowanie/100)/12;
    razem = kwotaWplacona;
    licznik = dlugoscLokaty/odswiezanie;
    counter = licznik;
    for (int i = miesiac; i <= dlugoscLokaty; i++ )
    {
        razem += (kwotaWplacona * oprocentowanie);
        if (i == counter)
        {
            cout << "Po " << miesiac << " miesiacach na koncie masz " << razem << endl;
            counter += licznik;
        }
        if (i >= dlugoscLokaty)
        {
            cout << endl << "po " << (float) miesiac/12 << " roku/latach na koncie bedziesz mial: " << razem << "( minelo " << miesiac << " miesiecy)";
            break;
        }
        miesiac++;
    }
    return 0;
}

To pewnie nie to, ale ja nie ogarniam wyliczeń bankowych :P Może ktoś inny pomoże.

0 głosów
odpowiedź 4 października 2015 przez Bondrusiek Maniak (61,370 p.)

Witam serdecznie,

przypuszczam, że problem tkwi w lini 17

razem[0]==kwota;

zamień na

razem[0]=kwota;

Operator == służy do porównywania dwóch wartości. Natomiast operator = do przypisywania wartość z prawej strony na lewą.

Jeszcze pozwolę sobie dodać kilka uwag :

  1. Staraj się unikać zmiennych globalnych. Jest złą praktyką zaśmiecanie obszaru globalnego. Nawet jedną z głównych zalet C++ jest hermetyzacja(uszczelnianie zabezpieczające przed przenikaniem) danych.
  2. Gdy nie jesteś pewie jaki rozmiar będzie posiadać tablica alokuj ją. Zobacz sobie operatorem sizeof(razem) jak dużo ta tablica zajmuje miejsca. Poprzez alokacji pamięci zyskujesz dużo pamięci. Przy dużuch programach ma to duże znaczenie. Także użyj zapisu int *wsk = new int[999]; a przed końcem programu zwolnij wolną pamięć za pomocą operatora delete []wsk;.
  3. Definiuj tablice w kierunku rosnącym nie malejącym tzn. oprocentowanie[0]=... , oprocentowanie[1] = ... itd. Ułatwia to pracę z tablicą.

Podobne pytania

0 głosów
0 odpowiedzi 260 wizyt
pytanie zadane 18 marca 2021 w Nasze projekty przez Bonczy Nowicjusz (160 p.)
+1 głos
0 odpowiedzi 186 wizyt
pytanie zadane 14 lipca 2019 w Inne języki przez Tomasz Kolk Użytkownik (750 p.)
0 głosów
1 odpowiedź 258 wizyt
pytanie zadane 17 czerwca 2015 w PHP przez Damianexo Obywatel (1,710 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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!

...