PDA

Показать полную графическую версию : цикл do-while c#


rom4ik_93@vk
23-03-2012, 23:53
Помогите пожалуйста, уже 3 мучаюсь, вот такое задание:
Дана функция x=a*sin(k*t+2)*cos(k*t). Составить алгоритм для расчета значений этой функции, если а изменяется от 5до 7 с шагом 0.12, t изменяется от 4.2 до 6.2 с шагом0.17, а k=1,2,3,...,12.

С циклами for и while я сделал


//методсоператором for
staticvoid RunWithFor()
{
double a, t, x; int k;
for (a = 5; a <= 7; a += 0.12)
for (t = 4.2; t <= 6.2; t += 0.17)
for (k = 1; k <= 12; k += 1)
{
x = a * Math.Sin(k * t + 2) * Math.Cos(k * t);
Console.WriteLine("x= " + x);
}
}
//методсоператором while
staticvoid RunWithWhile()
{
double a, t, x; int k;
a = 5;
while (a <= 7)
{
t = 4.2;
while (t <= 6.2)
{
k = 1;
while (k <= 12)
{
x = a * Math.Sin(k * t + 2) * Math.Cos(k * t);
Console.WriteLine("x= " + x);
k += 1;
}
t += 0.17;
}
a += 0.12;
}
Console.ReadLine();
}



А вот с циклом ду вайл никак не пойму, как мне его записать, делаю так, но он мне выдает меньше значений, чем остальные циклы


//методсоператором do-while
staticvoid RunWithDo()
{
double a, t, x; int k;
{
a = 5;
k = 1;
t = 4.2;
do
{
x = a * Math.Sin(k * t + 2) * Math.Cos(k * t);
Console.WriteLine("x= " + x);

a += 0.12;
t += 0.17;
k += 1;
}
while (a <= 7);
while (k <= 12) ;
while (t <= 6.2) ;

}
}

ViRTaCe
24-03-2012, 01:11
Во-первых, у тебя не правильно написаны первые два цикла. На последней итерации на момент проверки получается попадающее в нужный нам диапазон, при увеличении переменной, число уже будет выходить за рамки диапазона, и соответственно выполняется лишняя итерация.




© OSzone.net 2001-2012