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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [С/С++] Исходник с компилирующийся при потере , нужно решение на  
:(
    Опции темы
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()


  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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