Учитель задал задание вывести отсчет билетов номерами с 200000 до 210000 и 220000 до 235000. Я написал двумя способами for и while. Метод for:
Цикл for:
public class main
{
public static void main(String[] args)
{
for(int i=200000;i<=210000;i++)
{
System.out.println(i);
}
for (int j=210000;j<=230000;j++)
{
System.out.println(j);
}
}
}
Цикл while:
public class wihle
{
public static void main(String[] args)
{
int i=200000;
int j=220000;
while (i<=210000 )
{
System.out.println(i);
i++;
}
while (j <= 235000)
{
System.out.println(j);
j++;
}
}
}
Нужно что код был написан одним циклом и наименьшим кол-во интеграций
Значит ли это, что я должен совместить оба кода при одном использовании for?
Если кто-то напишет, как это сделать, буду очень благодарен.
Ответы (4 шт):
Автор решения: MBo
→ Ссылка
Просто идея - когда в цикле вы обнаруживаете, что дошли до последнего значения первого поддиапазона ,то выполняйте не i++, а присваивайте счётчику начальное значение второго поддиапазона
Автор решения: SwaD
→ Ссылка
Если порядок вывода не оговорен, то можно так
for (int i = 200000; i <= 235000; i++) {
if (i <=210000) {
System.out.println(i);
System.out.println(i + 20000);
}
if (i >= 220000) {
System.out.println(i);
}
if (i === 210000) {
i = 230000;
}
}
Если вывод должен быть строго по порядку, то вот так
for (int i = 200000; i <= 235000; i++) {
console.log(i)
if (i === 210000) {
i = 219999;
}
}
Автор решения: Upiter 1401
→ Ссылка
public class Main {
public static void main(String[] args) {
int num1 =200000, num2 = 210000;
while(num1<=num2) {
System.out.println(num1);
num1++;
if(num1>num2 && num1 != 235001) {
num1 = 220000;
num2 = 235000;
}}
}}
Автор решения: Vadik
→ Ссылка
Всего нужно распечатать 25 000 чисел, это можно сделать за 5 000 итераций, распечатывая в каждой итерации по 5 чисел:
int a = 200_000;
int b = 220_000;
for (int i = 0; i < 5_000; i++) {
System.out.println(a + 2 * i);
System.out.println(a + 2 * i + 1);
System.out.println(b + 3 * i);
System.out.println(b + 3 * i + 1);
System.out.println(b + 3 * i + 2);
}