2013-02-18 34 views
0

我想创建一个循环,该循环具有给定的初始资本和固定的年度百分比率(利息),该循环显示当前年度的当前资本直至并包括资本翻了一番。循环,直到资本增加一倍c#

例如初始资本为3000,利息是12

//3000*(1 + 12/100) = 3360 

output 
year 1 = 3360 
year 2 = 3763.2 
year 3 = 4214.78 
year 4 = 4720.55 
year 5 = 5287,02 
year 6 = 5921,46 
//end (when the initial capital(3000) has doubled (6000)) 

什么,我需要帮助是创建一个循环,将计算和显示输出,直到资本都设有带了一倍循环或while循环。输出结果不一定像例子,但类似的东西。

这里是迄今为止创建的代码IVE:

double initialcapital = 0; 
double interest = 0; 
int year = 0; 
double capital = 0; 

Console.Write("Initial capital: "); 
initialcapital = int.Parse(Console.ReadLine()); 

Console.Write("Interest: "); 
interest = int.Parse(Console.ReadLine()); 

capital = initialcapital * (1 + interest/100); 
year = year + 1 
Console.Writeline(capital); 
+0

看[Iteration Statements(C#Reference)](http://msdn.microsoft.com/en-us/library/32dbftby(v = vs.100).aspx) – 2013-02-18 10:48:24

回答

1

如果你想找到的多年的确切数字前的金额增加一倍,你可以使用这个:

double exactYears = Math.Log(2)/Math.Log((100 + interest)/100); 

否则下面就为你工作:

double initialCapital = 0; 
double interest = 0; 
int year = 0; 
double capital = 0; 

Console.Write("Initial capital: "); 
initialCapital = int.Parse(Console.ReadLine()); 

Console.Write("Interest: "); 
interest = int.Parse(Console.ReadLine()); 
capital = initialCapital; 

while (capital < initialCapital * 2) 
{ 
    capital = capital * (1 + interest/100); 
    year = year + 1; 

    Console.WriteLine("Years: " + year); 
    Console.WriteLine("Capital: " + capital); 
} 

Console.WriteLine("Years: " + year); 
Console.WriteLine("Capital: " + capital); 

double exactYears = Math.Log(2)/Math.Log((100 + interest)/100); 
Console.WriteLine(string.Format("Capital doubled in exactly: {0:0.000} years", exactYears)); 
+0

这对我来说真的很有用,但我需要的最后一件事情是打印出每年的首都是多少/谢谢 – user2043267 2013-02-18 11:24:17

+0

我为你添加了几个Console.WriteLine(),但我认为你大概可以这样做:-) – openshac 2013-02-18 11:28:05

+0

但这段代码给了我exakt相同的outut,如下所示:p,希望输出成为我在顶部写的例子,但即时消息完成后,我会与它争执 – user2043267 2013-02-18 11:31:52

1
void displayCapital(double initalcapital, double interest){ 
    int year = 1; 
    double capital = initialcapital; 

    while(initialcapital > capital/2) { 
     Console.Write("Initial capital: "); 
     initialcapital = int.Parse(Console.ReadLine()); 

     Console.Write("Interest: "); 
     interest = int.Parse(Console.ReadLine()); 

     capital = initialcapital * (1 + interest/100); 
     year = year + 1 
     Console.Writeline(capital); 
    } 
} 

只需调用displayCapital(3000,12);和你做

+1

此外,可能希望将货币计算的双倍更改为Decimal ! – 2013-02-18 11:01:16

+0

@Antonio Papa 我可以在没有while循环的情况下得到那个输出,我需要做的是将资本与利息相乘,直到资本达到初始资本的一倍 – user2043267 2013-02-18 11:06:30

+0

是的,这可以做到这一点,while(initialcapital> capital/2 does ) – 2013-02-18 12:23:03