Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

03.09.2011, 21:29. Просмотров 17431. Ответов 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 больше чем нужно. Помогите разобраться почему так и как исправить.
Спс за внимание!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2011, 21:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверка кратности чисел. (C++):

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

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

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

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

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

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

11
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
03.09.2011, 21:32 #2
Может, потому, что
C++
1
i % 11 == true
эквивалентно
C++
1
i % 11 == 1
?
А если число кратно 11, то его остаток от деления должен быть равен нулю.
1
Сыроежка
Заблокирован
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 )
1
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.09.2011, 21:34 #4
Да потому, что число, кратное 11, при num % 11 выдает 0

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

Не по теме:

Шустрые....

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

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

Добавлено через 35 секунд
Цитата Сообщение от soon Посмотреть сообщение
Поясните.
2 тоже больше нуля. Однако он не выводит 13, 24 и т.д.
Я уже все два раза пояснил!
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.09.2011, 21:53 #8
Сыроежка, цитаты отслеживайте. Я не Вам запостил #6
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,849
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

Не по теме:

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

0
grizlik78
Эксперт С++
1967 / 1460 / 120
Регистрация: 29.05.2011
Сообщений: 3,019
03.09.2011, 22:04 #10
да, но
C++
1
bool( i % 11 )
не то же самое, что
C++
1
(( i % 11 ) == true)
2
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.09.2011, 22:12 #11
2easybudda
В данном случае bool приводится к int, а не наоборот, разве нет?
В остальном полностью согласен
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,849
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;
}
0
03.09.2011, 22:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2011, 22:15
Привет! Вот еще темы с ответами:

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

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

Проверка чисел на С - C++
Нужна программа: Условие: Когда ввожу 123 или -123 на екран выводило что ето число, а когда 123а 4325 виводило что ето текст . ...

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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