Проверка деления числа нацело на любое другое C++ для начинающих

Для понимания этой темы нужно хорошо знать оператор ветвления if
Программисты всё время решают задачи. Ко многим задачам есть решения проще, чем может казаться на первый взгляд. Бывают разные случаи: иногда простота кода прекрасно сочетается с эффективностью программы, а иногда простота кода губит эффективность программы. Нам, начинающим изучение C++, достаточно простых решений, которые помогут быстрее освоить синтаксис языка. Начинать можно с мАлого. Понимание элементарных основ поможет в дальнейшем. Фундамент всегда должен быть крепок.
  • Цель этой статьи научить вас проверять делимость числа на языке программирования C++.
  • Проверить число на делимость можно с помощью операции взятия остатка: %. Есть остаток — число нацело не делится, нет остатка, число делится нацело. Всё вот так просто.

В листинге #1 демонстрируется простота подобной проверки. OK обозначает, что нацело делится, а NO, что нацело не делится. Внутри круглых скобок if проверяется условие: в случае успеха проверяемое условие отдаёт единицу, а в случае неудачи отдаёт ноль.
Вот, собственно, и всё. Дальше пойдут некоторого рода понты, но они тоже могут оказаться полезными.
  • Задача: проверить чётность натуральных чисел от 1 до N
Как проверять чётность вы уже знаете из начала этой статьи. Цикл-for вы должны были узнать из какой-либо другой статьи. Цикл здесь используется для обхода всех чисел. Правило использования циклов просто: где обходы — там циклы.
Чего вы можете не знать, так это то, что результат проверки условия можно инвертировать, т. е. один превратить в ноль, а ноль в один. Делается это с помощью операции логического отрицания: !.

В общем, логическое отрицание подобно перевороту результата с ног на голову. Иногда это удобно использовать для сокращения кода, иногда с другой целью.
Переходим непосредственно к решению поставленно задачи.

В листинге #2 представлен немного неправильный код решения. В условии сказано от 1 до N. Этот листинг нужен только для того, чтоб помочь сориентироваться, как и что происходит вообще. У некоторых читателей навыки ещё очень не развиты.
Более верный вариант решения выглядит так:

Проверять чётность чисел можно разными способами, но о них пока ещё рано писать. Показанный способ достаточно прост, его легко использовать и понять. В моём случае нет деления на ноль, поэтому и проверки нет, но если в вашей задаче возможна ситуация деления на ноль, то не забывайте корректировать поведение программы при возникновении такого деления.
Немного усовершенствуем листинг #2. Будем сами задавать начальное значение, конечное значение и проверяемый делитель. До этого момента в роли делителя выступала двойка явно задаваемая в коде, это не очень интересно.
Вы должны понимать, что будет много использованных переменных. Каждая переменная существует для своей цели.
1. Начальное число. Назовём nach
2. Конечное число. Назовём n
3. Проверяемое число. Назовём value_up
4. Число, на которое делим. Назовём value_down
5. Счётчик цикла. Назовём i
Надеюсь, понятно, почему переменных вышло 5. Начало-конец; делимое-делитель; счётчик цикла. Всё готово для написания самой программы

  • Пусть даны случайные значения и надо выбрать из них только те, которые делятся на 7. Используем Одномерный массив и генератор случайных значений.
Пишем код

Как вы можете убедиться, операция взятия остатка % достаточно полезна, использовать её в сочетании с чем-либо легко. Проверить делимость чисел просто.
Важно помнить всё время, что язык программирования C++ регистрозависимый: большой и маленький символ всегда считаются разными символами. Будьте очень внимательны.

8 комментариев на «“Проверка деления числа нацело на любое другое C++ для начинающих”»

  1. Михаил Якушин:

    Автор сайта отвечает:
    Спасибо за указание на ошибку. Исправлено

  2. Anonymous:

    Привет у меня то что ты сейчас написал не работает компилятор выдает ошибку вот на этой строчке

    помоги пожалуста. Заранее спасибо.

    Автор сайта отвечает:

    Привет еще раз у меня то что ты сейчас написал не работает компилятор выдает ошибку вот на этой строчке

    помоги пожалуста. Заранее спасибо.

    Автор сайта отвечает:
    У меня было неверно написано. Исправил

    Привет извини но у меня все равно выдает ошибку вот на этой строчке

    проверь пожалуйста весь свой материал Проверка деления числа нацело на любое другое C++ для начинающих. Спасибо заранее.
     
    спасибо, работает

    • Аноним:

      в цикле for , насколько я знаю , объявление переменной,её сравнение(i<=100) и инкремент разделяются точкой с запятой [ ; ]

  3. Юрий:

    Все таки не понятно, для чего нужно 4+1 переменная. Для чего нужно присваивать а значение і если сразу можно работать с і

    Автор сайта отвечает:
    Вы про задачу, в которой мы сами задаем условие от начального числа до числа N вывести все числа, которые делятся на К
    Да, можно. Но я это писал давно и с абсолютно нулевыми знаниями С++.
    Да и потом если выделять и разделять отдельные значения, то тому кто еще дуб дубом, как я в момент написания, то разделение значений, на значения, каждое из которых обозначает что-то одно и делает только свою задачу, то по идее это должно способствовать лучшему запоминанию самих принципов.

  4. aqua:

    for (i=0;i<=99;i++) Выдаёт ошибку "indefined symbol "i" "

    Автор сайта отвечает:

    Спасибо,но всё равно выдаёт ошибку.

    Автор сайта отвечает:
    То, что вы написали про ошибку — у вас компилятор не знает переменной i. Следовательно где-то вы ее не определили.
    Так как в старых компиляторах (borland c++ 3.1) и современных на текущую дату этого сообщения поведение переменных внутри цикла различно, то я предложил тот вариант, который предложил.
    Дайте исходник полный ваш и скажите какой у вас компилятор (чтоб наверняка). Исходник можете дать сюда, только чтоб не изуродовало его, то нужно исходник писать в таком виде

    [php]
    Исходник
    [/php]

    Либо же на какой нибудь небольшой файлообменик типа rghost блокнот и мне ссылку.

    В общем, чтобы я смог помочь, мне нужно посмотреть что именно вы делаете. Вслепую трудно угадать.

    Нет необходимости скидывать экземпляр-так как я проверял.А что насчёт версии,то она 6.0 (Build 10.161)
    Но мне кажется что более вероятно,что вы не включили саму переменную "i".

    Автор сайта отвечает:
    В моем случае я ошибки не допустил. Но в моем случае, я использовал Borland C++ 3.1. Я проверил исходник в 26 строк и он срабатывает без проблем. Но мой случай — это мой случай.

    В вашем случае вы или должны были вставить

    где-нибудь между 9 и 10 строчкой (если по моему исходнику в 26 строк) и поубирать int внутри циклов, либо же как я и писал

    и в 11 и в 20 строчке того же исходника в 26 строк (т.е. внутри каждого цикла объявлять тип переменной i)
    =================

    Всё работает. я проверил.
     

  5. Александр:

    подскажите пожалуйста, как при считывании из командной строки натуральных чисел выбрать лишь те, в которых нет 0 ?
     
    Суть задачи такая- нужно считать из командной строки натуральные числа и сделать некоторые операции с теми из них, в которых нет 0.

    Автор сайта отвечает:
    За командную строку говорить не стану. Я с ней не работал, но смысл вашей задачи в разложении числа на числа. Это делается или циклом или рекурсией.
    Я покажу небольшой пример

    Пример с рекурсией есть на сайте.
    Так вот, числа введенные с командной строки хранятся в массиве (МОГУ ОШИБАТЬСЯ, не работал). Если не ошибся, то проходите по всему массиву введенных чисел и выполняете такую проверку для каждого числа. Если a%10 отдает ноль, то переходите к следующему числу. Если за все итерации цикла ноль не был встречен, то тогда добавляете в другой массив (или Вектор или стек). А потом уже оперируете с новым таким массивом.
    и не забывать, тут нужно доп.переменная (чтобы не затирать существующую)

  6. Аноним:

    Помогите плиз написать программу в паскале:
    Есть два
    натуральных числа n и m.Все целые числа, что принадлежат промежутку
    [n;m],розбить на восем групп за условием деления нацело на
    2,3,4,5,6,7,8,9.

    Надо делать через цикл.

    Автор сайта отвечает:
    я знаю как, но решать вам не стану (не хочу). Сайт – не форум. На форумах такие задачи решают.

  7. FeelTerr:

    Spasibo za trud. Hotelos’ by obratit’ vnimanie na stroki, kotorye vy ispol’zuete v stat’e pro cykly (for) i zdes’.
    moi compilator rugaetsa na
    #include </php
    i otsutstvie stroki
    using namespace std;

    kod proverialsia na Code::Blocks 13.12

    potom proveriu doma na VS 2013, izvinite esli ne po delu

    P.S.: prostite za translit, vynujden. Na rabote net russkoi rasskladki ili klaviatury.

    Автор сайта отвечает:
    У меня на сайте в значительно большей части используется очень древний компилятор, поэтому те строки не работают
    Тут в коментариях есть код который должен работаь в CodeBlock

    popravka:
    #include
    tegi «» ne srabotali O_o

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Поиск

 
     

Случайная книга в электронном формате

https://www.litres.ru/igor-simdyanov/obektno-orientirovannoe-programmirovanie-na-php-6989621/?lfrom=15589587
Яндекс.Метрика