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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [С/С++] Исходник с компилирующийся при потере , нужно решение на  
:(
    Опции темы
Гость_vadim
Дата 16.11.2005, 23:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Добрый вечер, уважаемые знатоки.

Нужно написать программу выводящую на экран один раз число 2005
"Хитрость" же её заключается в том, что если в программе (имеется ввиду её исходник)
изменить ровно один любой символ на какой-нибудь другой так, что бы после этого она по-прежнему компилировалась, то программа должна вывести один раз число 2006.
Другими словами, программа должна определить - изменялся ли её исходный текст после того, как она вывела на экран число 2005 или нет.

Изменения регистра символов и пробелы допускаются.
Размер программы не больше 18 - 20 строк. (не столь важно, но желательно)
Желательно использование стандартных средств C / C++.


  Вверх
maxim1000
Дата 16.11.2005, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



хм... можно попробовать что-нибудь вроде этого...
Код

#include <iostream>
void main()
{
  char *aaa;
  char *bbb=aaa;
  --bbb;
  --bbb;
  cout<<aaa-bbb;
  cout<<bbb-bbb;
  cout<<bbb-bbb;
  --bbb;
  --bbb;
  --bbb;
  if(0)
    --bbb;
  cout<<aaa-bbb;
}

по идее, менять можно только 0 в условии if...
Добавлено @ 23:40
P.S.
забавная задачка smile

Это сообщение отредактировал(а) maxim1000 - 16.11.2005, 23:41


--------------------
qqq
PM WWW   Вверх
Mayk
Дата 17.11.2005, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


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

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



Цитата(maxim1000 @ 17.11.2005, 03:40)

по идее, менять можно только 0 в условии if...

Почти smile

Цитата(maxim1000 @ 17.11.2005, 03:40)
  --bbb;
  if(0)
    --bbb, //<-- запятая
  cout<<aaa-bbb;

И у нас получилось двести smile
semicolon еще один добавить перед последним cout надо. Ну или в блок {} внести.

Это сообщение отредактировал(а) Mayk - 17.11.2005, 08:10


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Ignat
Дата 17.11.2005, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

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



А потом влезаем дебаггером и убиваем jmp ))


--------------------
Теперь при чем :P
PM   Вверх
maxim1000
Дата 17.11.2005, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата
И у нас получилось двести

поймал... поймал smile
издание второе, переработанное:
Код

#include <iostream>
void main()
{
  char *aaa;;
  char *bbb=aaa;;
  --bbb;;
  --bbb;;
  cout<<aaa-bbb;;
  cout<<bbb-bbb;;
  cout<<bbb-bbb;;
  --bbb;;
  --bbb;;
  --bbb;;
  if(0)
    --bbb;;
  cout<<aaa-bbb;;
}

smile


--------------------
qqq
PM WWW   Вверх
En_t_end
Дата 17.11.2005, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



LOL
Такого издевательства я ещё не видел...
Это что за препод такой приколист ?
PM MAIL ICQ Skype GTalk Jabber   Вверх
sergejzr
Дата 17.11.2005, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Модератор: Название темы должно отражать ее суть!


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Гость_vadim
Дата 18.11.2005, 00:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(maxim1000 @ 17.11.2005, 11:55)
if(0)
    --bbb;;

maxim1000, а если так
Код
  if(0)    
      -*bbb;;    

  Вверх
Mayk
Дата 18.11.2005, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


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

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



Гость_vadim
вот хитрец. А что ты на это скажешь?
Код

#include <iostream>
using namespace std;

int main()
{
  void *bb0;;
  void *bb11;;
  void *bb222;;
  void *bb3333;;
  void *bb44444;;
  void *bb555555;;
  void *bb6666666;;
  cout << &bb0 - &bb222;;
  cout << &bb0 - &bb0;;
  cout << &bb0 - &bb0;;
  if(0)
          cout << &bb0 - &bb6666666;
  else
          cout << &bb0 - &bb555555;
}


Добавлено @ 00:49
Только это - не уверен что портируемо.

Это сообщение отредактировал(а) Mayk - 18.11.2005, 00:55


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Guest
Дата 18.11.2005, 01:01 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ну, кроме этого
Код
int main()
{
 ...
  void *bb11;;   //  ab11 или bb12
 ...
}

пока что ничего

  Вверх
Mayk
  Дата 18.11.2005, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


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

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



нет не так. В предыдущем примере запятая вместо минуса катит.
А вот так!
Код

#include <iostream>
#include <stdint.h>
using namespace std;
template <bool b>
struct s
{     enum{
                val22=sizeof(int16_t),
                val000=NULL,
                val5=sizeof(int8_t)xor(sizeof(int32_t)) ,
        };
};
template <>
struct s<false>
{     enum{
                val22=sizeof(int16_t),
                val000=NULL,
                val5=sizeof(int16_t)xor(sizeof(int32_t)),
        };
};
typedef s<1>f; 
int main()
{  f _f;;
  cout<<f::val22;;
  cout<<f::val000;;
  cout<<f::val000;;
  cout<<f::val5;;
  cout<<endl;;
}


По идее сменить можно только 1 на 0 в typedef'е.

Вот здесь запятые не вставишь smile

Это сообщение отредактировал(а) Mayk - 18.11.2005, 01:25


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Guest
Дата 18.11.2005, 01:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Mayk, ты где такое компилил?
У меня vc++6.0

fatal error C1083: Cannot open include file: 'stdint.h': No such file or directory
  Вверх
Mayk
Дата 18.11.2005, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


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

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



Цитата(Guest @ 18.11.2005, 05:27)
Mayk, ты где такое компилил?

Гнусом

Цитата(Guest @ 18.11.2005, 05:27)

fatal error C1083: Cannot open include file: 'stdint.h': No such file or directory

Попробуй заментть на inttypes.h
Если не сработает - выкинь вязанку в топку.

Знаю в борланде какой-то из файлов точно есть из этих двух (inttypes.h и stdint.h).



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Гость_vadim
Дата 18.11.2005, 01:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











fatal error C1083: Cannot open include file: 'inttypes.h': No such file or directory

  Вверх
Mayk
Дата 18.11.2005, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


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

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



Ладно, можешь вместо #include <...int....h>
прописать
typedef __int32 int32_t; (или typedef __i32 int32_t?)
typedef __int16 int16_t; (или typedef __i16 int16_t?)
typedef __int8 int8_t; (или typedef __i8 int32_t?)
В конце концов перебиндь всякие DWORD'ы.


ps. если выкинуть запятые после val5 , то и comeau берет.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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