![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Я бы всетаки ориентировался, что ложь это 0, а истина - все остальное. Потому, что если алгоритм будет заточен именно на то, что истина 1, то возможна его неправильная работа:
В любом случае лично я использую явное сравнение - 100% гарантия успеха if (i==0) { ...} else {...} |
||||
|
|||||
WatchCat |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 14.10.2006 Репутация: нет Всего: нет |
Дело в том, что if может проверять не только тип bool, так ещё с C пошло. Поэтому надо всегда учитывать что true это всё что не 0.
Результат будет
![]() |
||||
|
|||||
Little_Lamer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 5.12.2006 Репутация: нет Всего: нет |
MegaUser, хмм.. судя по твоей задаче, при подсчете mnoj тебе вместо
if (x1==a[0]){x1=1;} нужно поставить if (x==a[0]){x1=1;} Это сообщение отредактировал(а) Little_Lamer - 21.12.2006, 17:41 |
|||
|
||||
MegaUser |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.12.2006 Репутация: нет Всего: нет |
да и те и те переменные вставлял, результат один и тотже, на этот вариант расчета я в итоге забил и сделал чуть подругому, просто очнь интересно было почему неработает такой код...... плохо что непонятно изза чего он непашет можно лопухнутся следующий раз с чем нибудь.. to Anikmar: я вот так у себя правду ложь реализовал : if (x==a[0]||y==a[1]||z==a[2]){rez=5*( (x==a[0]) + (y==a[1]) + (z==a[2]) ); rezult();} можеш на этом примере подсказать как подстраховаться, а то я тока начал изучать с++ и чесно говоря невъехал как это: if (i==0) { ...} else {...} и еще у меня вопрос некасаемо if, в начале я прописываю #include "iostream" что это я примерно понял, но вот иногда возникают мысли насчет того , как определить что мне нужно в программе добавить #include "iomanip" или что то еще, короче как узнать какой #include и когда мне понадобится?, или отошлите где это обсуждалось, чето я порыскал по форуму и ненашел(поиск неработает кстати на форуме)... Это сообщение отредактировал(а) MegaUser - 21.12.2006, 18:52 |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Если есть 100% гарантия, что true == 1 то будет работать. Лично у меня ее нет - так как лично сталкивался с компилятором, который true преобразовывал в -1 (не помню какой - давно было)
Лично я бы сделал так (может подлиньше, но 100% работать будет)
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
else (x2,y2,z2=0);
замени на
Оператор запятая в С++ имеет совсем другой смысл. Это сообщение отредактировал(а) JackYF - 21.12.2006, 19:31 |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Тут уже говорилось, в стандарте прописано, что при преобразовании rvalue типа bool к rvalue типа int, false -> 0 и true -> 1 Если же идет обратное преобразование, то: 0, нулевой указатель, нулевой указатель на метод -> false, всё остальное -> true |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Видимо с -1 у меня компилятор Си был. Не помню, давно было, но после этого такие конструкции я не использую (да и большого смысла нет).
Конечно На С++ можно в одну строку записать абалденную конструкцию. Но когда к такому приколу возвращаешься через пол-года, то весьма много о себе же вслух произносишь нецензурного, пытаясь врубиться в то, что сам написал. |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 92 |
Я такое знаю только в Бейсике. Угу. Я и не говорю, что так стоит делать. Просто раз попросили одной строкой -- я и записал ![]() -------------------- Да. Именно так. |
|||
|
||||
UniBomb |
|
|||
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 2 Всего: 97 |
MegaUser, потому что неправильно написано - else не проверяет на истинность, потому оно и переводится как иначе. Ты логически построй структуру если тырыпыры, иначе трам-пам-пам. А тот вариант, что у тебя написан должен выглядеть так:
Здесь проверяется переменная x1, если она равна числу а, то остальное даже не проверяется... Тоже самое относится к остальным переменным... Ну и в конце, если ни одна переменная не подходит, то находим mnoj... |
|||
|
||||
MegaUser |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.12.2006 Репутация: нет Всего: нет |
спасибо всем, много чего нового(чего в книжках нету) узнал, вот что у меня в итоге получилось:
посмотрите как гуру может надо что то не так делать или как то по другому, мне важно мнение специалистов, так как для меня, то что я написал - все как надо, тока несмеятся если есть глупые какие нить вещи в ней, третья по счету моя програмулина
|
|||
|
||||
Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Ой-ой. Так нельзя делать:
Если ты будешь вызывать main по кругу - постоянно сжирать стек будешь. Про то, что это вечный кайф получится - я молчу (как выйти из программы интересно? - Только по Ctrl+c?) Общая структура должна быть такая:
|
||||
|
|||||
MegaUser |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.12.2006 Репутация: нет Всего: нет |
спасиб за подсказку.... ща попробую что нить сделать..
выход только по Ctrl+c, ибо я недодумаюсь никак как сделать выход из программы скажем по нжатию кнопки Q... вот так получилось теперь, main нетрогается, правильно ли?? а для чего в main был совет для использования do/while? и еще про сжирание стека, это только касаемо только main , или другие тоже нежелательно покругу пускать?
от терь с выходом из программы заморочился.... как это реализовать то? ![]() все привинтил "выход" неполучалось изза того что писал q вместо 'q' тока он неудобно реализован, но это фигня, главное получилоь, потом можно подумать куда его лучше впихнуть ![]() Это сообщение отредактировал(а) MegaUser - 22.12.2006, 14:27 |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Грубо говоря "Те же яйца вид сбоку"
Последовательность вызовов: main -> man2 -> result ->man2 ... Нет возвратов. Я набросал схему вызовов - там без цикла никак не обойтись (goto исключаю - не тот случай) |
|||
|
||||
MegaUser |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.12.2006 Репутация: нет Всего: нет |
чето я недопонимаю логики для чего нужно do/while , она ведь будет все равно обращатся к функциям main -> man2 -> result ->man2 только внутри будет условие "do ..... while",
объясни этот момент, если можно, я так чувствую что то важное упускаю..... еще, я подумал, может скакать между функциями так?: return rezult(),0; return man2(),0; |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |