Библиотека
Дневники
Фотогалереи
Легкий форум
Архив
Поиск
Здравствуйте Гость (Вход|Регистрация)   
Студенческий форум
 
 


  Ответ в темуСоздание новой темыСоздание опроса

> Офигенный код

NEFFboy
Быстрая цитата




Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 537
Регистрация: 5.01.2007
Репутация: 25

Место учебы: ПТУ


Нарыл на просторах интернета вот такой код:

Код

#include <stdio.h>
float err=0, vars[27], q, r; char s1[1024]=" ", *st=s1+1, *x, *y, g, f=1;
float main(char *s, int i1, int i2, int u)
{  char c=0, op[]=",=+-*/", *p, *t, d; int br=0, i;
  if (f) goto l1; else if (i1>i2) { err=err?1:!u; return 0; }
  for (p=op; *p; p++)
    for (i=(*p=='='?i1:i2); d=s[i],(*p=='='?i<=i2:i>=i1); (*p=='='?i++:i--))
      if(!br&&d==*p){c=*p;goto l;} else if(d=='('||d==')')br+=(d=='('?1:-1);
l: if (c==',') { main(s, i1, i-1, 0); return main(s, i+1, i2, 0); }
  if(d=s[i1]&223,c=='=') return  i1==i-1&&d>64&&d<91?vars[d-65]=main(s,i+1,i2,0):(err=1,0);
  if((s[i-1]&223)!='E'&&(c=='+'||c=='-'))return main(s,i1,i-1,1)+(44-c)*main(s,i+1,i2,0);
  if (c=='/') {q=main(s, i+1, i2, 0); return q?main(s, i1, i-1, 0)/q:(err=1);}
  if (c=='*') return main(s, i1, i-1, 0)*main(s, i+1, i2, 0);
  if(s[i1]=='(') return s[i2]==')'?main(s, i1+1, i2-1, 0):(err=1,0);
  if (i1==i2 && (s[i1]&223)>64 && (s[i1]&223)<91) return vars[(s[i1]&223)-65];
    return (sscanf(s+i1,"%g%n",&r,&i) && i==i2-i1+1)?r:(err=1, 0);
l1:for(f=0,gets(st),x=st,y=st; err=0,g=*x,(x>st?*(x-1):*st); x++)
    if(g!=' '||*(y-1)>47&&*(y-1)<58&&*(x+1)>47&&*(x+1)<58)*(y++)=(g?*x:0);
  if (printf((err?"Error!\n\n":"%g\n\n"), main(st, 0, y-st-2, 0))) goto l1;
}


прога калькулатор... рабочая между прочим...

Калькулятор v21a - 20 строк!

Поддерживаются стандартные арифметические операции над данными типа float, однобуквенные переменные, оператор присваивания (в том числе "сквозной", например x=y=z=1), а также оператор «запятая». При записи чисел с плавающей точкой возможно использование формата [+-]dddE[+-]ddd, например, 2e-2. Реализован контроль синтаксических ошибок и деления на ноль. Работоспособность проверялась на Borland C 3.1. Для того, чтобы программа скомпилировалась, необходимо запретить использование синтаксиса C++, а чтобы правильно работала, необходимо использовать соглашения о вызовах языка C (не Pascal!). Кстати, эти требования соответствуют установкам BC 3.1 по умолчанию.
(с) Дмитрий Мельник, 21 сентября 2000 г.
PMПисьмо на e-mail пользователюСайт пользователяICQ
Top
whisk
Быстрая цитата




Уважаемый Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 975
Регистрация: 29.03.2005
Репутация: 87

Место учебы: ОрёлГТУ


стоит также обратить внимание на рекурсивный main.
PMПисьмо на e-mail пользователюСайт пользователяICQ
Top
KostyaN
Быстрая цитата




Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 879
Регистрация: 15.09.2006
Репутация: 37

Место учебы: -


код может и интересный, но тому, кто его редактировал, стоило бы открутить руки...
Тот, кто писал, используя метки, не вызывает у меня никакого уважения...
Так что, если завтра у меня не будет болеть голова, разберемся...
PMПисьмо на e-mail пользователюICQ
Top
дед_мажор
Быстрая цитата




Уважаемый крутой перец
Group Icon

Профиль
Группа: Декан
Сообщений: 2405
Регистрация: 11.11.2005
Репутация: 156

Место учебы: да


боян. гуглите на тему The International Obfuscated C Code Contest.
пост у меня в жж - http://dedm.livejournal.com/55622.html.
PMПисьмо на e-mail пользователю
Top
дед_мажор
Быстрая цитата




Уважаемый крутой перец
Group Icon

Профиль
Группа: Декан
Сообщений: 2405
Регистрация: 11.11.2005
Репутация: 156

Место учебы: да


Цитата (whisk @ 15.03.2007 - 23:49)
стоит также обратить внимание на рекурсивный main.

а также на несоблюдение стандарта на агрументы и возвращаемое значение этой функции.
PMПисьмо на e-mail пользователю
Top
whisk
Быстрая цитата




Уважаемый Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 975
Регистрация: 29.03.2005
Репутация: 87

Место учебы: ОрёлГТУ


дед_мажор
да, боян уже 7 лет. ты хочешь кого-то этим удивить?
PMПисьмо на e-mail пользователюСайт пользователяICQ
Top
дед_мажор
Быстрая цитата




Уважаемый крутой перец
Group Icon

Профиль
Группа: Декан
Сообщений: 2405
Регистрация: 11.11.2005
Репутация: 156

Место учебы: да


Цитата (whisk @ 16.03.2007 - 01:06)
ты хочешь кого-то этим удивить?

не понял вопроса.
PMПисьмо на e-mail пользователю
Top
whisk
Быстрая цитата




Уважаемый Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 975
Регистрация: 29.03.2005
Репутация: 87

Место учебы: ОрёлГТУ


дед_мажор
немного оффтопа: почти все в инете - боян. не надо, плз, писать об этом каждый раз, хорошо? wink.gif мы и так знаем, что ты крут непеально wink.gif

PMПисьмо на e-mail пользователюСайт пользователяICQ
Top
дед_мажор
Быстрая цитата




Уважаемый крутой перец
Group Icon

Профиль
Группа: Декан
Сообщений: 2405
Регистрация: 11.11.2005
Репутация: 156

Место учебы: да


Цитата (whisk @ 16.03.2007 - 02:31)
боян. не надо, плз, писать об этом каждый раз, хорошо? wink.gif

у меня "боян" - это вводное слово, а не высказывание. в нем не нужно искать полезную информацию. так что не надо каждый раз комментировать слова, не несущие смысловой нагрузки, а также указывать мне, в каком стиле и с каким содержанием должны быть написаны мои посты, хорошо? )
PMПисьмо на e-mail пользователю
Top
KostyaN
Быстрая цитата




Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 879
Регистрация: 15.09.2006
Репутация: 37

Место учебы: -


дык, по теме
что-то не понял, зачем сие произведение сюда выложили?
чтобы помогли понять, как работает, чтобы помогли скомпилить, или чтобы просто так, показать, что сие возможно?
так если первое или второе, так формулируйте сразу, а если третье, тогда не понятно, на кого эффект рассчитан...
PMПисьмо на e-mail пользователюICQ
Top
NEFFboy
Быстрая цитата




Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 537
Регистрация: 5.01.2007
Репутация: 25

Место учебы: ПТУ


whisk
имхо, вызавать рекурсивно маин есть дурнейший тон...

дед_мажор
фраза в описании: "чтобы программа скомпилировалась, необходимо запретить использование синтаксиса C++"

KostyaN
кинул, что бы народ посматрел программирование квадратиком book.gif
PMПисьмо на e-mail пользователюСайт пользователяICQ
Top
whisk
Быстрая цитата




Уважаемый Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 975
Регистрация: 29.03.2005
Репутация: 87

Место учебы: ОрёлГТУ


NEFFboy
если бы эта прога была написана красиво и прилично, то был ли бы смысл на нее смотреть? их же миллион таких. хотя, уродливых еще больше, но эта по крайней мере забавная wink.gif

так её кто-нибудь скомпилировал? а то мне даже нечем sad1.gif
PMПисьмо на e-mail пользователюСайт пользователяICQ
Top
дед_мажор
Быстрая цитата




Уважаемый крутой перец
Group Icon

Профиль
Группа: Декан
Сообщений: 2405
Регистрация: 11.11.2005
Репутация: 156

Место учебы: да


Цитата (NEFFboy @ 16.03.2007 - 15:51)
дед_мажор
фраза в описании: "чтобы программа скомпилировалась, необходимо запретить использование синтаксиса C++"

чтобы программа скомпилировалась необходимо использовать нормальный компилятор. gcc со стандартными настройками кушает этот код без ошибок.
PMПисьмо на e-mail пользователю
Top
RoDen
Быстрая цитата




Уважаемый Председатель ученого совета
Group Icon

Профиль
Группа: Серый кардинал
Сообщений: 3285
Регистрация: 10.03.2005
Репутация: 248

Место учебы: политех


а мне вот вспоминаются шахматы на яваскрипт, играющие на уровне 1 разряда и весящие 5 килобайт smile.gif
в свое время хотел их в чат прикрутить
PM
Top
NEFFboy
Быстрая цитата




Кандидат наук
*****

Профиль
Группа: Пользователи
Сообщений: 537
Регистрация: 5.01.2007
Репутация: 25

Место учебы: ПТУ


Цитата (whisk @ 16.03.2007 - 16:57)
так её кто-нибудь скомпилировал?

скомпилировал это хозяйство Borland C++ Compiler 5.5 c кучей warning'ов...
PMПисьмо на e-mail пользователюСайт пользователяICQ
Top
дед_мажор
Быстрая цитата




Уважаемый крутой перец
Group Icon

Профиль
Группа: Декан
Сообщений: 2405
Регистрация: 11.11.2005
Репутация: 156

Место учебы: да


NEFFboy
воистину сотонинский компилятор.
PMПисьмо на e-mail пользователю
Top
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
 
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:o  :D  :rolleyes:  :cry2: 
:unsure:  :cry:  :angry:  :bleh: 
:dev:  :flowers:  :fool:  :old: 
:shook:  :angel:  :wor:  :rotfl: 
:kov:  :chair:  :friends:  :wub: 
       
Показать всё


 
Опции сообщения  Включить смайлики?
 Включить подпись?
 Использовать AJAX?

Опции темы Ответ в темуСоздание новой темыСоздание опроса

 

Студенческий клуб ostudent.ru и его создатели не несут ответственности за достоверность самостоятельно размещаемой посетителями сайта информации и не могут подтвердить или опровергнуть её.

Этот сайт защищен «Site Guard»