Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.74/351: Рейтинг темы: голосов - 351, средняя оценка - 4.74
238 / 238 / 113
Регистрация: 03.09.2011
Сообщений: 558
1

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

03.09.2011, 21:29. Показов 65530. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.09.2011, 21:29
Ответы с готовыми решениями:

Проверка кратности числа четырем
1.Данные целое число N. Если оно кратно 4 и не заканчивается 0, то напечатать &quot;Да&quot;, в противном...

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

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

Проверка кратности 3 и 7 чисел из выборки
Составьте программу по проверке кратности 3 и 7 чисел из следующей выборки 21, 42, 63, ... (каждое...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
11
Higher
1946 / 1212 / 120
Регистрация: 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
2552 / 1317 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.09.2011, 21:34 4
Да потому, что число, кратное 11, при num % 11 выдает 0

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

Не по теме:

Шустрые....

1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10910 / 6836 / 1625
Регистрация: 25.07.2009
Сообщений: 12,540
03.09.2011, 21:39 5
Цитата Сообщение от Сыроежка Посмотреть сообщение
Это выражение i%11)==true верно в том случае, когда остаток от деления равен 1
вернее когда остаток от целочисленного деления на 11 больше нуля.
1
2552 / 1317 / 178
Регистрация: 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
2552 / 1317 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.09.2011, 21:53 8
Сыроежка, цитаты отслеживайте. Я не Вам запостил #6
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10910 / 6836 / 1625
Регистрация: 25.07.2009
Сообщений: 12,540
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
Эксперт С++
2315 / 1618 / 258
Регистрация: 29.05.2011
Сообщений: 3,317
03.09.2011, 22:04 10
да, но
C++
1
bool( i % 11 )
не то же самое, что
C++
1
(( i % 11 ) == true)
2
2552 / 1317 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.09.2011, 22:12 11
2easybudda
В данном случае bool приводится к int, а не наоборот, разве нет?
В остальном полностью согласен
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10910 / 6836 / 1625
Регистрация: 25.07.2009
Сообщений: 12,540
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.09.2011, 22:15

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Проверка кратности чисел числам 3, 5, и 15 с помощью двух проверок
Ребята, подскажите как сделать программу, на проверку кратности чисел на 3, на 5, и на 15 с помощью...

Проверка кратности
Ребят, такая задача. У меня есть массив из 20 элементов. нужно найти сумма элементов кратных 5. Во...

Проверка кратности числа
Помогите пожалуйста проверить кратно ли число 400; Или кратно 4 и не кратно 100. Заранее...

Проверка кратности, без повторения
Определить все числа, кратные 2 в диапазоне значений от 1 до 10. Конструкцию с циклами не...


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

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

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