Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemZamknuto Program na počítání úrokové míry - test na nervy [C#]

Zdravím,
mám menší porblém. V C# jsem napsal program na počítání úrokové míry. Je to celkem test na nervy a na chápání kódu. Kód je následovný:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PocitaniUrokoveMiry
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Vítá vás kalkulačka pro počítání úrokové míry verze 1.0, vytvořená by Ondřej Búřil"); //konzolový komentář pro user interface

                Console.WriteLine("Zadejte počáteční vloženou částku:"); //konzolový komentář pro user interface
                float VlozenaCastka = float.Parse(Console.ReadLine()); //uložení proměnné VlozenaCastka do RAM

                Console.WriteLine("Nyní zadejte úrok (v procentech bez procentového znaménka):"); //konzolový komentář pro user interface
                float Urok = float.Parse(Console.ReadLine()); //uložení proměnné Urok do RAM

                Console.WriteLine("Nyní zadejte daň (v procentech bez procentového znaménka) :"); //konzolový komentář pro user interface
                float Dan = float.Parse(Console.ReadLine()); //uložení proměnné Dan do RAM

                Console.WriteLine("Nyní zadejte počet měsíců, po které bude částka uložena:"); //konzolový komentář pro user interface
                int PocetMesicu = int.Parse(Console.ReadLine()); //uložení proměnné PocetMesicu do RAM

                float VyslednaCastka;

                float a = VlozenaCastka / 100; //Jedno procento z vložené částky

                float b = a * Urok; //Úrok z vložené částky

                float c = b / 100; //Jedno procento z úroku

                float d = c * Dan; //Daň z úroku

                float e = Urok - d; //Úrok mínus daň z úroku - co dostaneme na úrocích

                float f = VlozenaCastka + e; //Výsledná částka

                string vystup = "Úroková míra je:" + f;

                Console.WriteLine(vystup);
                Console.ReadKey();


        }
    }
}

Program ale má v sobě nějakého zakopaného psa, kterého jsem nedokázal najít. Počítá špatně. Když daním jenom úrok, tak se mi musí celková částka jenom přičítat, ne odečítat. Např. při vložené částce 10000, úroku 2%, dani 15% a počtu měsíců (ještě jsem nějak nerozlouskl jak ten výpočet zapsat do kódu, prakticky nefunkční) 0 mi háže celkovou částku 9972. Co mám špatně?

Díky, SteveXtreme.

P.S.: Kdyby byl někdo schopný můj kód opravit a přidat na funkčnosti počtu měsíců kde se celá věc podstatně komplikuje, byl bych vděčný <3
Lock na přání autora dotazu. (karel)
Vymazané odpovede mimo témy. (los)

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
float e = Urok - d; //Úrok mínus daň z úroku - co dostaneme na úrocích ne. ale takto: float e = b…
MM.. 28.01.2015 20:10
MM..
Mohl bys prosím tvůj a Wikianův kód zakompilovat do mého v jednom souboru? Nějak nwm jak xD... teda…
SteveXtreme 28.01.2015 20:12
SteveXtreme
wikanov sposob by bol takto: for (i=0; i<PocetObdobi; i++) { VlozenaCastka = VlozenaCastka * (1 + U…
MM.. 28.01.2015 20:16
MM..
Tu chybu už jsem opravil. Spíš bych to viděl takhle: var vysledek = VlozenaCastka * Math.Pow((1 + U…
Wikan 28.01.2015 20:21
Wikan
Ja si myslim ze danovy urad treba zrusit a potom nebude treba taketo kraviny ;)) P.S. ano ak to je…
MM.. 28.01.2015 20:22
MM..
No to mi povídej, teď jsem počítal daň z nemovitosti...
Wikan 28.01.2015 20:23
Wikan
Takže nějaký definitivní kód, jak bych měl celý program napsat? Omlouvám se, že všechno chci tak pol…
SteveXtreme 28.01.2015 20:27
SteveXtreme
To záleží na tom, jak to potřebuješ. Úroková sazba je měsíční nebo roční? Úroky se počítají měsíčně…
Wikan 28.01.2015 20:33
Wikan
1.) Nic nezaokrouhlovat 2.) Úroková sazba je měsíční, závislá na (ani nevím proč floatu) PocetMesicu…
SteveXtreme 28.01.2015 20:37
SteveXtreme
Pokud je úroková sazba měsíční, tak stačí v tom kódu změnit 1200 na 100.
Wikan 28.01.2015 20:39
Wikan
*vzdych* Nechci být nevděčný, ale to stále neodpovídá na otázku, jak zfunkčnit PocetMesicu.
SteveXtreme 28.01.2015 20:40
SteveXtreme
var vysledek = VlozenaCastka * Math.Pow((1 + Urok * (1 - Dan / 100) / 100)), PocetMesicu); to je c…
MM.. 28.01.2015 20:42
MM..
Řekněme, že "nevím", co na tom nefunguje. (P.S.: chybovy vypis, omlouvam se za tu bílou část, špatný…
SteveXtreme 28.01.2015 20:46
SteveXtreme
Chyba tam jedna zatvorka hned za Pow (alebo zmaz predposlednu zatvorku) P.S. pripadne ak mu potom b… poslední
MM.. 28.01.2015 20:56
MM..

float e = Urok - d; //Úrok mínus daň z úroku - co dostaneme na úrocích

ne. ale takto:

float e = b - d; //Úrok mínus daň z úroku - co dostaneme na úrocích

Pouzivas dementne nazvy premennych, a potom nevies co je co a scitavas dokopy nezmysly. Normalne mas mat premenne napr. UrokovaMieraZaMesiac, DanVPercentachZaMesiac. Aby bolo uplne jasne ze to je za mesiac alebo za rok alebo za kolko to tam vlastne mas, a ze to je miera a ne suma. Btw. to sa v CR meraju uroky a dane mesacne? Dan sa snad rata len rocne (?)

Nacitas ich zo vstupu. potom urobis napr.:

for(i=0; i<PocetMesiacov; i++) {
 UrokZaMesiac = VlozenaCastka * UrokovaMieraZaMesiac / 100;  // zatvorky netreba, a stejne je lepsie najprv nasobit lebo nizsia chyba vypoctu.
 DanZaMesiac = UrokZaMesiac * DanVPercentachZaMesiac / 100;
 VlozenaCastka += UrokZaMesiac - DanZaMesiac; // vysledna castka je zaroven "vlozena castka" pre vypocet dalsieho mesiaca
}

P.S. a ked ti nefunguje program tak si ho odkrokujes v debuggeri a pozeras premenne, a vidis za 3sekundy co tam je blbo.

Tu chybu už jsem opravil.
Spíš bych to viděl takhle:

var vysledek = VlozenaCastka * Math.Pow((1 + Urok * (1 - Dan / 100) / 1200)), PocetMesicu);

Za předpokladu, že úroky se připisují úroková míra je roční, úroky se připisují měsíčně a neřešíme zaokrouhlování.

1.) Nic nezaokrouhlovat
2.) Úroková sazba je měsíční, závislá na (ani nevím proč floatu) PocetMesicu. To potrebuju nejakym cyklem zakomponovat do kodu, aby to pocitalo i s tim poctem mesicu za predpokladu ze se tvuj kod pocita jednou za cyklus na kazdy mesic a pak se pricte k vysledku. To nevim jak napsat.

Tak to potrebuju. S tvym radkem kodu to funguje, ale potrebuju ten kus kodu na pocitani s PocetMesicu, aby program byl skutecne funkcni.

Zpět do poradny Nahoru