Модераторы: 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   Вверх
Guest
Дата 18.11.2005, 01:39 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Mayk, в любом случае нужно что-нибудь по-проще. Например, завтра скажут, что бы
программа выводила 1917, а после изменений - 1945, что делать будем? имхо, нужен
какой-нить универсальный алгоритм.
  Вверх
Mayk
Дата 18.11.2005, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Guest @ 18.11.2005, 05:39)
Mayk, в любом случае нужно что-нибудь по-проще. Например, завтра скажут, что бы
программа выводила 1917, а после изменений - 1945, что делать будем? имхо, нужен
какой-нить универсальный алгоритм.

Ну дыкть оперируя размерами я думаю мы сможем получить нужные нам цифры.
0 - это NULL.
1 - sizeof(int8_t), sizeof(char) на крайний случай
2 - sizeof(int16_t), sizeof(short) на крайний случай
4 - sizeof(int32_t), sizeof(int) на крайний случай
5 - sizeof(int32_t)xor(sizeof(int8_t))
6 - sizeof(int32_t)xor(sizeof(int16_t))
7 - sizeof(int8_t)or(sizeof(int16_t))or(sizeof(int32_t))
8 - sizeof(int64_t), sizeof(long long) на крайний случай
9 - sizeof(int64_t) or sizeof(int8_t)

далее используя специализацию мы сможем легко переопределить любую цифру в любую другую smile

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


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


Unregistered











так скомпилилось
Код

#include <iostream>
//#include <inttypes.h>
using namespace std;
typedef __int32 int32_t;// (èëè typedef __i32 int32_t?)
typedef __int16 int16_t;// (èëè typedef __i16 int16_t?)
typedef __int8 int8_t;// (èëè typedef __i8 int32_t?)


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 << f::val000 << f::val000 << f::val5;
}


но здесь можно менять, например
template <bool b> ---- >> template <bool k>
f _f;; --- >> f _d;;



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


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


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

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



Цитата
f _f;; --- >> f _d;;

Вот эту строку можно выкинуть

Цитата
template <bool b> ---- >> template <bool k>

b тоже можно выкинуть.
Добавлено @ 02:08
А для того, чтобы нельзя было менять символы в неиспользуемом class'е можно добавить ф-цию
int nameHolder(){return val22 xor val000 xor val5 xor nameHolder();} в класс
Добавлено @ 02:10
Кстати, все xor'ы следует заменить на or'ы - просто иначе x можно заменить на пробельный символ

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


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


Unregistered











typedef s<1> f; --->> typedef s<2> f;
Цитата
просто иначе x можно заменить на пробельный символ

на пробел нельзя менять


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


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


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

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



Цитата(Guest @ 18.11.2005, 06:15)
typedef s<1> f; --->> typedef s<2> f;

enum {
value_0=false,
value_1=true,
value_kk = value_0 or value_1;
};

typedef s<value_0> f;

value_kk запихни в nameHolder()




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


Unregistered











Цитата
value_kk запихни в nameHolder()

А что это такое?
  Вверх
Mayk
Дата 18.11.2005, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата

А что это такое?

ф-ция, содержащая имена.
Цитата(Mayk @ 18.11.2005, 06:04)
int nameHolder(){return val22 xor val000 xor val5 xor nameHolder();} в класс

Хотя лучше не надо - valuekk = value0 or value1 можно заменить на value1 or value1;
Лучше вот такой nameHolder для них.
template <bool> struct nameHolder2{nameHolder2();};
template <> struct nameHolder2<value_0>{nameHolder2();};
template <> struct nameHolder2<value_1>{nameHolder2();};




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


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


Unregistered











Mayk, я уже запутался что куда писать. Если не трудно выложи код полностью
  Вверх
Mayk
Дата 18.11.2005, 02:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



что-то около того. я не все изменения что здесь писал туда вносил
Код

#include <iostream>
#include <stdint.h>
using namespace std;
template <bool>
struct s
{
        enum{
                val22 = sizeof(int16_t),
                val0 = NULL,
                val555 = sizeof(int32_t) xor sizeof(int16_t)
        };
       int nameHolder(){return val22 or val0 or val555 or nameHolder();}

};
template <>
struct s<false>
{
        enum{
                val22=sizeof(int16_t),
                val0=NULL,
                val555=sizeof(int32_t) xor sizeof(int8_t)
        };
        int nameHolder(){return val22 or val0 or val555 or nameHolder();}


};
enum {
        value_0=false,
        value_1=true,
};
typedef s<value_0> f;
template <bool> struct nameHolder2{nameHolder2();};
template <> struct nameHolder2<value_0>{nameHolder2();};
template <> struct nameHolder2<value_1>{nameHolder2();};
int main()
{
  cout << f::val22;;
  cout << f::val0;;
  cout << f::val0;;
  cout << f::val555;;
  cout << endl;;
}


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


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


Unregistered











Код
template <bool>
struct s
{
        enum{
                val22 = sizeof(int16_t),  // sizeoR 
                val0 = NULL,    //  NULR
                val555 = sizeof(int32_t) xor sizeof(int16_t)

        };
};

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


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


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

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



Цитата(Guest @ 18.11.2005, 07:09)
                val22 = sizeof(int16_t),  // sizeoR
                val0 = NULL,    //  NULR

Ась?


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


Unregistered











Замени - увидишь
  Вверх
Mayk
Дата 18.11.2005, 03:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Guest @ 18.11.2005, 07:17)
Замени - увидишь

Цитата

06:21 ~/src$ g++ a.cpp
a.cpp:20: error: `NULR' was not declared in this scope
a.cpp:20: error: enumerator value for `val0' not integer constant
06:21 ~/src$ fg
vim a.cpp

[1]+  Stopped                vim a.cpp
06:21 ~/src$ g++ a.cpp
a.cpp:19: error: parse error before `)' token ///это sizeoR
a.cpp:22: error: missing ';' before right brace
a.cpp: In function `int nameHolder()':
a.cpp:23: error: `val22' undeclared (first use this function)
a.cpp:23: error: (Each undeclared identifier is reported only once for each
  function it appears in.)
a.cpp:23: error: `val0' undeclared (first use this function)
a.cpp:23: error: `val555' undeclared (first use this function)
a.cpp: At global scope:
a.cpp:25: error: parse error before `}' token
a.cpp: In function `int main()':
a.cpp:36: error: `val22' is not a member of type `s<false>'
a.cpp:37: error: `val0' is not a member of type `s<false>'
a.cpp:38: error: `val0' is not a member of type `s<false>'
a.cpp:39: error: `val555' is not a member of type `s<false>'


Цитата

Your Comeau C/C++ test results are as follows:

Comeau C/C++ 4.3.3 (Aug  6 2003 15:13:37) for ONLINE_EVALUATION_BETA1
Copyright 1988-2003 Comeau Computing.  All rights reserved.
MODE:strict errors C++

"ComeauTest.c", line 8: error: identifier "sizeoR" is undefined
                  val22 = sizeoR(int16_t),
                          ^

"ComeauTest.c", line 8: error: function call is not allowed in a constant expression
                  val22 = sizeoR(int16_t),
                          ^

"ComeauTest.c", line 8: error: type name is not allowed
                  val22 = sizeoR(int16_t),
                                ^

"ComeauTest.c", line 9: error: identifier "NULR" is undefined
                  val0 = NULR,
                        ^

"ComeauTest.c", line 28: error: trailing comma is nonstandard
          value_1=true,
                      ^

Ну и?

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


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


Unregistered











У меня компилит.
даже так компилит
template <bool> struct nameHolder2{nameHolder2();}; -->> template <bool> struct nameHolder2{nameHolder5();}; // nameHolder2() ==>> nameHolder5()


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


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


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

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



компилятор в топку


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


Unregistered











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


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


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

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




Ну или замени на
template <bool> struct nameHolder2{};
template <> struct nameHolder2<value_0>{};
template <> struct nameHolder2<value_1>{};

а main замени на
Код

int main()
{
  nameHolder2<true>();
  nameHolder2<false>();
  s<true>();
  s<false>();
  cout << f::val22;;
  cout << f::val0;;
  cout << f::val0;;
  cout << f::val555;;
  cout << endl;;
}


Добавлено @ 03:27
далее
template <bool>
struct s
{
enum{
val22 = sizeof(int16_t),
val0 = NULL,
val555 = sizeof(int32_t) xor sizeof(int16_t)

};
int nameHolder(){return val22 or val0 or val555 or nameHolder();}
};

меняй

на
Код

template<bool> struct s{};
template <>
struct s<true>
{
        enum{
                val22 = sizeof(int16_t),
                val0 = NULL,
                val555 = sizeof(int32_t) xor sizeof(int16_t)

        };
        int nameHolder(){return val22 or val0 or val555 or nameHolder();}
};


и пущай он давится smile smile


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


Unregistered











Mayk, вроде бы всё в порядке. Мож быть кто-нить завтра ещё потестит, вернее уже сегодня. А пока что тебе большое СПАСИБО.
  Вверх
kuka
Дата 18.11.2005, 11:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











error C2065: 'xor' : undeclared identifier
error C2065: 'or' : undeclared identifier

какой фаил нуна подключить?
  Вверх
Mayk
Дата 19.11.2005, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Guest @ 18.11.2005, 07:42)
Mayk, вроде бы всё в порядке.

Хорошо - у меня через пару минут после того ответа инет кончился smile

Цитата(kuka @ 18.11.2005, 15:43)
error C2065: 'xor' : undeclared identifier
error C2065: 'or' : undeclared identifier

какой фаил нуна подключить?

Не нужно ничего подключать - это альтернативное написание ^ и &&. Читать стандарт, пар 2.5 (во всяком случае 2.5 в ISO/IEC 14882))
Так что однозначно нужно выкинуть обновить компилятор.

Или порыскать по инклюдам в поисках #define xor, #define and

ps. кстати - где я грил выше про замену xor на or - or следует читать как bitor естессно.


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


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Ребята, а вы уверены, что sizeof выдаст одинаковый результат на разных машинах?


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Mayk
Дата 19.11.2005, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Dov @ 19.11.2005, 14:20)
Ребята, а вы уверены, что sizeof выдаст одинаковый результат на разных машинах?

в intN_t не может быть padding битов . А про архитектуры которые имеют типы размером в 2 или 4 бита не слышал.

Но можно пойти таким путём(более человеческий):

const int { //конст инт ко всем как бы - лениво мне кутнпастить
digit0 = NULL;;
digit1 = div(sizeof(char),sizeof(char)).quot//, вместо . не подставить :-)
digit2 = std::plus<int>()(digit1,digit1);
digit3 = std::plus<int>()(digit1,digit2);
...
digitN = std::plus<int>()(digit1,digit{N-1}); /// или еще как угодно суммировать и проч
}

Это сообщение отредактировал(а) Mayk - 19.11.2005, 12:31


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


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Да, уж... Страшновато смотреть на эти "извращения" smile , хотя ты знаешь, Mayk, всё это
натолкнуло меня на одну мыслю, smile как говорят - умная мысля приходит опосля.
Пошёл кумекать, скоро вернусь.
А может и не скоро. smile smile smile


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Dov
Дата 19.11.2005, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Я вернулся. Если шо не так, прошу сильно не пинать.
Итак, вариант №4: (думаю, ещё не последний)
Код
#include <iostream.h>
enum {A0, B1, C2, D3, E4, F5, H6/*, I7, J8, L9*/}; 
void main()
{
    true ? cout << C2 << A0 << A0 << (0 ? H6 : F5) : cout << B1 << D3 << E4 /*<< I7 << J8 << L9*/;
}



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Mayk
Дата 19.11.2005, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



smile


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


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(Mayk @ 19.11.2005, 14:53)
smile

Mayk, это шо такое? Улыбка Джоконды? smile smile smile


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Mayk
Дата 19.11.2005, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Смайлик такой. Мол решение понравилось. Просто мне картинка " smile " нравится больше картинки " smile "

Это сообщение отредактировал(а) Mayk - 19.11.2005, 15:04


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


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



А ты что, уже успел потестить?


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Mayk
Дата 19.11.2005, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



нет. А зачем? Уж enum то точно принимает 0..9.


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


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Это тебе спасибо, enum у тебя подглядел.
Цитата
хотя ты знаешь, Mayk, всё это натолкнуло меня на одну мыслю

Но всё-таки мне это решение не очень нравится, нужно искать что-то другое, что-нибудь более обширное.
Цитата
Например, завтра скажут, что бы программа выводила 1917, а после изменений - 1945, что делать будем? имхо, нужен какой-нить универсальный алгоритм.
Ну, эту-то задачу этот алгоритм кое-как решит, а вот если нужно будет вывести к примеру:
октябрь - 1917, а после изменений: май - 1945, тогда он обхезается. По этому я написал, что это ещё не поледний вариант. Будем думать.


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
S.A.P.
Дата 20.11.2005, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Итак вернемся к опровержениям smile .
Код

        enum{
                val22=sizeof(int16_t),
                val0=NULL,
                val555=sizeof(int32_t) xor sizeof(int8_t)
        };


где xor, x заменить на пробел, выйдет 2001

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


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


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

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



Цитата(Perchilla @ 20.11.2005, 11:24)
Итак вернемся к опровержениям

Баян.

Цитата(Mayk @ 18.11.2005, 06:04)
Добавлено @ 06:10
Кстати, все xor'ы следует заменить на or'ы - просто иначе x можно заменить на пробельный символ

Цитата(Guest @ 18.11.2005, 06:15)
Цитата
просто иначе x можно заменить на пробельный символ
на пробел нельзя менять

Цитата(Mayk @ 19.11.2005, 11:25)

ps. кстати - где я грил выше про замену xor на or - or следует читать как bitor естессно.



Добавлено @ 20:21
Цитата(Dov @ 19.11.2005, 19:45)
октябрь - 1917, а после изменений: май - 1945, тогда он обхезается.

Ну почему же. Тогда начнется просто мозго#@$#@ство - определяешь 255 элементов в enum'е и пошел
if(0)
cout << letterM << letterA < letterY << endl;
else
cout << letterO << letterC < letterT << endl;

ps. Если что, то я в курсе, что << можно заменить на <- smile

Это сообщение отредактировал(а) Mayk - 20.11.2005, 20:23


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


Эксперт
****


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

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



Цитата(Mayk @ 20.11.2005, 20:17)
Баян.
ой smile .
Тогда тут
Код

true ? cout << C2 << A0 << A0 << (0 ? H6 :-F5) : cout << B1 << D3 << E4 /*<< I7 << J8 << L9*/;

( минус перед F5 ) будет 200-5

smile

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


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(Mayk @ 20.11.2005, 20:17)
Ну почему же. Тогда начнется просто мозго#@$#@ство - определяешь 255 элементов в enum'е и пошел
if(0)
cout << letterM << letterA < letterY << endl;
else
cout << letterO << letterC < letterT << endl;

Mayk, конечно, так сделать можно, но всё это как-то не так, не по-программистски (имхо).
Мы ведь стремимся к тому, что бы алгоритм, нами придуманный мог справится не с одной какой-нибудь задачей, а с множеством однотипных задач, ты согласен? Вот если мы сможем изменять выводимые данные, не изменяя при этом наш алгоритм, тогда другое дело. Как говорится мухи - отдельно, компот - отдельно.

Цитата(Perchilla @ 20.11.2005, 20:35)
Тогда тут

код C++
1:
true ? cout << C2 << A0 << A0 << (0 ? H6 :-F5) : cout << B1 << D3 << E4 /*<< I7 << J8 << L9*/;

( минус перед F5 ) будет 200-5


Perchilla, как я понимаю пробелы на символы менять нельзя, так же, как и символы на пробелы. Имхо, пробелы оставлены для лучшего восприятия кода, не более. Ведь всегда можно обойтись без них ... почти всегда. Например в этом коде
Код
void main()
можно пробел поменять на, скажем, '*'. И шо мы тада бум делать?


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Mayk
Дата 21.11.2005, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Perchilla
Это development версия. Имелось в виду[если пробелы любишь] smile
Код

if(true){{cout<<C2;}{cout<<A0;}{cout<<(A0);}{if(0){cout<<H6;}{cout<<F5;}}else{blablabla}


К тому же можно сделать замену:
Код

true ? cout << C2 <- A0 << A0 << (0 ? H6 :-F5) : cout << B1 << D3 << E4 /*<< I7 << J8 << L9*/


Цитата(Dov @ 21.11.2005, 03:12)
можно пробел поменять на, скажем, '*'. И шо мы тада бум делать?

Наблюдать сообщения об ошибке, что main может быть либо int main(), либо int main(int argc, char* argv[]).

Цитата(Dov @ 21.11.2005, 03:12)

Mayk, конечно, так сделать можно, но всё это как-то не так, не по-программистски (имхо).

Ну а что? Алгоритм мы знаем. Благодаря std::plus даже не один smile

Ну еще можно поиграть в интересную игру под названием "мясорубка" (очень вольный перевод слова hash). - мы хэшируем строки, компайл тайм сравниваем хэщи и если что не так - генерируем ошибку
Что нить типа такого . Это только идея. Оно не компилица, но идея ясна.
Код

char*str[] = {
"octoberfest! jaja!",
"я всегда буду читать manual'ы по албанскаму йазыку"
};
template <class T, T val,int add>
struct plus{
  T value=val+add;
};
template <int>
struct PLUSCHECKER{}
template <>
struct PLUSCHECKER<5>{enum {value=true}}
//plus checker (2+2+1)
PLUSCHECKER<plus<int,plus<int,plus<int,true,true>::value, plus<int,true,true>::value>::value>,true>::value;
template <const char* str>
struct  getHash{
    enum{
        HASH= plus<plus<curhash, str[NULL]>::value, str[NULL] ? getHash<plus<str,true>>::HASH : NULL;
    }
};
template <int>
struct HASHCHECKER{}
template <>
struct HASHCHECKER<42343242>{enum{val1=true;}} //getHash<str[0]>=423432242
template <>
struct HASHCHECKER<142657>{enum{val2=true;}}//getHash<str[0]>=142657

HASHCHECKER<getHash<str[0]>>::val1;
HASHCHECKER<getHash<str[1]>>::val2;

if(0) cout << str[NULL];
else cout << str[sizeof(char)/sizeof(char)];

Поясню что здесь происходит[если довести до ума] -
мы определяем класс plus для сложения.
PLUSCHECKER<5> определяет value.
Остальные PLUSCHECKERы его не содержат. Таким образом изменение плюса или 5 приведет к ошибке компиляции.
HASHCHECKER работает аналогично.
Добавлено @ 00:05
изменения буквы в исходных сообщениях повлечет изменения хэшей.
таким образом опять получится ошибка компиляции
Добавлено @ 00:06
так... по моему здесь даже не пара фактических ошибок, ну ладно. счас три ночи и я вернусь к хэшам после сна smile


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


Unregistered











Всем спасибо за помощь.
  Вверх
S.A.P.
Дата 21.11.2005, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Dov @ 20.11.2005, 23:12)
Perchilla, как я понимаю пробелы на символы менять нельзя, так же, как и символы на пробелы. Имхо, пробелы оставлены для лучшего восприятия кода, не более. Ведь всегда можно обойтись без них ... почти всегда.


Цитата(Mayk @ 21.11.2005, 00:04)
Perchilla
Это development версия. Имелось в виду[если пробелы любишь]

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

Пробелы на символы и символы на пробелы менять не буду smile .

Это сообщение отредактировал(а) Perchilla - 21.11.2005, 08:51
PM MAIL   Вверх
Dov
Дата 24.11.2005, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(Perchilla @ 21.11.2005, 08:42)
дык дайте все таки рабочий, атомарный код, че ходить вокруг да около?

Пробелы на символы и символы на пробелы менять не буду

Perchilla, этот код у меня нормально работает (VC++6)

Цитата(Dov @ 19.11.2005, 14:45)
#include <iostream.h>
enum {A0, B1, C2, D3, E4, F5, H6/*, I7, J8, L9*/}; 
void main()
{
    true ? cout << C2 << A0 << A0 << (0 ? H6 : F5) : cout << B1 << D3 << E4 /*<< I7 << J8 << L9*/;
}

И вот такие варианты
Цитата(Mayk @ 21.11.2005, 00:04)
...cout << C2 <- A0 << A0...

не проходят.





--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
S.A.P.
Дата 24.11.2005, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Dov @ 24.11.2005, 18:08)
И вот такие варианты
Цитата (Mayk @ 21.11.2005, 00:04)
...cout << C2 <- A0 << A0...

не проходят.

В смысле не проходят?

А такие
Код

 ...cout << C2 <= A0 << A0...


Атветы не принемаюцца smile .
PM MAIL   Вверх
Dov
Дата 24.11.2005, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(Perchilla @ 24.11.2005, 18:30)
А такие

код C++
1:
...cout << C2 <= A0 << A0...

тем более. smile smile smile

Цитата
error C2676: binary '<=' : 'class ostream' does not define this operator or a conversion to a type acceptable to the predefined operator
Error executing cl.exe.



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
S.A.P.
Дата 24.11.2005, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ну ладно, вот тебе "правильный" вариант
Код

 ...cout << 22 << A0 << A0...

PM MAIL   Вверх
Dov
Дата 24.11.2005, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(Perchilla @ 24.11.2005, 18:54)
Ну ладно, вот тебе "правильный" вариант

код C++
1: ...cout << 22 << A0 << A0...

поймал, Perchilla, молодец. smile smile smile
Но это легко исправить.
Код
#include <iostream.h>
enum {AA0, BB1, CC2, DD3, EE4, FF5, HH6}; 
void main()
{
    true ? cout << CC2 << AA0 << AA0 << (0 ? HH6 : FF5) : cout << BB1 << DD3 << EE4;
}



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Dov
Дата 2.12.2005, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(Mayk @ 21.11.2005, 00:04)
Что нить типа такого . Это только идея. Оно не компилица, но идея ясна.
Код
char*str[] = {
"octoberfest! jaja!",
"я всегда буду читать manual'ы по албанскаму йазыку"
};

Mayk, спасибо за идею. smile Массив строк !!! smile
Вот, наваял такой примерчик:
Код
#include <iostream.h> 
#include <string.h>
enum {AA, BB, CC, DD, EE};
void main() 
{
    char *s[] = {"2005", "2005", "2006", "2006", "2006"}; 
    cout << (strcmp(s[AA], s[BB]) ? s[EE] : (strcmp(s[CC], s[EE]) ? s[DD] : (strcmp(s[DD], s[EE]) ? s[CC] : s[BB])));
}

Цитата(Dov @ 20.11.2005, 23:12)
Вот если мы сможем изменять выводимые данные, не изменяя при этом наш алгоритм, тогда другое дело. Как говорится мухи - отдельно, компот - отдельно.
Теперь, имхо, можно.



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Dov
Дата 5.12.2005, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Так-с, последний штрих, без массива строк и без enum`a.
Код
#include <iostream.h> 
#include <string.h>
    
void main() 
{
    char *AA = "2005", *BB = "2005", *CC = "2006", *DD = "2006", *EE = "2006"; 
    cout << (strcmp(AA, BB) ? EE : (strcmp(CC, EE) ? DD : (strcmp(DD, EE) ? CC : BB)));
}


Это сообщение отредактировал(а) Dov - 12.12.2005, 21:05


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Fixin
Дата 12.12.2005, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


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

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



Цитата
программа должна определить - изменялся ли её исходный текст после того, как она вывела на экран число 2005 или нет
Может, я чего и не понял, но кажется, я этого ни в одном приведенном коде не видел. smile smile smile smile

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


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



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

Fixin, ты что со второго абзаца всегда читаешь? smile


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Fixin
Дата 12.12.2005, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


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

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



Я не понял. Наверно я совсем...
Добавлено @ 21:29
Во всех этих примерах ее нужно перекомпилировать, чтоб она 2006 вывела? так?
PM MAIL ICQ   Вверх
Dov
Дата 12.12.2005, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(Fixin @ 12.12.2005, 21:28)
Я не понял. Наверно я совсем...
Добавлено @ 21:29
Во всех этих примерах ее нужно перекомпилировать, чтоб она 2006 вывела? так?

Ну, конечно. Мы же исходник изменяем.



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Fixin
Дата 12.12.2005, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


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

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



а почему не поменять 5 на 6?
PM MAIL ICQ   Вверх
Dov
Дата 12.12.2005, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Всмысле


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Fixin
Дата 12.12.2005, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


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

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



Код

void main()
{
          cout << "2005";
}
Потом 5 меняем на 6.
Добавлено @ 21:41
Условиям не противоречит, но ведь я неправ?
PM MAIL ICQ   Вверх
Dov
Дата 12.12.2005, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Fixin, предположим ты написал эту прогу
Цитата(Fixin @ 12.12.2005, 21:40)

void main()
{
          cout << "2005";
}
и говоришь мне. Вот, Dov, смотри, эта прога выводит число 2005.
Но если ты поменяешь в коде хоть один символ, то она выведет число 2006.


Fixin, а теперь скажи, сможет ли эта прога вывести число 2006, если я поменяю в ней хотя бы один любой символ?


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Fixin
Дата 12.12.2005, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


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

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



Цитата(Dov @ 12.12.2005, 22:49)
в ней хотя бы один любой символ?
Но ведь не совсем любой... круглую скобку квадратной - и не заработает. Наверное, имеется ввиду имя переменной?

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


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



НЕ забывай это
Цитата
изменить ровно один любой символ на какой-нибудь другой так, что бы после этого она по-прежнему компилировалась.





--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Fixin
Дата 12.12.2005, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


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

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



Усе, понял, лови еще 1 +.
Добавлено @ 22:01
Эх, завтра...
PM MAIL ICQ   Вверх
Dov
Дата 12.12.2005, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(Fixin @ 12.12.2005, 22:00)
Усе, понял
Фууууууууух, наконец-то. smile smile smile


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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