مرسی صدرا جان از برنامه ای که گذاشتی ولی من یه دفتر چه تلفن به زبان c میخوام ولی این c++در ضمن اساتید بگن بهترین کامپایلر سی کدومه که مشکلات کمتری داشته باشه
Printable View
مرسی صدرا جان از برنامه ای که گذاشتی ولی من یه دفتر چه تلفن به زبان c میخوام ولی این c++در ضمن اساتید بگن بهترین کامپایلر سی کدومه که مشکلات کمتری داشته باشه
سعيد خان به روي چشم.... ببينم چي كار مي تونم بكنم........
avaleh يه كارهايي انجام شده ولي باگ داريم حل بشه ميزارم رو..............
silver_c عزيز گوش فرا دهيد...
فرق C با C++ فقط در شي گرائي Cpp است همين و بس اگه كلاس هارو خذف كني تبديل به برنامه C مي شود........
اما در مورد بهترين كامپايلر خانواده سي، بستگي به كاري كه مي خواي انجام دهيد داره...
اگه به دنبال برنامه نويسي PC يا نرم افزار كامپيوتري هستيد C-Sharp يا java بهترين است كه كاملا شي گراست اصلا اجازه نوشتن برنامه ساخت يافته را نمي دهد.........
اما اگر به دنبال كار با ميكروكنترلر ها هستي و سر و كار باساخت سخت افزار ها و كنترل انها داريد بهترين كامپايلر Cpp است كه هم شي گرا هم ساخت يافته است(اگر علت را خواستار شدي بگو تا توضيح دهم.....)
اما اگر به دنبال هك با نوشتن سيستم عاملي فقط C خالي.... همين و بس....
بدين علت است كه هنوز هم با پيشرفت هاي C-sharp و java هنوز C و Cpp با همان قدرت و محبوبيت پا برجاست و به راه خود ادامه مي دهد.........
قربون همتون صدرا
يا حسين
ولی صدرا جان بعضی کدها در c++ هستند که ما در c نمیتونیم از اونها استفاده کنیمنقل قول:
فرق C با C++ فقط در شي گرائي Cpp است همين و بس اگه كلاس هارو خذف كني تبديل به برنامه C مي شود........
امکانش هست این برنامه رو به زبان c به من بدی یا نه؟
:3:
خوب من هم يه سئوال داشتم.دستور system("cls") ; يا system("pause"); چي کار مي کنه؟
اين دستورات رو من توي يه برنامه که با فايل و به زبان سي پلاس پلاس نوشته شده بود ديدم.
و مي خواستم بدونم براي چي توي برنامه استفاده مي کنيم واگر استفاده نکنيم ممکنه برنامه خطا بده؟
دستور سيستم تا جايي که من فهميدم واسه اينه که دستورات داس را توي محيط سي اجرا بکنه .
کلآ مي خواستم بدونم منطقآ چه عملي رو انجام مي دن؟ چون هر عملي توي اين دستور اجرا بشه نشون داده نميشه.
هر کي بلده خواهش مي کنم جواب بده.
ممنون.
من درست متوجه نشدم اگه برنامه رو بذاری شاید یه کاری بکنمنقل قول:
اما Cls برای پاک سازی صفحه نمایش می باشد و دستور pause را من ندیده بودم برنامه رو بذاری بهتره........
سلام
alaveh عزیز من که نتونستم اون چیزی که دارم به عنوان الگوریتم ژنتیک را حلش کنم به این نتیجه رسیدم که الگوریتم من اشتباه است
لطفا الگوریتم ژنتیک را برامون بذار
یه کلاس براتون میزارم که یسری مشکلات رو حل می کنه..........
String Class
قربون همتون صدراکد:// String Class.cpp : Defines the entry point for the console application.
// Programmer SADRA
#include CSTRING_H
#define CSTRING_H
#include <iostream>
class String {
friend ostream &operator<<(ostream &, const Array &);
friend istream &operator>>(iostream &, Array &);
public:
String(const char * = " " );
String(const String &);
~String();
const String &operator=(const String &);
const String &operator+=(const String &);
bool operator!(); //is empty ?
bool operator==();//S1==S2
bool operator<();//S1<S2
// S1 != S2
bool operator !=(const String & right)const
{return !(*this == right);}
// S1>S2
bool operator <(const String &right)const
{return right < *this);}
//S1<=S2
bool operator <=(const String &right)const
{return !(right <*this);}
bool operator >=(const String &right)const
{return !(*this < right);}
char &operator[](int);//subscript operator
const char &operator[](int)const;//subscript operator
String &operator(int,int);//return substring
int getLength()const;//return Length of stirng
private:
int Length;
char *Ptr;//pointer to start of string
void setString(const char *);//utility Function
};
#endif
#include <iostream>
#include <iomanio.h>
#include <string.h>
#include "cstring.h"
//convert char * to String
String::String(const char *s):length(strlen(s))
{
cout<<"conversion constructor : "<< s <<'\n';
setString(s);
}
//copy constructor
String::String(const String ©):length(copy.length)
{
cout<<"copy constructor : " << copy.sPtr<<'\n';
setString(copy.sPtr);
}
//Destructor
String::~String()
{
cout<<"Destructor : "<<sPtr<<'\n';
delete [];
}
//overload = operator ; avoide self assignment
const String &String::operator =(const String &right)
{
cout <<"opetator = called \n";
if (&right !=this) {
delete [] sPtr;
length=right.length;
setString(right.sPtr);
}
else
cout<<"Attempted assignment of a string to itself\n";
return *this;
}
//concatenate right operand to this object and store in this object
const String &String::operetor+=(const String &right)
{
char *tempPtr = sPtr;
length +=right.length;
sPtr=new char[lenght+1];
assert(sPtr != 0);
strcopy(sPtr,tempPtr);
strcpy(sPtr,tempPtr);
strcat(sPtr,right.sPtr);
delete [] tempPtr;
return *this;
}
//empty or not?
bool String::operator !()const
{
return length==0;}
//is 2 string equl...?
bool String::operator ==(const String &right) const
{
return strcmp(sPtr,right.sPtr)==0;}
//return reference to a character in a string as a lvalue
char &String::operator [](int subscript)
{
//first test for subscript out of range
assert(subscript >=0 && subscript < length);
return sPtr[subscript];
}
//return of substring beginning at index and of length subLength as a reference to a string object.
String &String::operator () (int index,int subLength)
{
//ensure index is in range and substring length
assert(index>=0 && index < length && subLength>=0);
String *subPtr=new String;//empty string
assert (subPtr != 0);//ensure new string allocated
//determine length of substring
if ((subLength==0) || (index+subLength>length))
subPtr->Length=length-index+1;
else
subPtr->length=subLength+1;
//
delete subPtr->sPtr;
subPtr->sPtr=new char[subPtr->length];
assert(subPtr->sPtr !=0 );//
//
strncpy(subPtr->sPtr,&sPtr [index],subPtr->length);
subPtr->sPtr[subPtr->length]='\0';
return *subPtr;
}
//return String length
int String::getLength() const{ return length;}
//utility function to be called by constructors and assignment operator
void String::setString(const char * string2)
{
sPtr=new char [length +1];
assert(sPtr!=0);
strcpy(sPtr,string2);
}
//overloading output operator
ostream &operator<<(ostream &output, const String &s)
{
output << s.sPtr;
return output;
}
//overloading input operator
istream &operator>>(istream &input,String &s)
{
char temp [1000];
input >> setw(100)>>temp;
s=temp;
return input;
}
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
یاحسین
Tetris Game
قربون همتون صدراکد://Programmer SADRA
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<process.h>
#include<stdlib.h>
#include<dos.h>
int mark(int,int,int,int);
int num_fix=0,g=1;
int lev[501],ro[501];
void main()
{
int d=DETECT,m;
initgraph(&d,&m,"c:\\tc\\bgi");
for(int q=0;q<500;q++)
{lev[q]=0;ro[q]=0;}
int x,y;
x=getmaxx()/2;
y=getmaxy()/2;
int draw=1,del=0;
union REGS ii,oo;
int perm=1;
rectangle(x-161,y-221,x+161,y+221);
rectangle(x-163,y-223,x+163,y+223);
int room1,room2,room3,room4,level1,level2,level3,level4;
int andom,style,tabby=0;
int time,clr;
randomize();
for(time=500;time>=100;time-=10)
{
if(time==100)
time=110;
andom=random(7);
switch(andom)
{
case 0:
style=1;room1=8;room2=9;room3=8;room4=9;level1=1;level2=1;level3=2;level4=2;clr=1;break;
case 1:
style=2;room1=8;room2=8;room3=8;room4=8;level1=1;level2=2;level3=3;level4=4;clr=2;break;
case 2:
style=3;room1=8;room2=9;room3=8;room4=9;level1=1;level2=2;level3=2;level4=3;clr=3;break;
case 3:
style=4;room1=8;room2=9;room3=8;room4=9;level1=2;level2=1;level3=3;level4=2;clr=4;break;
case 4:
style=5;room1=8;room2=9;room3=10;room4=9;level1=1;level2=1;level3=1;level4=2;clr=7;break;
case 5:
style=6;room1=8;room2=8;room3=8;room4=9;level1=1;level2=2;level3=3;level4=1;clr=6;break;
case 6:
style=7;room1=8;room2=8;room3=8;room4=7;level1=1;level2=2;level3=3;level4=1;clr=5;break;
}
int ret=0;
int pet=0;
tabby=0;
for(int loop=0;loop<25;loop++)
{
loop--;
ret=mark(level1,room1,draw,clr);
if(ret==1)
pet=1;
ret=mark(level2,room2,draw,clr);
if(ret==1)
pet=1;
ret=mark(level3,room3,draw,clr);
if(ret==1)
pet=1;
ret=mark(level4,room4,draw,clr);
if(ret==1)
pet=1;
if(pet==1)
{loop=25;goto skip;}
delay(time);
if(level1<22&&level2<22&&level3<22&&level4<22)
{
ret=mark(level1,room1,del,clr);
if(ret==1)
pet=1;
ret=mark(level2,room2,del,clr);
if(ret==1)
pet=1;
ret=mark(level3,room3,del,clr);
if(ret==1)
pet=1;
ret=mark(level4,room4,del,clr);
if(ret==1)
pet=1;
if(pet==1)
{loop=25;goto skip;}
level1++;
level2++;
level3++;
level4++;
}
else
{
loop=25;
goto skip;
}
if(kbhit())
{
//interrupt issue to scan the ascii ans scan codes of the key hit
ii.h.ah=0;
int86(22,&ii,&oo);
//if esc key has been pressed
if(oo.h.ah==1)
{
closegraph();exit(0);
}
//if right key has been pressed
if(oo.h.ah==77)
{
for(int num=500;num>=0;num--)
{
if(level1==lev[num]-1&&room1+1==ro[num]||level2==lev[num]-1&&room2+1==ro[num]||level3==lev[num]-1&&room3+1==ro[num]||level4==lev[num]-1&&room4+1==ro[num]||level1==lev[num]&&room1+1==ro[num]||level2==lev[num]&&room2+1==ro[num]||level3==lev[num]&&room3+1==ro[num]||level4==lev[num]&&room4+1==ro[num])
perm=0;
}
if(room1<16&&room2<16&&room3<16&&room4<16&&perm==1)
{room1++;room2++;room3++;room4++;}
perm=1;
}
//if left key has been pressed
if(oo.h.ah==75)
{
for(int num=500;num>=0;num--)
{
if(level1==lev[num]-1&&room1-1==ro[num]||level2==lev[num]-1&&room2-1==ro[num]||level3==lev[num]-1&&room3-1==ro[num]||level4==lev[num]-1&&room4-1==ro[num]||level1==lev[num]&&room1-1==ro[num]||level2==lev[num]&&room2-1==ro[num]||level3==lev[num]&&room3-1==ro[num]||level4==lev[num]&&room4-1==ro[num])
perm=0;
}
if(room1>1&&room2>1&&room3>1&&room4>1&&perm==1)
{room1--;room2--;room3--;room4--;}
perm=1;
}
//if upper key has been pressed
if(oo.h.ah==72)
{
if(room1<16&&room2<16&&room3<16&&room4<16&&room1>1&&room2>1&&room3>1&&room4>1)
{
if(tabby==0)
switch(style)
{
case 1:break;
case 2:room1--;room3++;room4+=2;level1++;level3--;level4-=2;break;
case 3:room1+=2;level1++;level3++;break;
case 4:room2-=2;level2++;level4++;break;
case 5:room1++;level1--;break;
case 6:room2++;room3--;level3-=2;break;
case 7:room2--;room3++;level3-=2;break;
}
else if(tabby==1)
switch(style)
{
case 1:break;
case 2:room1++;room3--;room4-=2;level1--;level3++;level4+=2;break;
case 3:room1-=2;level1--;level3--;break;
case 4:room2+=2;level2--;level4--;break;
case 5:room4--;level4--;break;
case 6: room1++;room3++;level1++;level3++;level2--;level4--;break;
case 7: room3-=2;level1++;level3--;break;
}
else if(tabby==2)
switch(style)
{
case 1:break;
case 2:room1--;room3++;room4+=2;level1++;level3--;level4-=2;break;
case 3:room1+=2;level1++;level3++;break;
case 4:room2-=2;level2++;level4++;break;
case 5:room3--;level3++;break;
case 6:room2--;room4++;level4+=2;break;
case 7:room4++;room3--;level3+=2;break;
}
else if(tabby==3)
switch(style)
{
case 1:break;
case 2:room1++;room3--;room4-=2;level1--;level3++;level4+=2;break;
case 3:room1-=2;level1--;level3--;break;
case 4:room2+=2;level2--;level4--;break;
case 5:room1--;room3++;room4++;level1++;level3--;level4++;break;
case 6:room1--;room4--;level1--;level2++;level3++;level4--;break;
case 7:room2++;room3+=2;room4--;level1--;level3++;break;
}
tabby++;
if(tabby==4)
tabby=0;
}
}
//if lower key has been pressed
if(oo.h.ah==80)
{
getch();
}
}//kbhit
skip:
if(loop==25)
{
mark(level1,room1,12,clr);
mark(level2,room2,12,clr);
mark(level3,room3,12,clr);
mark(level4,room4,12,clr);
mark(level1,room1,3,clr);
mark(level2,room2,3,clr);
mark(level3,room3,3,clr);
mark(level4,room4,3,clr);
}
}
}
}
/*
level
1 room 1,2,3....16
2
3
:
:
22
*/
int mark(int level,int room,int col,int b_clr)
{
int x,y,num,toll[22],gon;
x=getmaxx()/2;
y=getmaxy()/2;
g=1;
for(int r=0;r<22;r++)
toll[r]=0;
if(col==12)
{col=1;
goto sk;}
for(num=500;num>=0;num--)
if(level==lev[num]-1&&room==ro[num])
{
if(level<=1)
{cleardevice();setcolor(14);outtextxy(x-50,y,"lost in height");sleep(3);closegraph();exit(0);}
col=3;
}
sk:
if(col==1)
{
setfillstyle(SOLID_FILL,b_clr);
bar(x-160+1+20*(room-1),y-220+1+20*(level-1),x-140-1+20*(room-1),y-200-1+20*(level-1));
}
else if(col==0)
{
setfillstyle(SOLID_FILL,0);
bar(x-160+1+20*(room-1),y-220+1+20*(level-1),x-140-1+20*(room-1),y-200-1+20*(level-1));
}
else
{
lev[num_fix]=level;
ro[num_fix]=room;
gotoxy(3,3);
cout<<lev[num_fix]<<" "<<ro[num_fix]<<" .\n";
num_fix++;
sound(300);
delay(30);
nosound();
g=5;
}
//check
for(num=500;num>=0;num--)
{
switch(lev[num])
{
case 1:toll[0]++;break; case 2:toll[1]++;break; case 3:toll[2]++;break; case 4:toll[3]++;break;
case 5:toll[4]++;break; case 6:toll[5]++;break; case 7:toll[6]++;break; case 8:toll[7]++;break;
case 9:toll[8]++;break; case 10:toll[9]++;break; case 11:toll[10]++;break; case 12:toll[11]++;break;
case 13:toll[12]++;break; case 14:toll[13]++;break; case 15:toll[14]++;break; case 16:toll[15]++;break;
case 17:toll[16]++;break; case 18:toll[17]++;break; case 19:toll[18]++;break; case 20:toll[19]++;break;
case 21:toll[20]++;break; case 22:toll[21]++;break;
}
}
gotoxy(1,1);
for(gon=0;gon<22;gon++)
{
cout<<toll[gon]<<endl;
if(toll[gon]==16)
{
gotoxy(5,5);
cout<<gon+1;
for(num=500;num>=0;num--)
{
if(lev[num]==gon+1)
{
lev[num]=0;ro[num]=0;
}
}
for(num=500;num>=0;num--)
{
if(lev[num]<=gon&&lev[num]!=0)
{
lev[num]++;
}
}
cleardevice();
setcolor(WHITE);
rectangle(x-161,y-221,x+161,y+221);
rectangle(x-163,y-223,x+163,y+223);
setfillstyle(SOLID_FILL,RED);
for(num=500;num>=0;num--)
{
bar(x-160+1+20*(ro[num]-1),y-220+1+20*(lev[num]-1),x-140-1+20*(ro[num]-1),y-200-1+20*(lev[num]-1));
}
}
}
for(r=0;r<22;r++)
toll[r]=0;
//
if(g==5)
return 1;
return 0;
}
یا حسین
با سلام و تشکر فراوان از سورس کد tetris. من نمی دونم چرا با visual c++ نمی تونم کامپایلش کنم. فایل های include شده را نمی شناسه؟؟؟؟
سلام،
باعنايت به تعريف initgraghدر مسير tc، لطفا"جهت كامپايل كردن برنامه در ++vc راهنمائي كنيد.
باتشكر
نقل قول:
خوب معلومه!
چون اين برنامه براي Turbo C نوشته شده و شما به راحتي مي تونين تو Borland c هم استفادش کنين ولي تو VC نميشه در ضمن اين برنامه براي Dos نوشته شده و دستور initgraph هم براي تنظيم کردن برنامه براي حالت گرافيکي هستش