Чем это скомпилять и как?

juliuzz

#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);
ifs[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(stx=st,y=st; err=0,g=*xx>st?*(x-1):*st); x++)
if(g!=' '||*(y-1)>47&&*(y-1)<58&&*(x+1)>47&&*(x+1)<58)*(y++)=(g?*x:0);
if (printferr?"Error!\n\n":"%g\n\n" main(st, 0, y-st-2, 0 goto l1;
}

bleyman

msvc компилирует.

Helga87

не забудь добавить, что только восьмой
//вроде

nikita270601

gcc 3.2.2 компилирует, хотя и с варнингами («return type of `main' is not `int'» и «the `gets' function is dangerous and should not be used»).

juliuzz

блин
а в 4-ом gcc "main is not int" уже ошибка, а не варнинг

Alexander08

что делает это чудо?

juliuzz

это типа калькулятор
2all
может можно какие-нить опции включить в gcc4, чтоб собралось?

Helga87

собирай в vs 2005, какие проблемы?

juliuzz

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

yolki

по стандарту вроде как main нельзя нигде вызывать, а тут рекурсия на main..

Helga87

на мне установлена студия. Заходи по rdesktop и компиль

juliuzz

на мне установлена студия. Заходи по rdesktop и компиль
блин
совсем из башки вылетело
домой приду - так и сделаю

oleg701

А зачем тебе именно этот калькулятор?
У меня вроде сохранилась целая коллекция калькуляторов, из них некоторые со вполне вменяемым кодом.
Наверняка в сети валяется.

okunek

компилируй как с-код, а не как с++ и будет тебе щастье и в гцц

juliuzz

этот вроде как самый маленький
если честно то кроме как для баловства он мне нахрен не сдался

oleg701

А, самый маленький помню был.
Мож это он и есть.
Приду домой, гляну

2354570

А вот и он
http://dklab.ru/chicken/nablas/10.html
Автор алгоритма - Дмитрий Мельник. Если я не ошибаюсь, в настоящий момент он аспирант ВМиК.
Кстати, сам Дима Котеров тоже ВМиК заканчивал

karkar

> Автор алгоритма - Дмитрий Мельник. Если я не ошибаюсь, в настоящий момент он аспирант ВМиК.
И по иронии судьбы занимается компиляторами. В частности, улучшением gcc.

vall

не знал что он такой извращенец
у меня gcc 4.1.2 собрал, с варнингами но собрал.

juliuzz

у меня gcc 4.1.2 собрал, с варнингами но собрал.
и я гццом собрал
с -xc

Restoration

вроде, я это 5ым VC++ компилил, когда нашел сайт набл
хотя не гарантирую
стильная штука
Оставить комментарий
Имя или ник:
Комментарий: