Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.cpp
- // denar
- //
- // Created by Tadej Gruber on 12. 01. 12.
- // Copyright (c) 2012 __MyCompanyName__. All rights reserved.
- //
- #include <iostream>
- #include <fstream>
- #include <string.h>
- using namespace std;
- //struktura za podatke o bankah
- struct Podatki_bank {
- string ime;
- double obrestna_mera;
- double kredit;
- double doba;
- };
- //prototipi funkcij
- void banke(Podatki_bank* banka, int stevilo);
- double izracun_cene(double gl_kred, double obrok, double doba_od, double obr_m);
- //glavna funkcija
- int main (int argc, const char * argv[])
- {
- //vnos za število bank in dinamična določitev prostora
- int stevilo_bank;
- cout << "Vnesite število bank: ";
- cin >> stevilo_bank;
- Podatki_bank* banka = new Podatki_bank[stevilo_bank];
- banke(banka, stevilo_bank);
- //odloči se za katero banko želi izračunati kredit
- int doloci;
- cout << "za katero banko želite izračun cene kredita? (vpišite številko)" << endl;
- cin >> doloci;
- cout << "doba " << banka[doloci - 1].doba << "\nobr mera " << banka[doloci - 1].obrestna_mera << "\nosn kredit " << banka[doloci - 1].kredit << endl;
- //vzamemo obrestno mero banke, dobo odplačevanja in izračunamo obrok
- double obr_mera, obrok, doba_odp, osn_kred;
- doba_odp = banka[doloci - 1].doba;
- obr_mera = banka[doloci - 1].obrestna_mera;
- osn_kred = banka[doloci - 1].kredit;
- obrok = osn_kred/doba_odp; //obrok je razdeljen glede na dobo odplačevanja, zato je vsaki mesec enak
- //kličemo funkcijo izracun_cene, da izračunamo ceno kredita (to je končna vsote obresti) in jo izpišemo
- double cena_kredita = izracun_cene(osn_kred, obrok, doba_odp, obr_mera);
- cout << "Cena kredita je: " << cena_kredita << endl;
- //podatke še zapišemo v datoteko banke.txt
- ofstream File ("banke.txt");
- for (int i = 0; i < stevilo_bank; i++) {
- File << banka[i].ime << endl;
- File << "\tCena kredita je: " << cena_kredita << "," << endl;
- File << "\ttrajanje odplačevanja kredita je: " << doba_odp << "," << endl;
- File << "\tmesečni obrok pa znaša: " << obrok << "." << endl;
- File << "\tRazlika med plačano ceno kredita (" << osn_kred + cena_kredita << ") in najeto ceno (" << osn_kred << ") je: " << cena_kredita << endl;
- }
- File.close();
- //in sprostimo prostor v pomnilniku (prej dinamično določen)
- delete [] banka;
- return 0;
- }
- //funkcija za vnos podatkov za kredite
- void banke(Podatki_bank* banka, int stevilo) {
- cout << "\nVnesite podatke o bankah." << endl;
- for (int i = 0; i < stevilo; i++) {
- cout << "Podatki za " << i + 1 << " banko:\n" << endl;
- cout << "Vnesite ime: " << endl;
- cin >> banka[i].ime;
- cout << "Vnesite obrestno mero banke:" << endl;
- cin >> banka[i].obrestna_mera;
- cout << "Vnesite znesek kredita:" << endl;
- cin >> banka[i].kredit;
- cout << "Vnesite trajanje odplačevanja kredita:" << endl;
- cin >> banka[i].doba;
- cout << endl;
- }
- }
- //izračun kredita z rekurzjo
- double izracun_cene(double gl_kred, double obrok, double doba_od, double obr_m) {
- //cout << "gl_kred: " << gl_kred << "\nobrok: " << obrok << "\ndoba: " << doba_od << "\nobr_mera: " << obr_m << endl;
- double p = obr_m/(100*doba_od); //dejanski izračun obresti je v bistvu obresti = kredit*(obrestna_mera/doba), zato sem si obr_m/doba dal v posebno
- double obresti = gl_kred*p; //spremenljivko, ker je to vedno konstantno. Začetne obresti pa so prvo izračunane z osnovnim kreditom (glavnico)
- //cout << "p: " << p << " " << obresti << endl; //nakar se vsakič znova pri rekurzivnem klicu funkcije ta kredit zmanjša za obrok.
- if(gl_kred == 0) {
- return obresti; //ko je glavni kredit enak 0 (torej takoj kak se obrok odšteje in pride gl_kred na 0 bo funkcija takoj vrnila obresti
- }
- else { //drugače pa bo klicala samo sebe in odštevala obroke kreditu dokler ta ne doseže 0 in sproti računala in seštevala
- return obresti = obresti + izracun_cene(gl_kred - obrok, obrok, doba_od, obr_m); //obresti in jih vrača. ob klicu v mainu pa te obresti, ki so cena kredita izpišemo
- }
- }
Add Comment
Please, Sign In to add comment