PDA

نسخه کامل مشاهده نسخه کامل : کمک در تبدیل کد ++C به C



street king
04-12-2014, 20:28
سلام من سورس رسم بیضی رو با هزار دردسر از اینترنت گرفتم که به زبان ++C که تو نرم افزار code vision avr که از زبان C استفاده میکنه جواب نمی ده اگه کسی می تونه این کد رو به زبان C تبدیل کنه
نمی دونم معادل توابع اش تو C چی میشه
لطفا کمک کنید
اینم سورس ++C اش:



// rasmeh bayzi ba komakeh pixeh rabeteh riazi






#include<conio.h>


#include<iostream.h>


#include<stdio.h>


#include<GRAPHICS.H>






void main ()


{


/* request auto detection */


int driver = DETECT, mode=0;






/* initialize graphics mode */


initgraph(&driver, &mode, "");






int xc=200,yc=200,rx=8,ry=6,x[600],y[600];


int p1[600],p2[600],k;






k=0;


x[k]=0;


y[k]=ry;


p1[0]=(ry^2)-(rx^2)*(ry)+(1/4*(rx^2));






while ( (2*(ry^2)*x[k+1])>=(2*rx)*y[k+1])


{


if (p1[k]<0)


{


x[k]+=1;


p1[k+1]=p1[k]+2*ry*x[k+1]+(ry^2);


}// end if






if (p1[k]>0)


{


x[k]+=1;


y[k]-=1;


p1[k+1]=p1[k]+(2*(ry^2))*x[k+1]-(2*(rx^2))*y[k+1]+(ry^2);


}// end if






putpixel(xc+x[k],yc+y[k],RED);


k++;






}//end while p1[k]






getch();






k=0;


p2[k]=((ry^2)*(x[k]+(1/2))^2)+((rx^2)*(y[k]-1)^2)-(rx^2)*(ry^2);






while (y==0)


{


if (p1[k]>0)


{


y[k]-=1;


p2[k+1]=p2[k]-(2*(rx^2)*y[k+1])+(rx^2);


}// end if






if (p1[k]>0)


{


x[k]+=1;


y[k]+=1;


p2[k+1]=p2[k]+(2*(ry^2)*x[k+1])-(2*(rx^2)*y[k+1])+(rx^2);


}// end if






k++;






putpixel(xc+x[k],yc+y[k],RED);






}//end while p2[k]






getch();


restorecrtmode();


clrscr();






}//end main



اینم فایل zip اش:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Msba
04-12-2014, 22:23
کد شما آنقدر نکته ی تبدیلی ندارد. فقط از نظر ساختاری باید متغیر ها را ببرید در بالاترین نقطه بلاک تعریف و سپس پایین استفاده کنید مثلا این دو خط باید برود بالا:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که می شود:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اما مشکل شما تبدیل نیست. باید تغییر پلتفرم بدهید یعنی به جای initgraph باید مثلا چنین چیزی بنویسید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یا به جای getch :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یا به جای putpixel :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یا به جای clrscr:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
تا انتها.
در اصطلاح به تغییر پلتفرم در یک کد "پورت کردن" گویند.
پس کدتان تبدیل c++ به c نیست. بلکه پورت کردن است.

موفق باشید.

street king
04-12-2014, 23:30
دوست عزیز خیلی ممنون از شما به خاطر راهنماییتون واقعا کارت درسته
من تا به حال این اصطلاح پورت کردنو نشنیده بودم :n26:

ولی در کل تشکر میرم روش کار میکنم خدا کنه جواب بده