برنامه ای که دو ماتریس (3 در 4) و (4 در 5) را در هم ضرب کند
برنامه ای که دو ماتریس (3 در 4) و (4 در 5) را در هم ضرب کند
کد PHP:
#include <stdio.h>
#include <conio.h>
void main()
{
int i,j,k;
char matrixA[3][4], matrixB[4][5], matrixC[3][5];
clrscr();
for (i=0;i<3;i++)
for (j=0;j<4;j++)
{
printf("A[%d,%d] = ", i+1, j+1);
scanf ("%d", &matrixA[i][j]);
}
for (i=0;i<4;i++)
for (j=0;j<5;j++)
{
printf("B[%d,%d] = ", i+1, j+1);
scanf ("%d", &matrixB[i][j]);
}
for (i=0;i<3;i++)
for (j=0;j<5;j++)
{
matrixC[i][j]=0;
for (k=0;k<4;k++)
matrixC[i][j]+= matrixA[i][k]*matrixB[k][j];
}
clrscr();
for (i=0;i<3;i++)
{
for (j=0;j<5;j++)
printf("%5d ", matrixC[i][j]);
printf("\n\n");
}
getch();
}
برنامه ای که یک عدد لاتین را خوانده و آن را به فارسی تبدیل کند
برنامه ای که یک عدد لاتین را خوانده و آن را به فارسی تبدیل کند
کد PHP:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
void main()
{
long int n;
ldiv_t d;
int level=0;
int num,i;
char t1000[4][20]={"","hezar","milion","miliard"};
char t100[10][20]={"","yeksad","devist","sisad","chaharsad","pansad",
"sheshsad","haftsad","hashtsad","nohsad"};
char t10[10][20]={"dah","yazdah","davazdah","sizdah","chahardah","panzdah",
"shanzdah","defdah","hejdah","noozdah"};
char t20[10][20]={"","","bist","si","chehel","panjah",
"shast","haftad","hashtad","navad"};
char t1[10][20]={"","yek","do","seh","chahar","panj",
"shesh","haft","hasht","noh"};
char s[80],t[80],u[80];
clrscr();
printf ("Please enter a number : ");
scanf ("%ld", &n);
if (n==0)
strcpy(s,"Sefr");
else
{
strcpy(s,"");
do
{
d = ldiv(n,1000L);
num=(int) d.rem;
n=d.quot;
strcpy(t,t100[num / 100]);
i=num % 100;
if ((i >= 10) && (i <= 19))
{
if (t[0])
strcat(t," o ");
strcat(t,t10[i-10]);
}
else
{
if ((t[0]) && (i >= 20))
strcat(t," o ");
strcat(t,t20[i / 10]);
if (i % 10)
{
if (t[0])
strcat(t," o ");
strcat(t,t1[i % 10]);
}
}
if (t[0])
{
if (s[0])
strcpy(u," o ");
else
strcpy(u,"");
strcat(u,s);
strcpy(s,t1000[level]);
strcat(s,u);
strcat(t,s);
strcpy(s,t);
}
level++;
} while (n);
}
printf ("%s",s);
getch();
}
پیاده سازی پشته با لیست پیوندی
پیاده سازی پشته با لیست پیوندی
کد PHP:
#include <iostream>
#include <conio>
struct stack
{
int value;
struct stack *top;
};
void insert(struct stack *,int);
int remove(stack *,bool*);
void print(stack *);
struct stack sample;
int main()
{
char ch;
bool flag=0;
int item,d;
while(1)
{
clrscr();
gotoxy(45,23);
cout<<"*** Writting By Karma ***";
gotoxy(1,1);
cout<<"\n\nWhat do you want to do?\n\n";
cout<<"1-insert\n2-remove\n3-Print\n4-Exit\n\n";
cout<<"What is your selection:";
cin>>ch;
switch(ch)
{
case'1':
clrscr();
cout<<"\n\nPlease neter a number to add:";
cin>>item;
insert(&sample,item);
break;
case'2':
d=remove(&sample,&flag);
if(flag==1)
{
clrscr();
cout<<"\n\nYour deleted number is:";
cout<<d;
getch();
}
break;
case'3':
print(&sample);
getch();
break;
case'4':
return 0;
}
}
getch();
return 0;
}
//***********************************************
void insert(struct stack *p,int item)
{
struct stack*temp;
temp=new struct stack;
temp->value=item;
if(p==0)
p=temp;
else
{
temp->top=p->top;
p->top=temp;
}
}
//***********************************************
int remove(stack *p,bool*flag)
{
int item;
struct stack*temp;
temp=p->top;
if(p==0||p->top==0)
{
clrscr();
cout<<"\nVoid deletion";
getch();
*flag=0;
}
else
{
temp=p->top;
item=temp->value;
p->top=temp->top;
*flag=1;
}
delete temp;
return item;
}
//***********************************************
void print(struct stack*p)
{
int i=0;
struct stack*temp;
temp=p;
while(temp!=0)
{
if(i!=0)
cout<<" <- "<<temp->value;
temp=temp->top;
i++;
}
}
پاسخ : پروژه هاي برنامه نويسي
ماشین حساب گرافیکی که جمع و ضرب و تفریق اعداد تا 128 رقم رو میتونه خیلی سریع حساب کنه ( ماشین حساب ویندوز تا 32 رقم اجازه میده ) .
کد این برنامه رو به صورت خیلی ساده و با استفاده از آرایه ها نوشتم. از تابع ضرب اون برای حساب کردن فاکتوریل اعداد بزرگ نیز میشه استفاده کرد. و برای قسمت گرافیکی آن به ناچار از Turbo C++ 3.0 استفاده کردم.
کد PHP:
#include <graphics.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <dos.h>
#define ESC 0x1b
#define EXIT 120
void draw(void);
void getArray( int[],char& );
void printArray( int[] );
void reverseArray( int[] );
void plus(int[], int[], int[]);
void minus(int[], int[], int[]);
void multiple(int[], int[], int[] );
void initgraph();
void animate( char );
void wellcome(void);
void error(void);
int main(void)
{
char func='n';
int value1[128] ,
value2[128] ,
result[128] = {0};
initgraph();
wellcome();
draw();
getArray( value1, func );
reverseArray( value1 );
getArray( value2, func );
reverseArray( value2 );
switch( func )
{
case '+':
plus(value1, value2, result);
break;
case '-':
minus(value1, value2, result);
break;
case '*':
multiple(value1, value2, result);
break;
default: cout << "Oh sorry! You made a mistake.";
}
printArray ( result );
if(getch() == ESC )
{
cleardevice();
main();
}
closegraph();
return 0;
}
/*=================Draw===========*/
void draw (void)
{
int x = getmaxx();
int y = getmaxy();
settextstyle(2,HORIZ_DIR,4);
setfillstyle(SOLID_FILL, LIGHTBLUE);
bar(x / 2 - 210, 50, x / 2 + 210, 270);
setfillstyle(SOLID_FILL, WHITE);
bar(x / 2 - 200, 60, x / 2 + 200, 155);
setcolor(BLACK);
line(125,120,x / 2 + 190, 120);
line(125,125,x / 2 + 190, 125);
setfillstyle(SOLID_FILL, BLUE);
setcolor(BLUE);
int Y = 165;
for ( int i = 0; i < 3; i++)
{
int X = 220;
for ( int j = 0; j < 4; j++)
{
bar3d(X,Y,X + 25,Y + 25,3,1);
X += 35;
if ( j == 2 )
X += 15;
}
Y += 35;
}
bar3d(375,165,410,260,3,1);
setcolor(WHITE);
outtextxy(230,172,"1");
outtextxy(265,172,"2");
outtextxy(300,172,"3");
outtextxy(350,172,"+");
outtextxy(230,207,"4");
outtextxy(265,207,"5");
outtextxy(300,207,"6");
outtextxy(350,207,"-");
outtextxy(390,207,"=");
outtextxy(230,242,"7");
outtextxy(265,242,"8");
outtextxy(300,242,"9");
outtextxy(350,242,"x");
}
/*======= initgraph ===============*/
void initgraph()
{
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "C:\\tc\\bgi\\");
}
/*=====================getArray===============*/
void getArray( int value1[], char& func )
{
int xpos = 115, ypos = 65;
if( func != 'n' ) ypos += 3 * textheight("1");
for ( int i = 0; i<128; i++ )
value1[i] = -1;
int digit = 0;
char c;
char* cc;
while(digit < 128)
{
setcolor(BLUE);
c = getch();
animate(c);
if ( c == '+' )
{
func = '+';
outtextxy(125,65 + 2 * textheight("1"),"+");
return;
}
else if ( c == '-' )
{
func = '-';
outtextxy(125,65 + 2 * textheight("1"),"-");
return;
}
else if ( c == '*' )
{
func = '*';
outtextxy(125,65 + 2 * textheight("1"),"x");
return;
}
else if ( (int)c == 13 )
{
return;
}
else if ( c == ESC )
{
cleardevice();
main();
}
else if ( c == EXIT )
{
exit(0);
}
else
value1[digit++] = c - 48;
cc[0] = c;
cc[1] = '\0';
if( digit == 65 )
{
xpos = 115;
ypos += textheight("1");
}
xpos += textwidth("1");
outtextxy(xpos,ypos,cc);
}
return;
}
/*===================printArray=======================*/
void printArray( int value[])
{
int digit = 0, xpos = 115, ypos = 130;
char* cc;
cc[1] = '\0';
char c;
for ( digit = 0; digit < 128 && value[digit] == 0; digit++)
{
}
if ( digit == 127 )
outtextxy(115 + textwidth("1"),130,"0");
for(int count = 0 ; digit < 128; digit++,count++)
{
c = value[digit] + 48;
cc[0] = c;
xpos += textwidth("1");
if ( count == 65 )
{
ypos += textheight("1");
xpos = 121;
}
outtextxy(xpos,ypos,cc);
}
return;
}
/*===================plus=============================*/
void plus(int value1[], int value2[], int result[])
{
for ( int i = 127; i >= 0 && value1[i] >= 0; i-- )
result[i] += value1[i];
for (i = 127; i >= 0 && value2[i] >= 0; i-- )
result[i] += value2[i];
for ( i = 127; i >= 0; i-- )
{
if ( (result[1] / 10) + result[0] > 9 )
error();
if ( result[i] > 9 )
{
result[i-1] += result[i] / 10;
result[i] %= 10;
}
}
}
/*====================reverseArray===============*/
void reverseArray( int a[] )
{
int size = 127, temp;
for ( int i = 0; i < 128; i++ )
{
if ( *(a + i) == -1 )
{
size = i - 1;
break;
}
else
continue;
}
for ( i = 0; i <= size; i++ )
{
temp = *(a + size - i);
*(a + size - i) = *(a + 127 - i);
*(a + 127 - i ) = temp;
}
return;
}
/*========================minus=======================*/
void minus(int value1[], int value2[], int result[])
{
int big;
for ( int i = 0; i < 128; i++ )
{
if ( value2[i] > value1[i] )
{
big = 2;
break;
}
if ( value1[i] > value2[i] )
{
big = 1;
break;
}
}
if ( big == 1 )
{
for ( i = 127; i >= 0 && value1[i] >= 0; i-- )
result[i] += value1[i];
for ( i = 127; i >= 0 && value2[i] >= 0; i-- )
result[i] -= value2[i];
}
if ( big == 2 )
{
for ( i = 127; i >= 0 && value2[i] >= 0; i-- )
result[i] += value2[i];
for ( i = 127; i >= 0 && value1[i] >= 0; i-- )
result[i] -= value1[i];
outtextxy(115,130,"-");
}
for ( i = 127; i >= 0; i-- )
{
if ( (result[1] / 10) + result[0] > 9 )
error();
if ( result[i] < 0 )
{
result[i] += 10;
result[i-1]--;
}
}
return;
}
/*===========================multiple=========================*/
void multiple( int value1[], int value2[], int result[] )
{
int size1 = 127, size2 = 127;
for ( int i = 127; i >= 0; i-- )
{
if ( *(value1 + i) == -1 )
{
size1 = 127 - i;
break;
}
else
continue;
}
for (i = 127; i >= 0; i-- )
{
if ( *(value2 + i) == -1 )
{
size2 = 127 - i;
break;
}
else
continue;
}
if( size1 + size2 > 129 )
error();
/* cal */
for (int j = 0; j < size2; j++)
{
for( i = 0; i < size1; i++)
*(result + 127 - i - j) += *(value1 + 127 - i ) * *(value2 + 127 - j);
}
for ( i = 127; i >= 0; i-- )
{
if ( (result[1] / 10) + result[0] > 9 )
error();
if ( result[i] > 9 )
{
result[i-1] += result[i] / 10;
result[i] %= 10;
}
}
}
/*=========== animate============*/
void animate( char ch )
{
const int x[12] = {220,255,290,220,255,290,220,255,290,340,340,340};
const int y[12] = {165,165,165,200,200,200,235,235,235,165,200,235};
char* cc;
int k;
cc[0] = ch;
cc[1] = '\0';
if ( ch == '*' ) cc[0] = 'x';
switch(ch)
{
case '1' :
case '2' :
case '3' :
case '4' :
case '5' :
case '6' :
case '7' :
case '8' :
case '9' :
k = int(ch) - 49;
break;
case '+' :
k = 9;
break;
case '-' :
k = 10;
break;
case '*' :
k = 11;
break;
default : return;
}
setfillstyle(SOLID_FILL,LIGHTBLUE);
bar(x[k], y[k] - 5, x[k] + 30, y[k] + 25);
setfillstyle(SOLID_FILL,BLUE);
bar(x[k] + 3, y[k] - 2, x[k] + 28, y[k] + 23);
delay(50);
setfillstyle(SOLID_FILL,LIGHTBLUE);
bar(x[k], y[k] - 5, x[k] + 30, y[k] + 25);
setfillstyle(SOLID_FILL,BLUE);
setcolor(BLUE);
bar3d(x[k], y[k], x[k] + 25, y[k] + 25,3,1);
setcolor(WHITE);
outtextxy(x[k] + 10, y[k] + 7,cc);
setcolor(BLUE);
}
/*======= well come ==========*/
void wellcome ( void )
{
cout<<"\n\n\n";
cout<<"\t\tWELCOME TO THE 128 DIGITS CACLULATER "<<endl;
cout<<"\n\n\n\n";
cout<<"FEW POINTS TO USE THIS CALCULATER. "<<endl<<endl;
cout<<"\n1. FIRST YOU NEED TO ENTER AN INTEGERS, THE OPERATOR THEN SECOND INTEGER. "<<endl;
cout<<"\n2. DO NOT ENTER CHARECTER INSTEAD OF INTEGER AS IT MAY CAUSE THE PROGRAM TO STOP RESPONDING."<<endl;
cout<<"\n3. TO CLEAR THE CALCULATOR AND USE AGAIN PRESS ESC"<<endl;
cout<<"\n4. TO EXIT THE PROGRAM PRESS X "<<endl<<endl;
cout<<"\n\n\n\n\n\t\t\twrite by: hossein azarpevand ";
sleep(7);
cleardevice();
}
/*========Error===================*/
void error( void )
{
setcolor(RED);
outtextxy(125,130,"Error.Result is out of range");
getch();
exit(1);
}
نمایش توابع مثلثاتی به فرم aY=Sin bX
نمایش توابع مثلثاتی به فرم aY=Sin bX
کد PHP:
#include <conio.h>
#include <graphics.h>
#include <math.h>
#include <iostream.h>
#include <dos.h>
#include <stdio.h>
void mehvar();
void mos_1(int,int,int);
void mos_2(int,int,int);
int main()
{
char num[5];
int gd=DETECT,gm;
initgraph(&gd,&gm,"");
for(int i=1;i<5;i++)
for(int j=1;j<5;j++)
for(int k=1;k<5;k++)
{
mos_1(i,j,-k);
delay(1000);
nosound();
}
getch();
return 0;
}
//*******************************
void mehvar()
{
setcolor(15);
int x0,y0;
char num;
x0=getmaxx()/2;
y0=getmaxy()/2;
line(x0-300,y0+10,x0+300,y0+10);//X
line(x0,y0-200,x0,y0+200);//Y
}
//********************
void mos_1(int s,int Y,int X)
{
char num[5];
float deg,x0=320,y0=240;
clearviewport();
mehvar();
deg=-6.28;
while(deg<=6.28)
{
setcolor(14);
switch(s)
{
case 1:
outtextxy(deg*Y*40+x0,sin(deg*X)*40+y0,".");
sprintf(num,"%d",Y);
outtextxy(10,10,num);
outtextxy(20,10,"Y=Sin ");
sprintf(num,"%d",X);
outtextxy(60,10,num);
outtextxy(80,10,"X");
break;
case 2:
outtextxy(deg*Y*40+x0,cos(deg*X)*40+y0,".");
sprintf(num,"%d",Y);
outtextxy(10,10,num);
outtextxy(20,10,"Y=Cos ");
sprintf(num,"%d",X);
outtextxy(60,10,num);
outtextxy(80,10,"X");
break;
case 3:
outtextxy(deg*Y*40+x0,tan(deg*X)*40+y0,".");
sprintf(num,"%d",Y);
outtextxy(10,10,num);
outtextxy(20,10,"Y=sin ");
sprintf(num,"%d",X);
outtextxy(60,10,num);
outtextxy(80,10,"X");
break;
case 4:
outtextxy(deg*Y*40+x0,1/tan(deg*X)*40+y0,".");
sprintf(num,"%d",Y);
outtextxy(10,10,num);
outtextxy(20,10,"Y=Cot ");
sprintf(num,"%d",X);
outtextxy(60,10,num);
outtextxy(80,10,"X");
break;
}
deg+=0.01744;
}
}
برنامه كوله پشتي 0-1 به روش برنامه سازي پويا
برنامه كوله پشتي 0-1 به روش برنامه سازي پويا
کد PHP:
#include <iostream.h>
#include <conio.h>
void main()
{
int i,j,n,l,p[10][20];
int weight,w[10];p[10];
cout<<"enter your namber of objects";
cin>>n;
for(i=0;i {
cout<<"enter w"<<"";
cin>>w[i];
cout<<"enter p";
cin>>p[i][0];
}
for(i=0;i p[i][0]=0;
for(j=0;j p[0][j]=0;
for(i=1;i for(j=1;j {
if(w[i]<=j)
{
if(p[i-1][j] < p[i][j]+p[i-1][j-w[i]])
p[i][j]=p[i-1][j-w[i]];
else
p[i][j]=p[i][j]+p[i-1][j-w[i]];
}
else
p[i][j]=p[i-1][j];
cout<< p[i][j];
}
getch();
}
برنامه ی پازل به صورت برنامه نویسی back tracking یا همون(برنامه نویسی عقب گرد )
برنامه ی پازل به صورت برنامه نویسی back tracking یا همون(برنامه نویسی عقب گرد )
کد PHP:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// N should be >= 3
#define N 4
int board[N][N];
int showBoard() {
int i,val;
int row,col;
for ( row=0; row<N ; row++)
{
for ( col=0; col<N; col++)
{
if (board[row][col] == N*N){
printf(" *");
}
else {
printf("% 4d", board[row][col]);
}
}
printf("\n");
}
return 0;
}
int findKey(int val, int *v_f, int *v_c) {
int row,col;
*v_f = 0;
*v_c = 0;
if (val >= (N*N))
{
return 1;
}
for ( row=0; row<N ; row++)
{
for ( col=0; col<N; col++)
{
if (board[row][col] == val){
*v_f = row + 1;
*v_c = col + 1;
return 0;
}
}
}
return 1;
}
int findEmpty(int *v_f, int *v_c) {
int row,col;
*v_f = 0;
*v_c = 0;
for ( row=0; row<N ; row++)
{
for ( col=0; col<N; col++)
{
if (board[row][col] == N*N){
*v_f = row + 1;
*v_c = col + 1;
return 0;
}
}
}
return 1;
}
int move(int val) {
int row,col,filv,colv;
int i;
i=findKey(val, &row, &col);
i=findEmpty(&filv, &colv);
if ((row + 1 == filv && col == colv) ||
(row - 1 == filv && col == colv) ||
(row == filv && col + 1 == colv) ||
(row == filv && col - 1 == colv) )
{
board[row - 1][col - 1] = N*N;
board[filv - 1][colv - 1] = val;
return 0;
}
return 1;
}
int loadOrderedBoard() {
int row,col;
srand( (unsigned)time( NULL ) );
for ( row=0; row<N ; row++)
{
for ( col=0; col<N; col++)
{
board[row][col] = row * N + col;
}
}
return 0;
}
int gameOver() {
int row,col;
for ( row=0; row<N ; row++)
{
for ( col=0; col<N; col++)
{
if (board[row][col] != row * N + col + 1)
{
return 1;
}
}
}
return 0;
}
int checkParity() {
int i,j,paridad,dato;
paridad = 0;
for (i=0; i<(N*N) -1; i++)
{
dato = board[i/N][i%N];
if (dato != 16)
{
for (j=i+1; j<(N*N); j++)
{
if (board[j/N][j%N] < dato )
{
paridad++;
}
}
}
else {
paridad += (i/N) + 1;
}
}
return paridad % 2;
}
int fixParity()
{
int buf;
if (board[0][0] != (N*N) && board[0][1] != (N*N))
{
buf = board[0][0];
board[0][0] = board[0][1];
board[0][1] = buf;
}
else {
buf = board[1][0];
board[1][0] = board[1][1];
board[1][1] = buf;
}
}
int cheat()
{
int buf;
buf = board[N-1][N-2];
board[N-1][N-2] = board[N-1][N-3];
board[N-1][N-3] = buf;
return 0;
}
int loadBoard()
{
int i,j;
int base[N][N];
for (i=0; i<N*N; i++)
{
base[i/N][i%N] = 0;
}
srand((unsigned)time(NULL));
i=0;
while (i < N*N)
{
j = (int) ((float) (N*N) * rand() / (RAND_MAX + 1.0));
if (base[j/N][j%N] == 0)
{
base[j/N][j%N] = j+1;
board[i/N][i%N] = j+1;
i++;
}
}
}
int main()
{
int i, moves, option, play;
printf("1- Load random Board\n");
printf("2- Load ordered Board\n");
scanf("%d", &option);
switch (option)
{
case 1: loadBoard();
break;
case 2: loadOrderedBoard();
break;
default:
printf("I don't get that option!\n");
return 0;
break;
}
showBoard();
if (checkParity() != 0)
{
printf("ODD parity - No solution Board!\n");
printf("1- Fix Parity\n");
printf("2- Leave it\n");
scanf("%d", &option);
switch (option)
{
case 1: fixParity();
break;
case 2:
break;
default:
printf("I don't get that option!\n");
return 0;
break;
}
showBoard();
}
moves = 0;
play = 0;
do
{
printf("1 - %d to move\n", N*N-1);
printf("0 to exit\n");
printf("%d to cheat\n", N*N);
printf("Option: ");
scanf("%d", &play);
if (play == N*N)
{
cheat();
}
else if (move(play) == 0)
{
moves ++;
};
showBoard();
if (gameOver() == 0)
{
printf("GAME COMPLETED IN %03d MOVES!\n", moves);
play = 0;
}
printf("\n");
}while (play != 0);
}