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

Поиск:

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

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


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

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

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

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


 




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


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

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