цикл получается слишком громоздким, если применяется более двух подобных операторов.
Ниже приведен практический пример применения нескольких переменных управления циклом в операторе for. В этом примере программы используются две переменные управления одним циклом for для выявления наибольшего и наименьшего множителя целого числа (в данном случае — 100). Обратите особое внимание на условие окончания цикла. Оно опирается на обе переменные управления циклом.
// Использовать запятые в операторе цикла for для // выявления наименьшего и наибольшего множителя числа.
using System; >
class Comma {
static void Main() { int i, j;
int smallest, largest; int num;
num = 100;
smallest = largest = 1;
for(i=2, j=num/2; (i <= num/2) & (j >= 2); i++, j—) {
if((smallest == 1) & ((num % i) == 0)) smallest = i;
if ( (largest == 1) & ((num % j) == 0)) largest = j;
}
Console.WriteLine('Наибольший множитель: ' + largest);
Console.WriteLine('Наименьший множитель: ' + smallest);
}
}
Ниже приведен результат выполнения этой программы.
Наибольший множитель: 50 Наименьший множитель: 2
Благодаря применению двух переменных управления циклом удается выявить наименьший и наибольший множители числа в одном цикле for. В частности, управляющая переменная i служит для выявления наименьшего множителя. Первоначально ее значение устанавливается равным 2 и затем инкрементируется до тех пор, пока не превысит половину значения переменной num. А управляющая переменная j служит для выявления наибольшего множителя. Ее значение первоначально устанавливается равным половине значения переменной num и затем декрементируется до тех пор, пока не станет меньше 2. Цикл продолжает выполняться до тех пор, пока обе переменные, i и j, не достигнут своих конечных значений. По завершении цикла оба множителя оказываются выявленными.
Условное выражение
Условным выражением, управляющим циклом for, может быть любое действительное выражение, дающее результат типа bool. В него не обязательно должна входить переменная управления циклом. В следующем примере программы управление циклом for осуществляется с помощью значения переменной done.
// Условием выполнения цикла может служить любое выражение типа bool.
using System;
class forDemo {
static void Main() { int i, j;
bool done = false;
for(i=0, j=100; !done; i++, j—) {
if(i*i >= j) done = true;
Console.WriteLine('i, j: ' + i + ' ' + j);
}
}
}
Ниже приведен результат выполнения этой программы.
i, j
0 100
i/ j
1 99
i, j
2 98
i, j
3 97
if j
4 96
1a j
5 95
1a j
6 94
1a j
7 93
j
8 92
1a j
9 91
ir j
10 90
В данном примере цикл for повторяется до тех пор, пока значение переменной done типа не окажется истинным (true). Истинное значение переменной done устанавливается в цикле, когда квадрат значения