2013-02-18 6 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. выход не должен быть похожим на пример, но что-то подобное.

здесь код Айв создан до сих пор:

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

Посмотрите [Итерационные утверждения (ссылка на C#)] (http://msdn.microsoft.com/en-us/library/32dbftby (v = vs.100) .aspx) –

ответ

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

+0

Я добавил пару Console.WriteLine() для вас, но я думаю, что вы вероятно, мог бы справиться с этим :-) – openshac

+0

, но этот код дает мне exakt тот же outut, что и ниже: p, хочу, чтобы результат был чем-то вроде примера, который я написал сверху, но я собираюсь засунуть его после того, как я сделал еду – user2043267

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

Кроме того, может потребоваться изменить double на Decimal для расчета валюты ! –

+0

@ Антонио Папа Я могу получить этот вывод без цикла while, что мне нужно сделать, это умножить капитал с процентами до тех пор, пока капитал не достигнет удвоенного начального капитала – user2043267

+0

да, это может сделать это while (initialcapital> capital/2 делает что) –

Смежные вопросы