Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Новые сложные задачи на C++, Автор: Герб Саттер, Обсуждение книги 
:(
    Опции темы
zkv
Дата 12.1.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



PoloS, попробуй откомпилировать следующий код:
Код

void f( int &a ) {}

int main( int argc, char**argv )
{
    int a = 1;
    f( a );
    f( a++ );
}

PM MAIL   Вверх
RatHat
Дата 12.1.2007, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 5.9.2005

Репутация: нет
Всего: 1



Код

void f( int &a ) {}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int a = 1;
    f(a);
    f(a++);
    ShowMessage(a);
}


компилил в билдере)

а = 2
))))

Это сообщение отредактировал(а) RatHat - 12.1.2007, 17:14
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
zkv
Дата 12.1.2007, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(RatHat @  12.1.2007,  17:12 Найти цитируемый пост)
компилил в билдере)

ну так он предупреждение выдает, тогда скажем так:
Код

void f( int &a ) 
{
  a = 10;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int a = 1;
  f(a);
  a++;
  ShowMessage(a);

  a = 1;
  f(a++);
  ShowMessage(a);
}

PM MAIL   Вверх
Xenon
Дата 12.1.2007, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Фишка,я так понимаю, в void f( int &a ) При void f( int a ) вроде как, точно пофиг


--------------------
user posted image  
PM MAIL   Вверх
zkv
Дата 12.1.2007, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(Xenon @  12.1.2007,  17:46 Найти цитируемый пост)
Фишка,я так понимаю, в void f( int &a ) При void f( int a ) вроде как, точно пофиг 

smile да, дело в том, что, по идее, постфиксный ++ создает копию объекта которую и отдает по значению, а сам объект инкрементирует. Билдер, как я понял из ворнинга, из переданного ++'ом значения делает нечто вроде временной переменной, которую и отдает по ссылке в функцию f().


Это сообщение отредактировал(а) zkv - 12.1.2007, 17:56
PM MAIL   Вверх
Vsts
Дата 12.1.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 10.1.2007

Репутация: нет
Всего: 1



Цитата

void f( int &a ) {printf("f(&)\n");}
void f( int a )   {printf("f(  )\n");}
void main( )
{
    int a = 1;
    f( a++ );  //:)
}

это нармальными компиляторами не собираеться...вот так лучше
Код

void f( int &a ) { printf("f(&)");}
void f( int  a )  { printf("f( )");}
void main()
{
    int a = 1;
    f(a++);
}


Это сообщение отредактировал(а) Vsts - 12.1.2007, 19:59
PM MAIL   Вверх
PoloS
Дата 12.1.2007, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 29.12.2006
Где: МО, г. Одинцово

Репутация: 1
Всего: 5



Спасибо, разобрался =)
PM MAIL ICQ   Вверх
Daevaorn
Дата 12.1.2007, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(PoloS @  12.1.2007,  15:24 Найти цитируемый пост)
одинаково ли действие "f(a++);" и "f(a); ++a;". Ответ нет. не могу понять почему?

это ещё цветочкиsmileего почитаешь, ещё и не такое увидешьsmile

Это сообщение отредактировал(а) Daevaorn - 12.1.2007, 21:14
PM MAIL WWW   Вверх
Любитель
Дата 14.1.2007, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Зато иногда приятно ощущать себя идиотом  smile 


--------------------
PM MAIL ICQ Skype   Вверх
cardinal
Дата 5.4.2007, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



scai, наш форум сотрудничает с издательством, поэтому ссылки на халяву не приветствуются.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
andrew_121
Дата 15.6.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Вот представляю еще одну задачку. Где-то в инете нарыл:

Есть две деревни: деревня магов и деревня гномов. Раз в год маги проходят по деревне гномов и выстраивают их по росту в возрастающем порядке, так что каждый гном может видеть только тех, кто ниже его самого. 

У магов неограниченное количество чёрных и белых шляп. Они одевают белую или черную шляпу на голову каждого гнома.

Затем, начиная с самого высокого гнома (в конце шеренги), они спрашивают его, какого цвета шляпа не нём надета. Если гном ошибается, маги убивают его (другие гномы слышат его ответ, но не могут определить, был ли он убит или нет).

Какой стратегии должны придерживаться гномы, чтобы минимизировать количество убиенных гномов?

Каково максимальное количество гномов, которые будут убиты при использовании оптимальной стратегии?

Мне сюжет понравился. Как в сказке какой-то...интересно та как )
Интересно у кого какой ответ )

Это сообщение отредактировал(а) andrew_121 - 15.6.2008, 18:37


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Lazin
Дата 15.6.2008, 16:49 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



andrew_121, а причем тут С++ и Саттер с его книгами smile 
PM MAIL Skype GTalk   Вверх
andrew_121
Дата 15.6.2008, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Lazin - У него в книге этой задачи НЕТ. Ну вот, дополнил )))


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
fish9370
Дата 15.6.2008, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: -1
Всего: 1



Цитата(andrew_121 @  15.6.2008,  15:37 Найти цитируемый пост)
Есть две деревни: деревня магов и деревня гномов. Раз в год маги проходят по деревне гномов и выстраивают их по росту в возрастающем порядке, так что каждый гном может видеть только тех, кто ниже его самого. 

У магов неограниченное количество чёрных и белых шляп. Они одевают белую или черную шляпу на голову каждого гнома.

Затем, начиная с самого высокого гнома (в конце шеренги), они спрашивают его, какого цвета шляпа не нём надета. Если гном ошибается, маги убивают его (другие гномы слышат его ответ, но не могут определить, был ли он убит или нет).

Какой стратегии должны придерживаться гномы, чтобы минимизировать количество убиенных гномов?

Каково максимальное количество гномов, которые будут убиты при использовании оптимальной стратегии?


если придерживаться стандартной логики, рядом стоящий гном уж точно знал какая у того шляпа, и прекрасно видел замочили его другана или нет.. он шепчет на ухо рдом стоящему о цвете его шляпы, а тот ему.. так делает вся коллона.. при учете, что ни один гном не делжал зла на рядом стоящего и дал ему правильную информацию (либо он перепроверил ее у гнома с другой стороны) может пострадать только один гном (которого первого спросили, которому не успели шепнуть).. уж больно, что-то просто.. тут должен быть какой-то подвох..  smile  


--------------------
undefined
PM MAIL WWW ICQ   Вверх
bronislav
Дата 15.6.2008, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 29.1.2008
Где: Украина::Донецк

Репутация: нет
Всего: 3



Вообще-то задача решается с помощью четности.

При правильной стратегии максимум умрет 1 гном.

Добавлено через 1 минуту и 57 секунд
Цитата(fish9370 @  15.6.2008,  18:29 Найти цитируемый пост)
он шепчет на ухо рдом стоящему о цвете его шляпы,

гномы не согут переговариваться между собой

Добавлено через 3 минуты и 54 секунды
Стратегия такая:
Гном считает количество черных шляп, и если их количество четное, то он говорит черная, если нет то белая

Следующий гном слыша, что сказал предидущий делает вывод. Считает шляпы, которые видит сам, если четность изменилась, значит на нем черная шляпа, если нет - белая.

Это сообщение отредактировал(а) bronislav - 15.6.2008, 21:13


--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1512 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.