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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2021, 19:35   #1
bITA666
Форумчанин
 
Аватар для bITA666
 
Регистрация: 22.03.2019
Сообщений: 115
По умолчанию Оператор break

Код:
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int factor = 1;
            int num = -1000;

            for(int i = 2; i <= num/i; i++){
                
                if (( num % i) == 0)
                {
                    factor = i;
                    break;
                }

            }
            Console.WriteLine("наименьший множитель " + factor);
        }
        
    }
        
}
Результат выполнения этой программы выглядит следующим образом.
Наименьший множитель равен 2

Всем привет, в книге герберт шилдт 4.0 Шился наименьший результат множителя равен 2, когда у меня через программу visual studio наименьший множитель равен 1.

Кто лукавит? и вообще в чем ошибка.

Последний раз редактировалось bITA666; 09.03.2021 в 19:40.
bITA666 вне форума Ответить с цитированием
Старый 09.03.2021, 20:57   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,619
По умолчанию

Цитата:
Сообщение от bITA666 Посмотреть сообщение
Код:
            int num = -1000 ;
Это точно так - или это описка (в смысле минуса) ?
Всё правильно. С i=2 входим в цикл, проверяем условие выполнения цикла. num/i = -500, поэтому значение i <= num/i ложно, цикл не выполняется ни разу, присваивание factor = i не происходит, и на печать выходим с исходным значением 1.
Чтобы была желаемая 2, num/i нужно брать по абс. значению.

Последний раз редактировалось digitalis; 09.03.2021 в 21:01.
digitalis вне форума Ответить с цитированием
Старый 09.03.2021, 21:55   #3
bITA666
Форумчанин
 
Аватар для bITA666
 
Регистрация: 22.03.2019
Сообщений: 115
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Это точно так - или это описка (в смысле минуса) ?
Всё правильно. С i=2 входим в цикл, проверяем условие выполнения цикла. num/i = -500, поэтому значение i <= num/i ложно, цикл не выполняется ни разу, присваивание factor = i не происходит, и на печать выходим с исходным значением 1.
Чтобы была желаемая 2, num/i нужно брать по абс. значению.
Вот как код выглядит в книге.
Изображения
Тип файла: jpg Безымянный.jpg (62.0 Кб, 0 просмотров)
bITA666 вне форума Ответить с цитированием
Старый 09.03.2021, 21:59   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,341
По умолчанию

А в оригинале книги на английском вот так. При переводе листинги часто страдают.
Изображения
Тип файла: png findsmallestfactor.png (49.6 Кб, 20 просмотров)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 10.03.2021, 10:48   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,619
По умолчанию

Я так и думал. Ох уж эти переводчики и полиграфисты... И что мешало воспроизводить тексты исходников факсимильным изображением?
Цитата:
Замечена опечатка: подпись под рисунком "Грибы съедобные" следует читать "Грибы ядовитые"

Последний раз редактировалось digitalis; 10.03.2021 в 10:53.
digitalis вне форума Ответить с цитированием
Старый 11.03.2021, 07:16   #6
Алексей1153
фрилансер
Участник клуба
 
Регистрация: 11.10.2019
Сообщений: 1,010
По умолчанию

digitalis, это что!

Цитата:
Библия грешников (Sinners' Bible), — Библия, изданная в 1631 году в Англии с грубой смысловой ошибкой.<...> В тексте нового издания была допущена грубая ошибка — в одной из десяти заповедей была пропущена частица «не» и сочетание «не прелюбодействуй» было отпечатано как «прелюбодействуй» <...>
отсюда
Алексей1153 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
недопустимый break nastia_prog Помощь студентам 2 16.12.2019 21:33
Си. Cтроки массива. Оператор break Яна_Max Помощь студентам 2 13.11.2011 00:23
break на си билдер alatir Общие вопросы C/C++ 3 28.10.2010 21:18
оператор break Pti44ka Общие вопросы .NET 2 05.05.2010 23:50
Проблема с break TheWanderer Общие вопросы C/C++ 2 23.11.2008 15:36