Guest User

Untitled

a guest
May 24th, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.58 KB | None | 0 0
  1. //
  2. //  main.cpp
  3. //  denar
  4. //
  5. //  Created by Tadej Gruber on 12. 01. 12.
  6. //  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
  7. //
  8.  
  9. #include <iostream>
  10. #include <fstream>
  11. #include <string.h>
  12. using namespace std;
  13.  
  14. //struktura za podatke o bankah
  15. struct Podatki_bank {
  16.     string ime;
  17.     double obrestna_mera;
  18.     double kredit;
  19.     double doba;
  20. };
  21.  
  22. //prototipi funkcij
  23. void banke(Podatki_bank* banka, int stevilo);
  24. double izracun_cene(double gl_kred, double obrok, double doba_od, double obr_m);
  25.  
  26. //glavna funkcija
  27. int main (int argc, const char * argv[])
  28. {
  29.     //vnos za število bank in dinamična določitev prostora
  30.     int stevilo_bank;
  31.     cout << "Vnesite število bank: ";
  32.     cin >> stevilo_bank;
  33.    
  34.     Podatki_bank* banka = new Podatki_bank[stevilo_bank];
  35.    
  36.     banke(banka, stevilo_bank);
  37.    
  38.     //odloči se za katero banko želi izračunati kredit
  39.     int doloci;
  40.     cout << "za katero banko želite izračun cene kredita? (vpišite številko)" << endl;
  41.     cin >> doloci;
  42.    
  43.     cout << "doba " << banka[doloci - 1].doba << "\nobr mera " << banka[doloci - 1].obrestna_mera << "\nosn kredit " << banka[doloci - 1].kredit << endl;
  44.    
  45.     //vzamemo obrestno mero banke, dobo odplačevanja in izračunamo obrok
  46.     double obr_mera, obrok, doba_odp, osn_kred;
  47.     doba_odp = banka[doloci - 1].doba;
  48.     obr_mera = banka[doloci - 1].obrestna_mera;
  49.     osn_kred = banka[doloci - 1].kredit;
  50.     obrok = osn_kred/doba_odp;                              //obrok je razdeljen glede na dobo odplačevanja, zato je vsaki mesec enak
  51.    
  52.     //kličemo funkcijo izracun_cene, da izračunamo ceno kredita (to je končna vsote obresti) in jo izpišemo
  53.     double cena_kredita = izracun_cene(osn_kred, obrok, doba_odp, obr_mera);
  54.     cout << "Cena kredita je: " << cena_kredita << endl;
  55.    
  56.     //podatke še zapišemo v datoteko banke.txt
  57.     ofstream File ("banke.txt");
  58.    
  59.     for (int i = 0; i < stevilo_bank; i++) {
  60.         File << banka[i].ime << endl;
  61.         File << "\tCena kredita je: " << cena_kredita << "," << endl;
  62.         File << "\ttrajanje odplačevanja kredita je: " << doba_odp << "," << endl;
  63.         File << "\tmesečni obrok pa znaša: " << obrok << "." << endl;
  64.         File << "\tRazlika med plačano ceno kredita (" << osn_kred + cena_kredita << ") in najeto ceno (" << osn_kred << ") je: " << cena_kredita << endl;
  65.  
  66.     }
  67.     File.close();
  68.    
  69.     //in sprostimo prostor v pomnilniku (prej dinamično določen)
  70.     delete [] banka;
  71.     return 0;
  72. }
  73.  
  74. //funkcija za vnos podatkov za kredite
  75. void banke(Podatki_bank* banka, int stevilo) {
  76.     cout << "\nVnesite podatke o bankah." << endl;
  77.    
  78.     for (int i = 0; i < stevilo; i++) {
  79.         cout << "Podatki za " << i + 1 << " banko:\n" << endl;
  80.         cout << "Vnesite ime: " << endl;
  81.         cin >> banka[i].ime;
  82.         cout << "Vnesite obrestno mero banke:" << endl;
  83.         cin >> banka[i].obrestna_mera;
  84.         cout << "Vnesite znesek kredita:" << endl;
  85.         cin >> banka[i].kredit;
  86.         cout << "Vnesite trajanje odplačevanja kredita:" << endl;
  87.         cin >> banka[i].doba;
  88.         cout << endl;
  89.     }
  90. }
  91.  
  92. //izračun kredita z rekurzjo
  93. double izracun_cene(double gl_kred, double obrok, double doba_od, double obr_m) {
  94.     //cout << "gl_kred: " << gl_kred << "\nobrok: " << obrok << "\ndoba: " << doba_od << "\nobr_mera: " << obr_m << endl;
  95.    
  96.     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
  97.     double obresti = gl_kred*p;                                                     //spremenljivko, ker je to vedno konstantno. Začetne obresti pa so prvo izračunane z osnovnim kreditom (glavnico)
  98.    
  99.     //cout << "p: " << p << " " << obresti << endl;                                                        //nakar se vsakič znova pri rekurzivnem klicu funkcije ta kredit zmanjša za obrok.
  100.    
  101.     if(gl_kred == 0) {
  102.         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
  103.     }
  104.     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
  105.         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
  106.     }
  107. }
Add Comment
Please, Sign In to add comment