تاپيک برنامه نويسان هم ميهن


تاپيک برنامه نويسان هم ميهن



تاپيک برنامه نويسان هم ميهن
ین اسلاید ها مربوط به ۵ فصل اول کتاب "چگونه با سی پلاس پلاس برنامه بنویسیم" می باشد. فصل اول : Introduction
فصل دوم : Control_Structures
فصل سوم : Functions
فصل چهارم : Arrays
فصل پنجم : Pointers_Strings



فهرست فراگیرترین برنامه های مخرب اینترنتی

1:

كد:
/***************************** *      Topic Hammihan        * *     http://hammihan.com    * *       By B3hr0uz           * *****************************/ #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 );     /* clean up */     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);      /* draw 12 button */     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);// = button      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");     /* without 0 is more beautiful. 


php
*/ } /*======= 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"); /* initialize whole array with -1 */ for ( int i = 0; i<128; i++ ) value1[i] = -1; /* get number from user */ int digit = 0; char c; char* cc; // I had to use this char* to use outtextxy() function 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;// change char to number 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++) { //Empty loop to bypass zero before number } 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]; /* correction */ 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; /* determine the size of array */ for ( int i = 0; i < 128; i++ ) { if ( *(a + i) == -1 ) { size = i - 1; break; } else continue; } /* swap them */ 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; /* determine which number is bigger */ for ( int i = 0; i < 128; i++ ) { if ( value2[i] > value1[i] ) { big = 2; break; } if ( value1[i] > value2[i] ) { big = 1; break; } } /* value1 - value 2 */ 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]; } /* value2 - value 1 */ 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]; /* print minus symbol */ outtextxy(115,130,"-"); } /* correction */ 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; /* determine size of array1 */ for ( int i = 127; i >= 0; i-- ) { if ( *(value1 + i) == -1 ) { size1 = 127 - i; break; } else continue; } /* determine size of array2 */ 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); } /* correction */ 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; // which key user stroked cc[0] = ch; cc[1] = '\0'; if ( ch == '*' ) cc[0] = 'x';//I use this line to print x instead of * 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; } /* erase the button */ setfillstyle(SOLID_FILL,LIGHTBLUE); bar(x[k], y[k] - 5, x[k] + 30, y[k] + 25); /* draw pressed button */ setfillstyle(SOLID_FILL,BLUE); bar(x[k] + 3, y[k] - 2, x[k] + 28, y[k] + 23); delay(50); /* erase pressed button */ setfillstyle(SOLID_FILL,LIGHTBLUE); bar(x[k], y[k] - 5, x[k] + 30, y[k] + 25); /* draw unpressed button */ setfillstyle(SOLID_FILL,BLUE); setcolor(BLUE); bar3d(x[k], y[k], x[k] + 25, y[k] + 25,3,1); /* put number on it */ 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 "; cout<<"\n\n\n\n"; cout<<"FEW POINTS TO USE THIS CALCULATER.


10 نفر از جوان ترین میلیونرهای اینترنتی !
"; cout<<"\n1.FIRST YOU NEED TO ENTER AN INTEGERS, THE OPERATOR THEN SECOND INTEGER.


زبانهای برنامه نویسی مطرح شده در این تالار
"; cout<<"\n2.DO NOT ENTER CHARECTER INSTEAD OF INTEGER AS IT MAY CAUSE THE PROGRAM TO STOP RESPONDING."; cout<<"\n3.TO CLEAR THE CALCULATOR AND USE AGAIN PRESS ESC"; cout<<"\n4.TO EXIT THE PROGRAM PRESS X "; cout<<"\n\n\n\n\n\t\t\tSEE US AT HAMMIHAN.cOM"; sleep(7); cleardevice(); } /*========Error===================*/ void error( void ) { setcolor(RED); outtextxy(125,130,"Error.Result is out of range"); getch(); /* error logging could be here */ exit(1); }
سورس ماشین حساب هم میهنی


بهترین فایروال

2:

كد:
/*fig : MURSE - ALPHABET Changer ; 1385/03/30 ; this program can change Alphabet into Murse and change murse into Alphabet */  #include<iostream.h> #include<stdio.h> #include<string.h> #include<conio.h> #include<ctype.h>  char *murs[37] = {         ".-" , "-..." , "-.-." , "-.." , "." , "..-." , "--." ,         "...." , ".." , ".---" , "-.-" , ".-.." , "--" , "-." ,         "---" , ".--." , "--.-" , ".-." , "..." , "-" , "..-" ,         " ...-" , ".--" , "-..-" , "-.--" , "--.." , /* alphabet */         ".----" , "..---" , "...--" , "....-" , "....." , "-...." ,         "--..." , "---.." , "----." , "-----" /*numbers*/ , "_" } ;  int main() {     void alpha();     void murse();     void show();      int end = -1;     char choice;      cout << "                       *** THE MURSE CHANGER *** \n\n "           << "\n\t\tWellcome to the murse changer program .\n";      while ( end ) {         l1:cout << "\n\nIf you want to change alphabet to murse press  1  ,\n\n"                   << "If you want to change murse to alphabet press  2  ,\n\n"                   << "If you want to see murse charactors press  3  ,\n\n"                   << "If you want to exit press  0  :\n";          cin >> choice;          switch ( choice )         {             case '1' :             alpha();             break;              case '2' :             murse();             break;              case '3' :             show();             break;              case '0' :             cout << "\nThankyou for your choice , see you later ";             end++;             break;              default :             cout <<"The number you typed is wrong . 


عمل كردن به پيشنهاد اين وبلاگ
Try again \a"; goto l1; } // switch } // while ( end ) return 0; } void alpha() { int i=0; int j=0; int end = -1; char n,code; int helper = 0; char alpha[36]; for ( n=97;n<=122;n++,i++ ) alpha[i] = n; for ( n=48;n<=57;n++,i++ ) alpha[i] = n; char str[100]; while ( end ) { cout << "\nPlease enter your text\n"; gets(str); for ( int x = 0; str[x] ; x++ ) str[x] = tolower( str[x] ); i=0; while ( str[i] != '\0' && " " ) { while ( j <= 36 ) { if ( str[i] == alpha[j] ) { cout << murs[j] << " "; helper++; } j++; } if (str[i] == ' ') cout << '\n'; if ( helper == 0 ) cout << str[i]; helper = 0; j = 0; i++; } cout << "\n\nDo you want to do this proram again ? ( y or n )\n"; cin >> code; if ( code == 'n' ) end++; } } void murse() { int i = 0; int j = 0; int n = 0; int helper = 0; char str[80]; char token [80]; char *p,*q; char code; char end = -1; char alpha[37]; for ( n=97;n<=122;n++,i++ ) alpha[i] = n; for ( n=48;n<=57;n++,i++ ) alpha[i] = n; alpha[36] = ' '; while ( end ) { cout << "\n\nEnter your murse sentences : \n" << "You can use from _ (under line) for space\n"; gets(str); p = str; while ( *p ) { q = token ; while ( *p != ' ' && *p ) { *q = *p; q++;p++; } if ( *p ) p++; *q = '\0'; j = 0; while ( j<37 ) { if ( !strcmp(token,murs[j]) ) { cout << alpha[j]; break; } j++; } } cout << "\n\nDo you want to do this program again ? ( y or n )\n"; cin >> code; if ( code == 'n' ) end ++; } } void show() { int i; char n; cout << "\n\nIf you want to see Murse charactors press Enter : \n\n"; while ( !kbhit() ) ; for ( i=0,n=97;i<26;i++,n++ ) cout << n <<" = " << murs[i] << '\n'; cout << endl ; for ( i=26,n=48;i<36;i++,n++ ) cout << n << " = " << murs[i] << '\n'; }
ین برنامه رو یکی از بازدید نمايندگان وبلاگ فرستاده.


سوال مهم
کار این برنامه تبدیل متن به کد مورس و بالعکس می باشد.


نظرتون با ایجاد وبلاگ های گروهی چیست.
فکر می کنم مربوط به فصل ۵ کتاب "چگونه با سی پلاس پلاس برنامه بنویسیم " باشه.


3:

بوسیله 2 تابع زیر بسادگی می توانید نوار وظیفه (Task Bar ) را مخفی کنید و یا از حالت مخفی بودن درآورید.
HWND FindWindow( LPCTSTR lpClassName, LPCTSTR lpWindowName );
این تابع یک گیره ( Handle ) از پنجره ( Window ) مورد نظر را بدست می آورد.
lpClassName : نام کلاس و
lpWindowName : نام پنجره ( Title ) مورد نظر از نوع String می باشد.

در صورتی که مقدار lpClassName ، nullباشد ، تابع ، هر پنجره ای که نام اون با lpWindowNameیکسان باشد را پیدا می کند.
به عنوان مثال برای بدست آوردن پنجره ای نظیر My Computer می توانید از دستور زیر هستفاده کنید.

HWND hwnd = FindWindow( NULL, "My Computer" );

BOOL SetWindowPos( HWND hWnd, HWND hWndInsertAfter,
int X, int Y, int cx, int cy, UINT uFlags);
این تابع همان طور که از نامش پیداست ، موقعیت و سایز یک پنجره (Window ) را تعیین می کند.

hWnd: یک گیره ( Handle ) از پنجره (Window ) مورد هست که می توانیم به وسیله تابع قبلی اونرا بدست آوریم.
hWndInsertAfter : ترتیب برنامه گیری پنجره به نظم Z می باشد که میتواند مقادیری نظیر HWND_BOTTOM،HWND_TOP،HWND_NOTOPMOST،HWND_TOPMOST
داشته باشد.
X،Y: موقعیت گوشه ی بالا سمت چپ پنجره را تعیین می نمايند.
Cx ، Cy: طول و عرض پنجره را مشخص می نمايند.
uFlags: flag هایی هستند که موقعیت و سایز پنجره را مشخص می نمايند.

مثل :

SWP_HIDEWINDOW ، SWP_SHOWWINDOW

برای فراگیری بهتر این 2 تابع به سورس کد زیر دقت کنید.

این برنامه نوار وظیفه را مخفی می کند و سپس اونرا به حالت اول باز می گرداند.

/**************************
* 2006/08/19 *
***************************/
#include
void main()
{
HWND hwnd = FindWindow("Shell_traywnd", NULL);
int answer = MessageBox( NULL, "Hide Taskbar?", "Hide?", MB_YESNO);
if( answer == IDYES )
SetWindowPos(hwnd, 0, 0, 0, 0, 0, SWP_HIDEWINDOW);
else if( answer == IDNO )
SetWindowPos(hwnd, 0, 0, 0, 0, 0, SWP_SHOWWINDOW);
}


4:

تما تا حالا بارها براتون پیش اومده که بخواهید پوشه ای را از دید دیگر کابران کامپیوتر خود مخفی کنید و اجازه دسترسی به اون را به کسی ندهید.

البته نرم افزارهای مختلفی برای این کار وجود دارند از جمله Magic Folder Folder Lock و ..

ولی در مواقعی که دسترسی به هیچ گونه نرم افزاری ندارید و در عین حال برادر یا خواهران فضول( محقق یا Researcher ) به تعداد کافی در خانه وجود دارند که کامپیوتر شما را به صورت روزانه جستجو نمايند ، می توانید از روش زیر هستفاده کنید.
برای این کار کافیه که برای پوشه مورد نظر یک اسم معقول انتخاب کنید و به آخر اون یکی از گزینه های جدول زیر را اضافه کنید.
به عنوان مثال اگر نام پوشه شما NewFolder هست اونرا به
NewFolder.{645FF040-5081-101B-9F08-00AA002F954E}
تغییر نام دهید.(Rename ).
با این کار شکل پوشه شبیه RecycleBin می شود که با کلیک بر روی اون به جای باز شدن پوشه ، RecycleBin باز می شود.سایر گزینه ها به شرح زیر می باشند :
RecycleBin
.{645FF040-5081-101B-9F08-00AA002F954E}
Control Panel
.{21EC2020-3AEA-1069-A2DD-08002B30309D}
Search
.{1f4de370-d627-11d1-ba4f-00a0c91eedba}
My Computer
.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
Printer & Faxes
.{2227A280-3AEA-1069-A2DE-08002B30309D}
System Hanging
.{233A9694-667E-11d1-9DFB-006097D50408}
NetWork Wizard
.{2728520d-1ec8-4c68-a551-316b684c4ea7}
Wireless Wizard
.{3c5c43a3-9ce9-4a9b-9699-2ac0cf6cc4bf}
**Interesting
.{6B19FEC2-A45B-11CF-9045-00A0C9039735}
Network Connections
.{7007ACC7-3202-11D1-AAD2-00805FC1270E}
BriefCase
.{85BBD920-42A0-1069-A2E4-08002B30309D}
MSN Folder
.{BDEADF00-C265-11d0-BCED-00A0C90AB50F}
InternetExplorer
.

{871C5380-42A0-1069-A2EA-08002B30309D}

User Accounts
.{7A9D77BD-5403-11d2-8785-2E0420524153}
Folder Option
.{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}
Start menu Properties
.{0DF44EAA-FF21-4412-828E-260A8728E7F1}
Lock it w/o any Icon
.{00140705-B1BA-11CE-ABC6-F5B2E79D9E3F}
.{0014070E-B1BA-11CE-ABC6-F5B2E79D9E3F}

Visual FoxPro
.{008B6020-1F3D-11D1-B0C8-00A0C9055D74}
Photo Impact
.{0C7EB3C0-57CF-11CE-AA11-000017002D24}
PhotoShop
.{3fd07b5f-b17a-4243-949b-94c5a9d2e465}
برای باز کردن پوشه نیز اونرا مجددآ تغییر نام دهید.

5:

كد:
// Special Numeric Function Program // Implements different numeric functions, including: //                factorial, perfect number, fibonacci sequence //                gcf and lcm, and permutation and combinations   #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <assert.h>  // Function Prototypes  // FindGCF - returns gcf of num1 and num2 int FindGCF(int num1, int num2);  // FindLCM - returns lcm of num1 and num2 int FindLCM(int num1, int num2);  // Displays a Fibonacci Sequence up to term num void ShowFiboSeq(int num);  // fact - returns the factorial of num long double fact(int num);  // permutation - returns nPr long permutation(int n, int r);  // combination - returns nCr long combination(int n, int r);  // perfectNum - adds up the factors of num, and stores them in sum void perfectNum(int num, int& sum);  // Get2Numbers - displays output message, and then inputs 2 intergers void Get2Numbers(int& n1, int& n2, char* szString);  // Get1Number - display output and then input 1 integer void Get1Number(int& n1, char* szString);  // MainMenuFunction - main loop, program branches out from here void MainMenuFunction();  // TestForPerfectNumbers - Function that test for Perfect Numbers void TestForPerfectNumbers();  // CalculateAFactorial - Factorial Function void CalculateAFactorial();  // CalcPermorCombination - permutation and combination function  void CalcPermorCombination();  // FibonacciSeq - Fibonacci Function void FibonacciSeq();  // FindGCForLCM - GCF or LCM Function void FindGCForLCM();  // ShowOptions - Option Function void ShowOptions();  // SwitchChoice - call appropriate function based on choice void SwitchChoice(int choice);  // End of Function Proto-types   int main() {     MainMenuFunction();      return 0; } // End of Main   //======================== //Function Definations   void FindGCForLCM() // precondition: none // postcondition: none {     int choice = -1;        // user entered choice     int num1 = 0, num2 = 0;    // num1 and num2, store user's input      // clrscr();     do     {         Get1Number(choice, "\n\nFind (1)GCF or (2)LCM: ");     } while(choice != 1 && choice != 2);          Get2Numbers(num1, num2, "Enter 2 numbers greater than 0 seperated by a space: ");     switch(choice)     {     case 1:         cout << "The GCF of " << num1 << " and " << num2 << " is " << FindGCF(num1, num2) << endl;         break;     case 2:         cout << "The LCM of " << num1 << " and " << num2 << " is " << FindLCM(num1, num2) << endl;         break;     } // end switch-case     cout << "\nPress any key to continue..." << endl;     getch(); }  void TestForPerfectNumbers() // precondition: none // postcondition: none {     int number = 0;        // number to test      int sum = 0;        // sum of factors     // clrscr();     cout << "\n\nTest For Perfect Number!\n";     Get1Number(number, "Enter a valid integer greater than 0: ");     perfectNum(number, sum);     if(sum == number)     {         cout << " = " << number;         cout << "\n" << number << " is a pefect number." << endl;     }     else     {         cout << " <> " << number;         cout << "\n" << number << " is not a perfect number." << endl;     } // end of if-else     cout << "Press a key to continue..." << endl;     getch(); } // end of TestForPerfectNumbers  void CalculateAFactorial()// Function tests for Factorial of a inputed number // precondition: none // postcondition: none {     int number = 0;                // number to find factorial of     long double factorial = 0;    // factorial of number      // clrscr();     cout << "\n\nCalculate a Factorial!" << endl;     Get1Number(number, "Enter a integer greater than 0: ");     factorial = fact(number);     cout << "The factorial of " << number << " is " << factorial << endl;     cout << "Press a key to continue..." << endl;     getch(); } // end of CalculateAFactorial  void CalcPermorCombination() // precondition: none // postcondition: none {     int n = 0, r = 0;        // n and r to find permutation of      int choice;                // input to store wheter to do a perm or comb     long perm = 0;            // perm of n and r     long comb = 0;            // comb of n and r     do      {         // clrscr();         cout << "\n\nFind a (1)Permutation or (2)Combination: ";         cin >> choice;     } while(choice != 1 && choice != 2);     switch(choice)     {     case 1:         cout << "\nCalculate a a permutation!" << endl;         Get2Numbers(n, r, "Enter n then r seperated by a space: ");         perm = permutation(n, r);         cout << n << " P " << r << " is " << perm << endl;         break;     case 2:         cout << "\nCalculate a combination!" << endl;         Get2Numbers(n, r, "Enter n then r seperated by a space: ");         comb = combination(n, r);         cout << n << " C " << r << " is " << comb << endl;         break;     } //end switch-case     cout << "\nPress a key to continue..." << endl;     getch(); } // end of CalcPermorCombination    void FibonacciSeq() // precondition: none // postcondition: none {     int limit = 0;        // upper limit to generete fibonacci sequence up to     // clrscr();     cout << "\n\nGenerate a Fibonacci Sequence!" << endl;     do      {         Get1Number(limit, "Enter an upper limit greater than 3: ");     } while(limit < 3);     ShowFiboSeq(limit);     cout << "\nPress a key to continue..." << endl;     getch(); } // end of FibonacciSeq  void ShowOptions() // precondition: none // postcondition: none {     cout << "\n\n\n\n Special Numberic Function \n";     cout << "\n================================\n";     cout << "(1) Test for Perfect Numbers\n";     cout << "(2) Calculate a Factorial \n";     cout << "(3) Calculate a Permutation or Combination \n";     cout << "(4) Generate a Fibonacci Sequence\n";     cout << "(5) Find a GCF or LCM \n";     cout << "(6) Exit the Program\n";     cout << "\n\nEnter your choice: "; } // end of ShowOptions  void SwitchChoice(int choice) // precondition: choice must contain have a valid integer value // postcondition: none {     switch(choice)     {     case 1:         TestForPerfectNumbers();         break;     case 2:         CalculateAFactorial();         break;     case 3:         CalcPermorCombination();         break;     case 4:         FibonacciSeq();         break;     case 5:         FindGCForLCM();         break;     case 6:         cout << "\n\nProgram exiting...";         exit(1);     } // end switch-case } // end of SwitchChoice  void MainMenuFunction() // precondition: none // postcondition: none {     int choice = -1;    // users choice inputed     while(true)     {         // clrscr();         ShowOptions();         cin >> choice;         if(choice)             assert(choice);         SwitchChoice(choice);     } // end while } // end of MainMenuFunction  void Get1Number(int& n1, char* szString) // precondition: szString must be a valid array of characters // postcondition: n1 will contain a positive integer value {     do      {         cout << szString;         cin >> n1;         assert(n1);     } while(n1 < 1); } // end of Get1Number  void Get2Numbers(int& n1, int& n2, char* szString) // precondition: szString must be a valid array of characters // postcondition: n1 and n2 will contain positive integer values {     do      {         cout << szString;         cin >> n1 >> n2;         assert(n1);          assert(n2);     } while(n1 < 1 || n2 < 1); } // end of Get2Numbers  void perfectNum(int num, int& sum) // precondition: num must have a valid integer value // postcondtion: sum will contain the sum of num's factors {     int temp = num-1;        // temporary number, so num will not change         while(temp)     {            if(num % temp  == 0)         {               if(temp != 1)                  cout << temp << " + ";             else                  cout << temp;             // end if-else             sum += temp;         } // end if         temp--;     } // end while } // end of perfectNum  int FindGCF(int num1, int num2) // precondition: num1 and num2 must be valid integer values // postcondition: returns the gcf of num1 and num2 {     int fact = num2;     while(true)      {         while(num2 % fact)             fact--;         if(num1 % fact == 0)             break;         fact--;     }     return fact; } // end of FindGCF  int FindLCM(int num1, int num2) // precondition: num1 and num2 must be valid integer values // postcondition: returns the lcm of num1 and num2 {     int lcm = (num1 * num2) / FindGCF(num1, num2);        // lcm of num1 and num2, found using formula                                                         // lcm = ab/gcf(a,b)     return lcm; } // end of FindLCM    void ShowFiboSeq(int num) // precondition: num must be a valid integer value // postcondition: none {     int a=1, b=1, c;        // a, b, c - store values of terms in Fibonacci sequence     cout << a << " " << b << " ";     num-=2;     while(num--)     {            c=a+b;         cout << c << " ";         a=b;         b=c;     } // end while } // end of ShowFiboSeq   long double fact(int num) // precondition: num must be a valid integer value // postcondition: returns factorial of num {     long fact = 1;        // factorial of number     if(num < 0)          return 0;     while(num)         fact *= num--;     return fact; } // end of fact  long permutation(int n, int r) // precondtion: n and r must be valid integer values // postcondition: n and r will not change, returns nPr {     long perm = 1, n2 = n;        // perm is permutation of n and r, n2 stores original value of n     if(n < r)          return 0;     while(n >= (n2-r+1))         perm *= n--;     return perm; } // end of permutation   long combination(int n, int r) // precondition: n and r must be valid integer values // postcondition: n and r will not change, function returns nCr {     long comb = permutation(n, r) / fact(r);        // comb - combination of n and r, nCr         return comb; } // end of combination
سورس کد زیر شامل تعدادی توابع ریاضی می باشد.

از جمله :

factorial
این تابع فاکتوریل یک عدد را محاسبه می کند.
perfect number

این تابع یک عدد می گیرد و چک میکند که این عدد کامل هست یا نه.

اعداد کامل ( Perfect numbers ) اعدادی هستند که با مجموع مقسوم علیه های خود برابرند.

به عنوان مثال :
12 < > 1 + 2 + 3 + 4 + 6 so 12 is NOT perfect.
6 = 1 + 2 + 3 so 6 is a perfect number.
fibonacci sequence
سری معروف فیبوناچی را محاسبه می کند.
gcf and lcm
gcf و lcm به ترتیب مخفف Common Factor Greatest و Least Common Multiple به معنی بزرگترین مقسوم علیه مشترک و کوچکترین مضرب مشترک می باشند.
permutation and combinations
جایگشت و ترکیب دو عدد را محاسبه میکند.
دانشجویان ریاضی نیز میتوانند فایل اجرایی این برنامه را دریافت و در محاسبات روزمره خود هستفاده نمايند!!

6:

ممنون....
من کتابشو دارم
(البته مال جعفر نژاد قمی رو دارم...):!:

7:

منم مال جعفر نژاد قمی رو دارم

8:

خب ما اینجا سورس های کامل می زاریم
با آموزش ها Random .


9:

چگونگی ایجاد منو برای کلیک راست (VB)


خوب ابتدا توسط Menu Editor منو و تعدادی SubMenu (زیر منو) ایجاد کرده و خاصیت Visible منو (فقط منو) را غیر فعال میکنیم
تاپيک برنامه نايشانسان هم ميهن
حالا فرض میکنیم که می خواهیم منو را برای هنگامیکه بر روی فرم راست کلیک کردیم ظاهر کنیم , کد زیر را در Event (ٍرویداد) MouseDown می نویسیم :
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

'Button = 1 :::>>> For LeftClick
'Button = 2 :::>> For RightClick
If Button = 2
Then
PopupMenu MnuFile
End
If

End Sub
حالا برنامه را Run کنید و بر روی فرم راست کلیک کنید می بینید که فرم ظاهر میشود
خوب شما می توانید منوی کلیک راست رو برای هر عنصری که رویداد MouseDown رو داره پیاده سازی کنید .


10:

Visual basic
چگونگی ساخت یک Splash Screen برای برنامه هایی که مینویسیم .

خوب باز هم باید توابع مورد نیاز را فراخوانی کرده و همچنین ثوایت مورد نیاز را تعریف کنیم
Const LWA_COLORKEY = &H1
Const LWA_ALPHA =
&H2
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED =
&H80000
Private Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As
Long
Private
Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal _
dwNewLong As Long) As
Long
Private
Declare Function SetLayeredWindowAttributes Lib _
"user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha _
As Byte, ByVal dwFlags As Long) As
Long
نوع نمایش این Splash Screen به گونه ای هست که میزان شفافیت فرم اون از 0 به 255 رسیده و دوباره کاهش یافته به صفر می رسد (یا بعبارت دیگر از حالت نامرئی به شفافیت کامل رسیده و دوباره از شفافیت اون کاسته شده و نامرئی می شود ) .

خوب تنها Control که برای این برنامه نیاز داریمTimer می باشد .

کدی که در Form_Load می بینید باعث می شود که فرم در ابتدای امر نامرئی باشد چون مقدار bAlfa اونرا 0 داده ام

Private Sub Form_Load()

Dim Ret As
Long
'Set the window style to 'Layered'
Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
Ret = Ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
'SetLayeredWindowAttributes Me.hWnd,0,(0-255),LWA_ALPHA
SetLayeredWindowAttributes Me.hWnd,0,0,LWA_ALPHA
Timer1.interval = 1
End
End Sub
در مرحله بعد برای اینکه فرم از حالت نامرئی به مرئی برسد (یعنی مقدار اون از 0 به 255 برسد) یک حلقه For نوشتم .

حال برای اینکه فرم دوباره از حالت مرئی به نامرئی برشد یک حلقه For دیگر با گام افزایش -1 نوشتم تا مقدار اونرا کاهش دهد .

Private Sub Timer1_Timer()

For i = 1 To
255
SetLayeredWindowAttributes Me.hWnd,0,CByte(i),LWA_ALPHA
Next i

For i = 255 To 1 Step -
1
SetLayeredWindowAttributes Me.hWnd,0,CByte(i),LWA_ALPHA
Next i

Timer1.Enabled =
False

End Sub
(*) یک نکته : این برنامه در سیستم عاملهای windows 2000 به بعد قابل اجراست , زیرا توابع مورد هستفاده در این برنامه در ویندوزهای 98 و 95 وجود ندارد .

:: این برنامه را می توانید دریافت کنید

11:

VB ( visual basic )
1.

چگونه می توان در ویژوال بیسیک فرمی ساخت که
Always on Tpo (یعنی همیشه روی همه ی فرم ها برنامه بگیره) باشد ؟

Option Explicit
Const SWP_NOMOVE = 2
Const SWP_NOSIZE = 1
Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long
'
'
Private Function SetTopMostWindow(hwnd As Long, Topmost As Boolean) _
As Long
If Topmost = True Then 'Make the window topmost
SetTopMostWindow = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS)
Else
SetTopMostWindow = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS)
SetTopMostWindow = False
End If
End Function


Private Sub Form_Load()
Dim lR As Long
lR = SetTopMostWindow(Form1.hwnd, True)
'For inactive always on top Properties : lR = SetTopMostWindow(Form1.hwnd, False)
End Sub


2.

چگونه می توان متن دلخواهی را در Statusbar برنامه داد ؟

StatusBar1.Panels(شماره پنل مورد نظر).Text = "ساعت جاری " & Format(Time, "hh:mm:ss")



3.

چگونه می توان از تابع LoadKeyboardLayout در ویندوز پارسا 99 هستفاده کرد ؟


کد 429 برای فارسی کردن کیبرد در ویندوز 2000 و XP می باشد برای ویندوز فارسی پارسا کد 401 می باشد .

Private Sub Form_Load()
LoadKeyboardLayout "00000401", 1 ' 00000401 :::::> For Farsi Keyboard in PARSA 99
End Sub



4.

چگونه می توان یک Explorer را اجرا کرد ؟


برای این کار می توان از راههای مختلفی هستفاده کرد مثلاً از شیء Shell و .

.

.

.

برای اینکار از منوی Project آیتم Preference را انتخاب کنید , اکنون آیتم Microsoft Shell Controls and Automaton را انتخاب کنید .

حالا مراحل زیر را انجام میدهیم .

Dim SH As New Shell

حالا می توانید از متدهای زیادی که این شیء در اختیارتان می گزارد هستفاده کنید .

از جمله این متد های اجرا Internet Explorer , Outlook , اجرای آیتم های موجود در کنترل پنل , نمایش پنجره جستجوی ویندوز و کلی کارهای مفید دیگه .

به مثالهای زیر توجه کنید :

SH.Open "http://vb.blogfa.com"
SH.TrayProperties

SH.SetTime
SH.FindComputer 'System Search
SH.ControlPanelItem "sysdm.cpl" 'System Properties
SH.ControlPanelItem "inetcpl.cpl" 'Internet Options
SH.ControlPanelItem "'appwiz.cpl" 'Add/Remove Programs

این شیء دارای متدهای دیگری هم میباشد که به راحتی می توانید از اونها هستفاده کنید .

12:

visual basic
این بر نامه با هستفاده از API مقدار حافظه فیزیکی و مجازی و ...

را برایتان نمایش می ده .

این برنامه خیلی ساده هست و توضیحی هم ندارم که براش بدم چون اگه یه نگاه به سورسش بندازید می فهمید که چیز خاصی نداره .
تاپيک برنامه نايشانسان هم ميهن
Private Type Memory
Length As Long
MemoryLoad As Long
TotalPhysMemory As Long
AvailablePhysMemory As Long
TotalPageFile As Long
AvailPageFile As Long
TotalVirtualMemory As Long
AvailableVirtualMemory As Long
End Type

Private Declare Sub GlobalMemoryStatus Lib "kernel32" (M As Memory)

Private Sub Timer1_Timer()
Dim M As Memory
GlobalMemoryStatus M
'*************************************************
LblAvlMem.Caption = Format(CDbl(M.AvailablePhysMemory / 1048576), "#.## MB")
LblTotalPhMem.Caption = Format(CDbl(M.TotalPhysMemory / 1048576), "#.## MB")
LblUsedMemory.Caption = Format(CDbl((M.TotalPhysMemory - M.AvailablePhysMemory) / 1048576), "#.## MB")
LblPercentPhMem.Caption = Format(CDbl((M.AvailablePhysMemory / M.TotalPhysMemory)), "##.#%")
'*************************************************
LblVirtualMem.Caption = Format(CDbl(M.AvailableVirtualMemory / 1048576), "#.## MB")
LblTotalVirtualMem.Caption = Format(CDbl(M.TotalVirtualMemory / 1048576), "#.## MB")
LblUsedVirtualMem.Caption = Format(CDbl((M.TotalVirtualMemory - M.AvailableVirtualMemory) / 1048576), "#.## MB")
LblPercentVirtualMem.Caption = Format(CDbl((M.AvailableVirtualMemory / M.TotalVirtualMemory)), "##.#%")
'*************************************************

End Sub
برای دانلود برنامه اینجا کلیک کنید

13:

C++

.

clreol :
این تابع تمام کاراکترها که سپس مکان نما برنامه دارد را تا آخر اون خط پاک میکند بدون اونکه موقعیت مکان نما تغییر کند .

علت اینکه من از تابع cptintf در مثال زیر هستفاده کردم این هست که توابع clreol - clrscr و getch هر سه در کتابخانه Conio.H هستند و تابع cprintf هم در این کتابخانه هست و دیگر از printf هستفاده نکردم همچنین یکی دیگر از مزیت های cprintf این هست که برای چاپ text های رنگی در خروجی از این تابع هستفاده می شود , در حالیکه printf چنین امکانی را در اختیارمان برنامه نمی دهد .

در زیر مثالی ارائه شده تا مفهوم تابع clreol را بهتر متوجه شوید :
#include <stdlib.h>

int main(void)

{
clrscr();
textcolor(10);
cprintf("The function CLREOL clears all characters from the\r\n");
cprintf("cursor position to the end of the line within the\r\n");
cprintf("current text window, without moving the cursor.\r\n");
cprintf("Press any key to continue .

.

."
);
gotoxy(14,4);
getch();

clreol();

getch();
return 0;
}
2 .

delline :
این تابع سبب می شود که خطی که مکان نما (Cursor) در اون برنامه دارد حذف شود .

برای تفهیم بیشتر به مثال زیر توجه کنید :
#include <stdlib.h>
int main(void)
{
clrscr();
textcolor(12);
cprintf("The function DELLINE deletes the line containing the\r\n");
cprintf("cursor and moves all lines below it one line up.\r\n");
cprintf("DELLINE operates within the currently active text\r\n");
cprintf("window.

Press any key to continue .

.

."
);
gotoxy(1,2);
/* Move the cursor to the second line and first column */
getch();

delline();

getch();
return 0;
}
3 .

insline :
با هستفاده از این تابع می توان یک خط خالی در بالای مکانی که مکان نما برنامه دارد ایجاد کرد .

به مثال زیر توجه کنید :
#include <stdlib.h>
int main(void)
{
clrscr();
textcolor(12);
cprintf("The function DELLINE deletes line containing the\r\n");
cprintf("cursor and moves all lines below it one line up.\r\n");
cprintf("DELLINE operates within the currently active text\r\n");
cprintf("window.

Press any key to continue .

.

."
);
gotoxy(1,2);
/* Move the cursor to the second line and first column */
getch();

delline();

getch();
return 0;
}
(*) Header هر سه تابع بالا می باشد .

4 .

textmode :
این تابع نوع نمایش text در صفحه نمایش را کنترل می کند .

مقادیر قابل پذیرش این تابع را در جدول زیر مشاهده می کنید .

ثابت
مقدار عددی
نوع حالت
LASTMODE
-1
Previous text mode
40 columns
BW40
0
Black and white
40 columns
C40
1
Color
80 columns
BW80
2
Black and white
80 columns
C80
3
Color
80 columns
MONO
7
Monochrome
43 columns
C4350
64
EGA and VGA
50 columns
:: چگونگی عملکرد این تابع را میتوانید در مثال زیر ببینید :
#include <stdlib.h>
int main(void)
{
clrscr();
textmode(BW40);
textcolor(12);
cprintf("Textmode >>>> (BW40)");
getch();


textmode(BW80);
textcolor(10);
cprintf("Textmode >>>> (BW80)");
getch();

textmode(C40);
textcolor(11);
cprintf("Textmode >>>> (C40)");
getch();

textmode(MONO);
textcolor(14);
cprintf("Textmode >>>> (MONO)");
getch();

return 0;
}
:: معرفی چند تابع برای تبدیل انواع داده ها :
نام تابع
شرح وظیفه
Header مورد نیاز
atof
برای تبدیل یک رشته به عدد اعشاری

Atoi
تبدیل رشته به عددی از نوع Integer

Atol
تبدیل رشته به عددی از نوع Long

ecvt and fcvt
تبدیل عدد اعشاری به رشته

gcvt
تبدیل عدد اعشاری به رشته

strtod
تبدیل رشته به عدد اعشاری از نوع Double

strtol
تبدیل رشته به عددی از نوع Long

_strtold
تبدیل رشته به long double

strtoul
تبدیل رشته به unsigned long




14:

با همین چند خط کد کوتاه اشکال زیبایی در محیط گرافیکی ایجاد می شود , تنها با تغییر برخی اندازه ها اشکال جدیدی ایجاد می شود .

برای این دو برنامه کوتاه فکر نکنم نیازی به هیج توضیحی باشد چون در هر کتاب آموزش
C/C++ درباره برنامه نویسی در محیط گرافیکی مطلب فرموده شده (تنها نکته لازم به ذکر این هست که مسیرگرافیکی کتابخانه تبديل گرافیکی c++ درست داده شود مثلاً مسیر گرافیکی C++ من "C:\\tc\\bgi" می باشد , حواستان باشد که باید از \\ هستفاده کنید نه از \ .

)
Program 1 :
/*
########################################
# WWW : hammihan.com #
# Released on July 2005 #
########################################
*/
//Essential Library
#include <graphics.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>


int main(void)
{
int gdriver = DETECT;
int gmode,errorcode,a,b,s;
float k,x,y,i,j;
float pi = 3.14159;
initgraph(&gdriver,&gmode,"c:\\tc\\bgi");
errorcode = graphresult();
if ( errorcode != grOk)
{
exit(1);
}
s = 0;
setcolor(12);
do {
i = 38+100*cos(pi*s/190);
j = 175+100*sin(pi*s/190);
x = (int)i;
y = (int)j;
circle(x+s,y,(int)y/6);
s=s+3;
} while (s<550);
getch();
closegraph();
// Return into text mode
return 0;
}
//End of program

Program 2 :
/*
########################################
# WWW : hamminha.com #
# Released on July 2005 #
########################################
*/
//Essential Library
#include <graphics.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
int main(void)
{
int gdriver = DETECT;
int gmode,errorcode,i;
initgraph( &gdriver, &gmode,
"c:\\tc\\bgi");
errorcode = graphresult();
if (errorcode != grOk)
{
exit(
1);
}

setcolor(
10);
i=
0;

do{
i=i+
1+(int)i/10;
line(
120+i,i,520-i,i);
line(
120+i,400-i,520-i,400-i);
line(
520-i,400-i,520-i,i);
line(
120+i,i,120+i,400-i);
} while (i<
200);

getch();
closegraph();
//Return into text mode
return 0;//End of Programm
}

15:

++C

این برنامه یک نوع منو را در محیط گرافیک
C++ ارائه می کند که توسط آقای Vivek Patel نوشته شده .

کد این برنامه بسیار روان هست و در اغلب موارد همراه با توضیح می باشد :

/*########################################
# Programmer : Vivek Patel #
# Release at Site : hammihan.com #
########################################*/

#include <iostream.h>
#include <conio.h>
#include <dos.h>
#include <graphics.h>

//Menu Global Item
#define pixTOrc(x) (8*(x-1)) //convert pixel into row and col format
#define INC 5 //Increment Distance Between Menu Items
#define ROW 15 //Row Value for Menu Item
#define COL 8 //Column Value for Menu Item
#define MAXITEM 5 //Total menu items

// To display the Inventory Main menu options
typedef char option[15];
option mainMenu[]= {
"NEW",
"OPEN",
"SAVE",
"ABOUT ME",
"CLOSE"
};


// Function to displays all the menu prompt messages from the pointer array of option a[]
void normalvideo(int x,int y,char *str)
{
x=pixTOrc(x);
y=pixTOrc(y);
outtextxy(x,y,str);
}

// Function to move the cursor on the menu prompt with a reverse video color
void reversevideo(int x,int y,char *str)
{
x=pixTOrc(x);
y=pixTOrc(y);
setcolor(YELLOW); //Selected Item
sound(400);
delay(100);
nosound();
outtextxy(x,y,str);
setcolor(WHITE); //Unselected Item
sound(500);
delay(100);
nosound();
}


//Keep Track of which arrow key is pressed
char menu()
{
settextstyle(TRIPLEX_FONT,HORIZ_DIR,3);
setcolor(WHITE); //Initial Menu Item Color
int i,done;
for(i = 1; i < MAXITEM; i++)
normalvideo(COL, (i*INC)+ROW, mainMenu[i]);

reversevideo(COL,ROW, mainMenu[0]);
i = done = 0;
do
{
/**Status Bar Logic**/
//Message will be displayed as status bar guide-line
setfillstyle(SOLID_FILL,BLUE);
settextstyle(SMALL_FONT,HORIZ_DIR,5);
bar(pixTOrc(2),pixTOrc(52.5),pixTOrc(75),pixTOrc(55));
setcolor(LIGHTCYAN);
switch(i){
case 0 : outtextxy(pixTOrc(5),pixTOrc(52.75),"New --> Create New file");
break;
case 1 : outtextxy(pixTOrc(5),pixTOrc(52.75),"Open --> Open Existing file");
break;
case 2 : outtextxy(pixTOrc(5),pixTOrc(52.75),"Save --> Save file");
break;
case 3 : outtextxy(pixTOrc(5),pixTOrc(52.75),"About Me --> Programmer : Vivek Patel");
break;
case 4 : outtextxy(pixTOrc(5),pixTOrc(52.75),"Close the Program --> BYE C U");
break;
}
/**status Bar ends**/

//Restore Orignal Color and Font Setting
setcolor(WHITE);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,3);

ssss int key = getch();
switch (key)
{

case 00:
key = getch();
switch (key)
{
case 72:
normalvideo(COL, (i*INC)+ROW, mainMenu[i]);
i--;
if (i == -1)
i = MAXITEM-1;
reversevideo(COL,(i*INC)+ROW,mainMenu[i]);
break;
case 80:
normalvideo(COL, (i*INC)+ROW, mainMenu[i]);
i++;
if (i == MAXITEM)
i = 0;
reversevideo(COL, (i*INC)+ROW, mainMenu[i]);
break;
}
break;
case 13:
done = 1;
}
}
while (!done);
return(i+49);
}


//Advertise Screen will displayed to utilize empty screen area
//It can be utilize for some effective...work
void advertise(){
setcolor(BLUE);
outtextxy(pixTOrc(30),pixTOrc(20),"URL : cpp.blogfa.com");
outtextxy(pixTOrc(30),pixTOrc(26),"Mail : cpp.myblog@gmail.com");
setcolor(YELLOW);
}


/* The function is used to display the main menu*/
//Actual code for all the menu utility resides in this
//Function...
void control_menu()
{
char choice;
do
{
choice = menu();
switch (choice)
{
case '1': //New
setcolor(BLUE);
outtextxy(pixTOrc(40),pixTOrc(15),"New");
advertise();
getch();
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(pixTOrc(28),pixTOrc(14),pixTOrc(75),pixTOrc(50));
advertise();
break;

case '2': //Open
setcolor(BLUE);
outtextxy(pixTOrc(40),pixTOrc(15),"Open");
advertise();
getch();
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(pixTOrc(28),pixTOrc(14),pixTOrc(75),pixTOrc(50));
advertise();
break;

case '3': //Save
setcolor(BLUE);
outtextxy(pixTOrc(40),pixTOrc(15),"Save");
advertise();
getch();
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(pixTOrc(28),pixTOrc(14),pixTOrc(75),pixTOrc(50));
advertise();
break;

case '4': //Modify the status of item in inventory
setcolor(BLUE);
outtextxy(pixTOrc(40),pixTOrc(15),"About Me");
advertise();
getch();
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(pixTOrc(28),pixTOrc(14),pixTOrc(75),pixTOrc(50));
advertise();
break;

case '5': //Close the program
setcolor(BLUE);
outtextxy(pixTOrc(40),pixTOrc(15),"CLOSE");
advertise();
delay(1000);
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(pixTOrc(28),pixTOrc(14),pixTOrc(75),pixTOrc(50));
advertise();
goto out;
}
} while (choice != MAXITEM);
out:
}



void main()
{
int i,j;

int gd=DETECT,gm=0;
initgraph(&gd,&gm,"c:\\tc\\bgi\\");

///code as space holder\\\\\
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(0,0,640,480);

setcolor(DARKGRAY);
rectangle(0,0,639,480);
rectangle(1,1,638,479);
setcolor(BLACK);
rectangle(2,1,637,478);
rectangle(3,1,636,477);

settextstyle(TRIPLEX_FONT,HORIZ_DIR,4);
setcolor(BLUE);
outtextxy(pixTOrc(8),pixTOrc(2)," MENU -->> (Simple Style) ");

setfillstyle(HATCH_FILL,DARKGRAY);
for(i=15,j=70;i<40||j>40;i++,j--){
bar(pixTOrc(8),pixTOrc(7),pixTOrc(i),pixTOrc(7.5));
delay(10);
bar(pixTOrc(j),pixTOrc(7),pixTOrc(70),pixTOrc(7.5));
delay(20);
}

bar(pixTOrc(7),pixTOrc(14),pixTOrc(25),pixTOrc(50));

///code as space holder\\\\\

//Calling Menu
control_menu();

closegraph();
}

16:

1.

چگونه می توان وقت جاری سیستم را نشان داد :
این کد وقت جاری سیستم را در خروجی چاپ می کند
/*########################################
# WWW :
hammihan.com #
########################################*/

#include <stdio.h>
#include <conio.h>
#include <time.h>

int main()
{
clrscr();

struct tm * Current_Time ;
time_t lt;
lt = time (NULL);
Current_Time = localtime(<);

textcolor(13);
cprintf(asctime(Current_Time));
getch();
return 0;
}
2.

چگونه می توان از وقف ها در زبان C++ استفاده کرد ؟
خوب بد نیست اینجا کمی هم درباره وقفه ها صحبت کنیم .

وقفه ها سیگنال هایی هستند که از برنامه های در حال اجرا و یا دستگاه های جانبی کامپیوتر (چاپگر و مونیتور و موس و .

.

.) در خواست می شود , وقتی وقفه ای اتفاق می افتد اجرای برنامه به تعویق افتاده محتویات ثباتهای CS و IP در پشته نگهداری شده و کنترل روال پاسخگو یی به این وقفه منتقل می شود .

پس از پاسخگو یی به وقفه مورد نظر محتویات CS و IP از پشته ها بازیابی می شود.

تعداد 256 وقفه وجود دارد که هر یک دارای زیر برنامه و توابع مخصوص به خود می باشند که می تواند اعمال مختلفی را اجرا کنند .

لیست وقفه ها را می توانید در مراجع اصلی زبان اسمبلی و با جستجو در اینترنت پیدا کنید .
خوب در زبان C/C++ برای اجرای وقفه ها ابتدا ثباتهای مورد نیاز مقدار دهی شده و بع با هستفاده از تابع زیر اجرا می شود
int ( int intnum , union REGS *in , union REGS *out )
union: یونیونها یک قالب داده می باشد که می تواند انواع مختلفی از داده ها را در خود نگهداری کند و فقط یک نوع داده را می تواند در یک وقت نگهداری کند و این همان تفاوت union با struct ها می باشد , struct ها می تواند در یک وقت چند نوع داده مختلف را نگهداری کند (int , long , double , char)
خوب برای تفهیم بهتر مثالی در زیر آورده شده که که با هستفاده از وقفه صفحه نمایش را پاک کره و مکان نما را به مکان (0و0) انتال می دهد :
/*########################################
# WWW :
hammihan.com #
########################################*/

#include <stdio.h>
#include <conio.h>
#include <dos.h>

void clear_screen(void);//define function
void move_xy(int x,int y);//define function

int main()
{
int x,y;
printf(" This is a test \n");
getch();
clear_screen();// Call Function
move_xy(0,0);//call move_xy function
getch();
return 0;
}

/* Body of clear screen function */
void clear_screen(void)
{
union REGS r ;
r.h.ah = 6;
r.h.al = 0;
r.h.ch = 0;
r.h.cl = 0;
r.h.dh = 23;
r.h.dl = 79;
r.h.bh = 7;
int86(0x10, &r, &r);
}

/* Body of move_xy function */
void move_xy(int x,int y)
{
union REGS r;
r.h.ah = 2;
r.h.bh = 0;
r.h.dh = x;
r.h.dl = y;
int86(0x10, &r, &r);
}

3.

چگونه یک
Progress Bar را در محیط Text پیاده سازی کنیم ؟
for (i = 0;i < 80;i ++)
{
gotoxy (wherex(),21);
cprintf ("کاراکتر مورد نظر");
delay (50);
}

17:

++c

برج هانوی , معمایی هست که از سه میله و N دیسک با اندازه های متفاوت .

فرض شود که اگر دیسکی روی یک میله باشد , فقط دیسکی که قطر اون کوچکتر هست می تواند بالای اون برنامه گیرد مسئله چنین هست که هر بار فقط یک دیسک انتقال یابد .
را حل : این مسئله با هستفاده از یک الگوریتم باز گشتی حل می شود .

-اگر فقط یک دیسک باشد اونگاه اون را به میله مورد نظر انتقال می دهیم .
-اگر n > 1 باشد ; برای این کار n-1 دیسک بالای میله 1 را به میله 2 انتقال می دهیم .

حالا دیسک پایینی میله 1 را ثابت باقی می ماند .

حال دیسک باقیمانده در در میله 1 را به میله 3 منتقل میکنیم .

سرانجام بار دیگر بصورت بازگشتی الگوریتم را فرا خانده تا n - 1 دیسک میله دو را به 3 منتقل کند .
اکنون موفق شدیم n دیسک را از میله 1 به 3 منقل کنیم .
این مسئله در درسهایی مانند ساختمان گسسته و ساختمان داده مورد بحث وبررسی برنامه می گیرد .
تاپيک برنامه نايشانسان هم ميهن

1) if TopN==1, move the single disc from A to C and stop.
2) Move the top n-1 discs from A to B, using C as Inter.
3) Move the remaining disc from A to C.
4) Move the n-1 discs from B to C, using A as destination(dest).
*/

#include <stdio.h>
2a65 #include <conio.h>
void tower(int,char,char,char); /*prototype*/
int main()
{
int ndisk;
clrscr();
printf("\n Enter number of disks <<<::: ");
scanf("%d",&ndisk);
tower(ndisk,'A','B','C'); /*Calling Function*/
getch();
return 0;

} /* End of program */

/********************************************/

// src = Source | aux = Auxiliry | dest = Destination
void tower(int topN, char src,char aux,char dest)
{
if(topN == 1)
{
printf("\n Disk 1 from %c to %c ",src,dest);
}
else
{
tower(topN-1,src,dest,aux); //src to aux
printf("\n Disk %d from %c to %c ",topN,src,dest);
tower(topN-1,aux,src,dest); //aux to dest
}
}
تاپيک برنامه نايشانسان هم ميهن



97 out of 100 based on 77 user ratings 1177 reviews

@