2009-10-09 18 views
6

Objektif C Kodu Yarışması 1988 girişi olan aşağıdaki kodu yürütmeye çalışıyorum.K & R C ile ANSI C nasıl dönüştürülür?

#define _ -F<00||--F-OO--; 
int F=00,OO=00;main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO() 
{ 
      _-_-_-_ 
     _-_-_-_-_-_-_-_-_ 
    _-_-_-_-_-_-_-_-_-_-_-_ 
    _-_-_-_-_-_-_-_-_-_-_-_-_-_ 
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 
    _-_-_-_-_-_-_-_-_-_-_-_-_-_ 
    _-_-_-_-_-_-_-_-_-_-_-_ 
     _-_-_-_-_-_-_-_ 
      _-_-_-_ 
} 

Bu kod giriş açıklamasından, kendi alanına bakarak pi hesaplıyor. Kodu değiştirmeden başarıyla derledim. Ama ben idam ettiğimde, bana 0.25 bir değer veriyor, beklediğim şey 3.14. Kod açıklaması, K & R C'de olduğunu ve ANSI C'de bazı değişiklik olmadan düzgün çalışmadığını belirtir. Sanırım düzgün bir şekilde yürütmek için bu değişikliği yapmak zorundayım. K & R C ile daha önce hiç bir deneyimim yok. Yani, birisi yukarıdaki kodu ANSI C'ye dönüştürmeme veya varsa problemlere işaret etmeme yardımcı olabilir. Bunu yapmak için Microsoft Visual Studio 2008 kullanıyorum.

+7

, neden? Bunu en az yararlı olarak göremiyorum. Engelli yarışmalar, ne kadar "zeki" olabileceğinizi göstermenin bir yolu olarak iyidir, ancak gerçek dünyada gerçekten çok az ilgileri vardır. Tavsiyem, gerçek bir problem bulup çöz. – paxdiablo

+1

@Pax: + Inf, $ DEITY :) – Jacob

+1

@Pax: -Inf sonsuz küfür için :) – DVK

cevap

10

GCC'niz varsa, '-traditional-cpp' bayrağıyla derleyin.

Fark, '-_' sırasının '- -F<00' veya '--F<00' olarak çevrilmiş olup olmadığıdır.

Tek boşluk çok önemli: çift olumsuzlama ve ön azalma arasındaki fark.

+1

ile ilgilidir. Ne yazık ki, OP derleyicilerini Son cümle, çoğumuz (kendimi birkaç saniye öncesine kadar dahil) okumayı bıraktı. VS2008 kullanıyor. –

+0

Şapka kapalı, efendim. Yakınsama sürecini gördüm (program kendi alanında "gerçekten çalışmıyor", iterasyonlar sadece sevimli bir şekilde düzenleniyor), ama bu ayrıntı yorumlamada - wow! – mjv

+0

@Chris: VS2008'i gördüm; Bende yok. VS2008'in -traditional-cpp'nin eşdeğerini destekleyeceğinden şüphelerim var. Bu yüzden 'önden' koydum. –

2

değişim hattı: $ ilah aşkına

#define _ F-->00 || F-OO--; 
İlgili konular