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

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

Войти
Регистрация
Восстановить пароль
 
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
#1

Объясните логику - C++

29.06.2012, 18:54. Просмотров 339. Ответов 8
Метки нет (Все метки)

Задание следующее "вывести все числа от а до в которые делятся на 3, a=3, b =10 c помощью cin ввести, чтобы получилось 3_6_9."

Я решил эту програмку следующим образом.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream.h>
int main ()
{ 
 int a,i;
 cin >>i;
 cin >> a;
  while (i<a)
  { 
                      
        if (i%3) cout << " "; else cout <<i;
    i=i++;
 
      
  }
  
 
return 0;
}

Ответ вышел правильный 3,6,9. Но решил я её методом проб и ошибок. Что вывести числа делимые на 3, Я сначала написал if (i%3) cout <<i, но почему то программа выдавала 4,5,7,8. Когда методом обратного добавил else cout <<i; он выдал правильно 3,6,9.
Но я не могу понять, я вроде задаю программе выводи если i%3, он выводит не то, но когда задаю если i%3 оставь пустым, а если иное, то выводи, то есть так if (i%3) cout << " "; else cout <<i; тогда он выводит все которые делятся на 3. Но это же против логики? Как понять?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2012, 18:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объясните логику (C++):

Инкремент и оператор if (объясните логику программы) - C++
Почему выдаёт (1) при выполнении нижеследующей программы? #include&lt;iostream&gt; using namespace std; int main() { int x = 0; ...

Задача на логику - C++
На лесном озерце начали цвести лилии. В первый день расцвела одна лилия, а потом каждый день количество цветущих лилий удваивалось. На n-ый...

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

Подскажите логику нескольких строк кода - C++
Помогите пожалуйста. Меня интересуют только места где используется указатель. В этой и других функциях: void PrintList(const Student*...

Подскажите логику минимизации карт Карно - C++
нужна логика карт Карно например для 4-х переменных, просто логика минимизации, не желательно программа, а то я запутался совсем!

Не пойму логику нахождения минимального числа - C++
#include &lt;iostream&gt; using namespace std; void main() { int myarr; int hold=0; for (int i=0; i&lt;5; i++) { cin &gt;&gt;...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.06.2012, 19:04 #2
Цитата Сообщение от Parilo Посмотреть сообщение
я не могу понять
3%3 = 0
4%3 = 1
5%3 = 2

Так понятнее?
0
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
29.06.2012, 19:08  [ТС] #3
Цитата Сообщение от Deviaphan Посмотреть сообщение
3%3 = 0
4%3 = 1
5%3 = 2

Так понятнее?
Нет, не понятно. Прочитайте мой вопрос внимательно. Причём тут 3%3=0, 4%3=1 и т.д. Я новичок, объясните подробнее.
0
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.06.2012, 19:11 #4
Цитата Сообщение от Parilo Посмотреть сообщение
if (i%3) cout <<i
Цитата Сообщение от Parilo Посмотреть сообщение
я вроде задаю программе выводи если i%3
% - остаток от деления. Когда число делится без остатка, то получается ноль. А теперь ещё раз посмотри три примера выше и да снизойдёт на тебя озарение!
0
ЛетающийЕнот
88 / 67 / 12
Регистрация: 28.06.2012
Сообщений: 161
29.06.2012, 19:15 #5
Цитата Сообщение от Parilo Посмотреть сообщение
if (i%3) cout <<i
% возвращает остаток от деления числа на число.
Если a делится на b, то a%b == 0

0 эквивалентно false, остальные остатки (ненулевые) - true.
Поэтому ты и печатаешь НЕ делящиеся на 3 числа.

Добавлено через 2 минуты
i%3 для делящихся на 3 чисел экв. false. Используй отрицание.
Корректно будет работать if (!i%3) cout << i;
0
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
29.06.2012, 19:16  [ТС] #6
Цитата Сообщение от ЛетающийЕнот Посмотреть сообщение
% возвращает остаток от деления числа на число.
Если a делится на b, то a%b == 0

0 эквивалентно false, остальные остатки (ненулевые) - true.
Поэтому ты и печатаешь НЕ делящиеся на 3 числа.
Спасибо Летающий Енот. Все бы объясняли как ты просто, мир был бы добрее)). Тебя я понял в отличии от предыдущего мастера C++, который думает видимо что я программист, я учусь по книге, так что много не понимаю пока.
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6469 / 3117 / 306
Регистрация: 04.12.2011
Сообщений: 8,593
Записей в блоге: 4
29.06.2012, 19:17 #7
Не успел и удалил.
0
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
29.06.2012, 19:20  [ТС] #8
Цитата Сообщение от IGPIGP Посмотреть сообщение
Не успел и удалил.
Не дорогой, у тебя всё неправильно. Тебе надо самому учиться))
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6469 / 3117 / 306
Регистрация: 04.12.2011
Сообщений: 8,593
Записей в блоге: 4
29.06.2012, 19:42 #9
Цитата Сообщение от Parilo Посмотреть сообщение
else cout <<i; он выдал правильно 3,6,9.
Ваш код должен был вывести 0_3_6_9 так как i не присвоено и инициализируется нулём.
Deviaphan ответил Вам понятно. Я ответил непонятно. Ответа ЛетающийЕнот, ещё не было.

ps пробелов в выводе тоже побольше чем сказано.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2012, 19:42
Привет! Вот еще темы с ответами:

Разобрать логику работы приведенного кода - C++
Здравствуйте, уважаемые! #include &lt;iostream&gt; using namespace std; long brackets_balance (char * str) { long count; for...

Не понимаю логику обработки кода, разбитого на файлы - C++
Ситуация примерно такая. Есть файл file1.h, в котором объявлена функция: template&lt;class T&gt; T from_string(const std::string&amp; s); ...

Как лучше писать логику и интерфейс программы - C++
Всем привет, суть такая я начал писать большой графический проект с использованием языка c++ и библиотеки QT. У кого большой опыт в этой...

Логику какого оператора языка С++ реализуют в полиморфном программировании - C++
Помогите по вопросам лабораторной пожалуйста Логику какого оператора языка С++ реализуют в полиморфном программировании виртуальные...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.06.2012, 19:42
Ответ Создать тему
Опции темы

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