Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2022, 19:04   #1
bITA666
Форумчанин
 
Аватар для bITA666
 
Регистрация: 22.03.2019
Сообщений: 115
По умолчанию Цикл 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--) { 
      Console.WriteLine("наибольшее " + j);
      Console.WriteLine("наименьшее " + i);
      if((smallest == 1) & ((num % i) == 0)) 
        smallest = i;
      if((largest == 1) & ((num % j) == 0)) 
        largest = j;
    } 
    Console.WriteLine("Наибольший множитель: " + largest);
    Console.WriteLine("Наименьший множитель: " + smallest);
  } 
}
Цикл:
наибольшее 50
наименьшее 2
наибольшее 49
наименьшее 3
наибольшее 48
наименьшее 4
наибольшее 47
наименьшее 5
наибольшее 46
наименьшее 6
наибольшее 45
наименьшее 7
наибольшее 44
наименьшее 8
наибольшее 43
наименьшее 9
наибольшее 42
наименьшее 10
наибольшее 41
наименьшее 11
наибольшее 40
наименьшее 12
наибольшее 39
наименьшее 13
наибольшее 38
наименьшее 14
наибольшее 37
наименьшее 15
наибольшее 36
наименьшее 16
наибольшее 35
наименьшее 17
наибольшее 34
наименьшее 18
наибольшее 33
наименьшее 19
наибольшее 32
наименьшее 20
наибольшее 31
наименьшее 21
наибольшее 30
наименьшее 22
наибольшее 29
наименьшее 23
наибольшее 28
наименьшее 24
наибольшее 27
наименьшее 25
наибольшее 26
наименьшее 26
наибольшее 25
наименьшее 27
наибольшее 24
наименьшее 28
наибольшее 23
наименьшее 29
наибольшее 22
наименьшее 30
наибольшее 21
наименьшее 31
наибольшее 20
наименьшее 32
наибольшее 19
наименьшее 33
наибольшее 18
наименьшее 34
наибольшее 17
наименьшее 35
наибольшее 16
наименьшее 36
наибольшее 15
наименьшее 37
наибольшее 14
наименьшее 38
наибольшее 13
наименьшее 39
наибольшее 12
наименьшее 40
наибольшее 11
наименьшее 41
наибольшее 10
наименьшее 42
наибольшее 9
наименьшее 43
наибольшее 8
наименьшее 44
наибольшее 7
наименьшее 45
наибольшее 6
наименьшее 46
наибольшее 5
наименьшее 47
наибольшее 4
наименьшее 48
наибольшее 3
наименьшее 49
наибольшее 2
наименьшее 50

Результат:
Наибольший множитель: 50
Наименьший множитель: 2

Вопрос: Подскажите пожалуйста если результат переменной i и j после итерации изначально равен (i)2 и (j)50 зачем продолжать цикл если наибольший и наименьший множетель числа num(100) найден?
bITA666 вне форума Ответить с цитированием
Старый 16.08.2022, 19:20   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Для числа 100 и правда нет смысла продолжать дальше первой итерации, но если взять 99 и добавить отладочный вывод:
Код:
using System;

class Comma { 
  static void Main(){
    int i, j;
    int smallest, largest;
    int num;
    num = 99;
    smallest = largest = 1;
    for(i=2, j=num/2; (i <= num/2) & (j >= 2); i++, j--) { 
      Console.WriteLine("наибольшее " + j);
      Console.WriteLine("наименьшее " + i);
      if((smallest == 1) & ((num % i) == 0)) {
        smallest = i;
        Console.WriteLine("наименьшее найдено " + i);
      }
      if((largest == 1) & ((num % j) == 0)) {
        largest = j;
        Console.WriteLine("наибольшее найдено " + j);
      }
    } 
    Console.WriteLine("Наибольший множитель: " + largest);
    Console.WriteLine("Наименьший множитель: " + smallest);
  } 
}
То наименьший и наибольший множители будут найдены далеко не на первой итерации цикла. Хотя не вижу смысла в счетчике j:
Код:
using System;

class Comma { 
  static void Main(){
    int i;
    int smallest, largest;
    int num;
    num = 99;
    smallest = largest = 1;
    for (i = 2; i <= num / 2; i++) {
      Console.WriteLine("наименьшее " + i);
      if (num % i == 0) {
        smallest = i;
        largest = num / i;
        Console.WriteLine("наименьшее найдено " + smallest);
        Console.WriteLine("наибольшее найдено " + largest);
        break;
      }
    } 
    Console.WriteLine("Наибольший множитель: " + largest);
    Console.WriteLine("Наименьший множитель: " + smallest);
  } 
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Если поставить цикл For в цикл Repeat то как будут выполняться циклы? Владимир10101 Помощь студентам 3 14.11.2016 20:14
написать процедуры для “Цикл For ... Next ” и «Цикл Do ... Loop» по ниже приведенному условию Кристина_Патачиц Microsoft Office Excel 3 17.04.2013 17:01
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34