Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 104, средняя оценка - 4.90
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
#1

Проверка кратности чисел. - C++

03.09.2011, 21:29. Просмотров 15158. Ответов 11
Метки нет (Все метки)

Программа должна выводить все числа кратные 11-ти в заданном диапазоне:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void main()
{
int i=10,lim;
cout<<"Enter upper limit:\n";
cin>>lim;
while (i<=lim)
{
if ((i%11)==true)
cout<<"\n"<<i<<"\n";
i++;
}
getchar(),getchar();
}
результат: 12 23 34 45, т.е. каждое число на 1 больше чем нужно. Помогите разобраться почему так и как исправить.
Спс за внимание!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2011, 21:29     Проверка кратности чисел.
Посмотрите здесь:

Проверка числа кратности двум. - C++
День добрый, проверьте пожалуйста. Задание: Дана последовательность целых чисел, за которой следует 0. Найти количество элементов этой...

Для каждого из некоторого количества натуральных чисел найти простой делитель наибольшой кратности - C++
для каждого из некоторого количества натуральных чисел найти простой делитель наибольшой кратности иными словами, вводим число 12, он...

FOR и определение кратности числа - C++
Добрый день. Часа 3 мучаюсь, вот не выдержал, прошу вашей помощи. Задача: Найти все трехзначные числа, кратные семи и у которых...

Ограничение на ввод чисел и проверка чисел - C++
решить квадратное уравнение. Сделала задачу, а преподаватель сказал, что это слишком легко и усложнила задачу, т.е. теперь нужна проверка...

Выведите все простые множители числа в порядке возрастания с учетом кратности - C++
Дано натуральное число n&gt;1. Выведите все простые множители этого числа в порядке возрастания с учетом кратности. Ввод 18 Вывод 2 3...

Выведите все простые множители числа в порядке возрастания с учетом кратности. - C++
Дано натуральное число n&gt;1. Выведите все простые множители этого числа в порядке возрастания с учетом кратности.

Выведите все простые множители этого числа в порядке неубывания с учетом кратности (рекурсия) - C++
Дано натуральное число n&gt;1. Выведите все простые множители этого числа в порядке неубывания с учетом кратности.Алгоритм должен иметь...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
03.09.2011, 21:32     Проверка кратности чисел. #2
Может, потому, что
C++
1
i % 11 == true
эквивалентно
C++
1
i % 11 == 1
?
А если число кратно 11, то его остаток от деления должен быть равен нулю.
Сыроежка
Заблокирован
03.09.2011, 21:32     Проверка кратности чисел. #3
Цитата Сообщение от newb_programmer Посмотреть сообщение
Программа должна выводить все числа кратные 11-ти в заданном диапазоне:
void main()
{
int i=10,lim;
cout<<"Enter upper limit:\n";
cin>>lim;
while (i<=lim)
{
if ((i%11)==true)
cout<<"\n"<<i<<"\n";
i++;
}
getchar(),getchar();
}

результат: 12 23 34 45, т.е. каждое число на 1 больше чем нужно. Помогите разобраться почему так и как исправить.
Спс за внимание!

Это выражение i%11)==true верно в том случае, когда остаток от деления равен 1. То есть в этом условии логическая константа true преобразуется к целому типу и принимает значение, равное 1. Поэтому условие будет истинным, когда левый операнд также дает значение 1, то есть когда остаток от деленеия будет равен 1.

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

if ( i%11 == 0 )
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.09.2011, 21:34     Проверка кратности чисел. #4
Да потому, что число, кратное 11, при num % 11 выдает 0

Добавлено через 36 секунд

Не по теме:

Шустрые....

easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
03.09.2011, 21:39     Проверка кратности чисел. #5
Цитата Сообщение от Сыроежка Посмотреть сообщение
Это выражение i%11)==true верно в том случае, когда остаток от деления равен 1
вернее когда остаток от целочисленного деления на 11 больше нуля.
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.09.2011, 21:48     Проверка кратности чисел. #6
Цитата Сообщение от easybudda Посмотреть сообщение
вернее когда остаток от целочисленного деления на 11 больше нуля.
Поясните.
2 тоже больше нуля. Однако он не выводит 13, 24 и т.д.
Сыроежка
Заблокирован
03.09.2011, 21:52     Проверка кратности чисел. #7
Цитата Сообщение от easybudda Посмотреть сообщение
вернее когда остаток от целочисленного деления на 11 больше нуля.
Вот только не нужно поправлять меня! Это выражение будет истинным именно только тогда, когда остаток от деления равен 1.

Я вам повторю свои объяснения, которые я уже представил. Значение типа bool преобразуется к типу int , то есть булева константа true преобразуется в целочисленное значение 1. Это преобразование происходит потому, что левый операнд имеет тип int. Поэтому равенстов может быть только тогда, когда левый операнд также имеет значение равное 1. То есть 1 может быть равна только самой себе, а не любому значению больше 0.

Добавлено через 35 секунд
Цитата Сообщение от soon Посмотреть сообщение
Поясните.
2 тоже больше нуля. Однако он не выводит 13, 24 и т.д.
Я уже все два раза пояснил!
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.09.2011, 21:53     Проверка кратности чисел. #8
Сыроежка, цитаты отслеживайте. Я не Вам запостил #6
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
03.09.2011, 22:00     Проверка кратности чисел. #9
Цитата Сообщение от soon Посмотреть сообщение
Поясните.
C++
1
2
3
4
5
6
7
#include <iostream>
 
int main(){
    for ( int i = 11; i < 23; ++i )
        std::cout << i << '\t' << ( i % 11 ) << '\t' << std::boolalpha << bool( i % 11 ) << std::endl;
    return 0;
}
Код
$ ./1122
11	0	false
12	1	true
13	2	true
14	3	true
15	4	true
16	5	true
17	6	true
18	7	true
19	8	true
20	9	true
21	10	true
22	0	false

Не по теме:

Сыроежка, настоятельно рекомендую обратиться к психиатору по поводу мании величия.

grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
03.09.2011, 22:04     Проверка кратности чисел. #10
да, но
C++
1
bool( i % 11 )
не то же самое, что
C++
1
(( i % 11 ) == true)
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.09.2011, 22:12     Проверка кратности чисел. #11
2easybudda
В данном случае bool приводится к int, а не наоборот, разве нет?
В остальном полностью согласен
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2011, 22:15     Проверка кратности чисел.
Еще ссылки по теме:

Дано натуральное число n>1. Выведите все простые множители этого числа в порядке возрастания с учетом кратности. - C++
Дано натуральное число n&gt;1. Выведите все простые множители этого числа в порядке возрастания с учетом кратности. Ввод...

Проверка чисел - C++
Здравствуйте форумчане. Вообщем это код для проверки введенного значения, но проверяет только целые числа, а мне надо допустим -16.875 ...

Проверка чисел на простоту - C++
сам код #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;vector&quot; using namespace std; int f(int n) { vector&lt;char&gt;...

Проверка ввода чисел - C++
Есть цикл: struct WvsB{ int PLAYER; int PLAYER1; }; ---

Проверка делимости чисел - C++
Даны два целых числа a и b. Если a делится на b или b делится на a, то вывести 1, иначе – любое другое число. Условные операторы и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
03.09.2011, 22:15     Проверка кратности чисел. #12
Цитата Сообщение от grizlik78 Посмотреть сообщение
не то же самое
ё... и в правду не то же самое... Вот в С вообще bool нету, там всё проще...
Цитата Сообщение от newb_programmer Посмотреть сообщение
Программа должна выводить все числа кратные 11-ти в заданном диапазоне:
ну тогда так как-нибудь:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
int main(){
    int top;
    std::cout << "Top: ";
    std::cin >> top;
    for ( int i = 10; i < top; ++i )
        if ( ! ( i % 11 ) )
            std::cout << i << std::endl;
    return 0;
}
Yandex
Объявления
03.09.2011, 22:15     Проверка кратности чисел.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru