X
تبلیغات
نماشا
رایتل
پشم سنگ عایق الاستومری
پنج‌شنبه 1 بهمن‌ماه سال 1388
توسط: آلفا پک

سورس های برنامه نویسی

در این مطلب نمونه پروژه های برنامه نویسی برای c++  برنامه سازی پیشرفته , درس ساختمان داده ها و سورس های آموزشی زیادی وجود داره از جمله :

شمارنده تعداد حروف بزرگ ، کوچک ، کلمات و .... در ++C
پروژه تبدیل تاریخ هجری شمسی به میلادی ( با تابعی جداگانه) در ++C
پروژه تبدیل تاریخ هجری شمسی به میلادی ( بدون تابع) در ++C
برنامه یا پروژه های آماده تحویل لینک لیست و ساختمان
برنامه یا پروژه های آماده تحویل گرافیکی
برنامه یا پروژه های آماده تحویل متفرقه
سورس مرتب سازی انتخابی Selection sort
سورس مرتب سازی ادغام Merge sort
سورس مرتب سازی Shell sort
بالا مثلثی و پایین مثلثی ماتریس به زبان ++C
سورس مرتب سازی انتخابی ( Selection sort )
سورس مرتب سازی سریع ( Quick sort )
سورس مرتب سازی حبابی ( Bubble sort )
نظرات خود را به من منتقل کنید
پروژه ای بسیار خوب برای کلاس ها ( ثبت نام دانشجو ) در ++C
پروژه فیبوناچی بازگشتی و غیر بازگشتی
آموزش برنامه نویسی C یا ++C به صورت حضوری و خصوصی
کارایی رشته ها و اشاره گر ها در تابع ها
حاصل ضرب دکارتی دو مجموعه بوسیله لینک لیست
جمع دو عدد بوسیله اشاره گرها
ضرب دو ماتریس 3 در 5
جمع دو ماتریس 3 در 5
برابر بودن رشته از دو طرف
به زودی
سورس مرتب سازی صعودی هنگام گرفتن عدد از ورودی
سلام به دوستان
سورس تبدیل (کد کردن) یک عبارت انگلیسی
ضرب 20 در 20 رقمی
مرتب سازی حبابی و نزولی
پروژه های آماده تحویل با بهترین قمیت
عدد های بین دو عدد 10 رقمی
ساخت Splash در ++C
ساخت تایمر در ++C
راه اندازی و استفاده همه جوره از موس در ++C
فاکتوریل عدد های 4 رقمی
تبدیل عدد در مبنای 2 (Binary) به مبنای 8 (Octal)
عدد اول
عبارت ریاضی
تعداد رقم های یک عدد
تبدیل عدد در مبنای 2 (Binary) به مبنای 10 (Decimal)
تبدیل عدد در مبنای 2 (Binary) به مبنای 16 (Hexadecimal)
تبدیل عدد در مبنای 10 (Decimal) به مبنای 16 (Hexadecimal)
تبدیل عدد در مبنای 10 (Decimal) به مبنای 2 (Binary)
تبدیل عدد در مبنای 10 (Decimal) به مبنای 8 (Octal)
پیدا کردن عدد بزرگ در ماتریس
آرایه هایی از حافظه پویا
محدوده عددی انواع داده ها
مثلث خیام

آموزش برنامه نویسی C مقدمه
 
زبان C یکی از زبان های سطح میانی قدرتمند است . زبان های برنامه نویسی را می توان به سه دسته تقسیم کرد : زبان های سطح بالا ، زبانهای سطح میانی و زبان های سطح بالا .

علت میانی بودن زبان C این است که از طرفی همانند زبان سطح پایین مثل اسمبلی قادر است مستقیما به حافظه دستیابی داشته باشد و از طرف دیگر همچون زبان های سطح بالا مثل پاسکال است که از قابلیت خوانایی بالایی برخوردار است  یعنی دستور العمل های این زبان به زبان محاوره ای انسان نزدیک است .
- این زبان قابل انعطاف و بسیار قدرتمند است یعنی هیچ محدودیتی برای برنامه نویس وجود ندارد .

- زبان برنامه نویسی سیستم است . برنامه های سیستم برنامه هایی هستند که امکان بهره برداری از سخت افزار و سایر نرم افزار ها را فراهم می کند .

- ارتباط تنگاتنگی بین زبان C و اسمبلی وجود دارد .

- در این زبان نسبت به حروف حساس است . یعنی بین حروف کوچک و برزگ تفاوت است و تمام دستورات در این زبان به صورت کوچک نوشته می شود .

- دستور العملهای برنامه C دارای ویژگی های زیر است :

1. هر دستور زبان C به ; ختم می شود .

2. در هر سطر می توان چند دستور نوشت که توصیه نمی شه .

3. توضیحات را در بین /* و */ می توان قرار داد و یا بعد از // نوشت .
 
 
انواع داده ها

هدف از برنامه نویسی ورود داده ها به کامپیوتر ، پردازش داده ها و چاپ خروجی است . پس داده ها نقش مهمی را در برنامه نویسی دارند .

داده ها پنج نوع هستند :

1. char : برای ذخیره کردن داده های کاراکتری

2. int : برای ذخیره اعداد صحیح

3. float : برای ذخیره اعداد اعشاری

4. double : برای ذخیره اعداد اعشاری بزرگتر از float

5. void : بعدا توضیح می دم

با استفاده از از کلمات signed (باعلامت) ، unsigned (بی علامت) ، long ، short می توان انواع جدیدی ایجاد کرد .

کلمات  signed ، unsigned ، long ، short را می توان با انواع int به کار برد . نوع char را با signed ، unsigned می توان بکار برد و long به همراه double نیز قابل استفاده اند . به جدول زیر توجه کنید .

نوع                                اندازه به بیت                   بازه

Int                                16 یا 32                         32767- تا 32767

Unsigned int                  16 یا 32                         0 تا 65535

Long int                         32                                 2147483647- تا 2147483647

Unsigned long int           32                                 0 تا 4294967295
 

متغیر ها

متغییر ها نامی برای کلمات حافظه اند که داده ها در آن قرار می گیرند و ممکن در طول اجرا برنامه تغییر کنند.

برای نامگذاری متغیرها می توان از حروف a تا z و A تا Z استفاده کرد حتی از اعداد و زیر خط هم می شه استفاده کرد به جز حرف اول .

; < نام متغیر > نوع داده

مثال :  int x,y   در این مثال x و y از نوع  int تعریف شده است .
 

مقدار دادن به متغیر ها

 برای مقدار دادن به متغیرها از سه روش می توان استفاده کرد :

1. هنگام تعریف متغیر مثل :

            int x=10; با این دستور x از نوع  intبا مقدار اولیه 10

            int n,m=20; با این دستور  nو m از نوع int و مقدار m برابر 20 قرار گرفته است .

            Char ch1='a'; با این دستور ch1 از نوع Char با مقدار اولیه a .

2. پس از تعریف نوع متغیر و با دستور انتساب ( = ) مثل :

            int x,y ;

            x=10; با این دستور مقدار  x برابر 10 قرار گرفته است .

3. با استفاده از دستورات ورودی مثل :

            int x,y ;

            scanf("%d%d",&x,&y) ;

برای توضیح این قسمت فقط اینو بدونید که با استفاده از این دستور می توان از ورودی دو مقدار x و y را دریافت کرد که کاملا بعدا توضیح می دم .
 
ثوابت
مقداری هستند که در برنامه وجود دارند ولی قابل تغییر نیستند ثوابت به دو روش تعریف می شوند .

1. استفاده از دستور #define : بعد از تعریف یعنی در آخر همان خط نباید از " ; " استفاده کنید زیرا از دستورات پیش پردازنده است بهتر است نام این ثوابت بزرگ نوشته شود بدا تو درس های پیشرفته بهتون می گم چرا .

<مقدار>  <نام ثابت>  #define            مثل : #define  VALUE1 10    

2. استفاده از دستور const :

; <مقدار> = <نام ثابت>  <نوع داده>   const

مثل :const   int  value1=10;          یا   const char x='a';

•    email
•    contact


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
آموزش برنامه نویسی C جلسه 1

عملگرها
نمادهایی هستند که اعمال خاصی را انجام می دهند . به چند دسته تقسیم می شوند :

1. عملگرهای محاسباتی 2. عملگرهای رابطه  ای  3. عملگرهای منطقی 4. عملگرهای ترکیبی 5. عملگرهای بیتی

1. عملگر های محاسباتی  : عملگر های ریاضی هستند مثل + - * / که در همه برنامه نویسی ها یکسان است

عملگر                نام                                مثال

-                       تفرق                             x - y

+                      جمع                              x + y

*                      ضرب                             x * y

/                      تقسیم                          x / y

%                     باقیمانده تقسیم             x % y

- -                     کاهش                           x - - یا- -x

+ +                  افزایش                         x++ یا ++ x

نکته : عملوند ها همان متغیرهایی هستند که در بالا با نام های x و y استفاده کرده ایم .

عملگر باقی مانده : طوری عمل می کنه که تقسیم صحیح بین دو عملوند انجام داده و باقی مانده خروجی آن است . مثل :

int x,y,z ;

x=10 ;

y=2 ;

z = x % y ;

در این مثال مقدار متغیر z برابر صفر خواهد بود .

عملگر کاهش : این عملگر از متغیر نسبت داده شده یک واحد کم می کند .

عملگر افزایش : این عملگر به متغیر نسبت داده شده یک واحد اضافه می کند .
 
 
عبارات محاسباتی :

ترکیبی از متغیرها ، ثوابت و عملگرها هستند . در عبارات محاسباتی اگر عملگرهای کاهش و افزایش قبل از عملوند ها قرار بگیرند ابتدا عملگرها عمل می کنند و بعد مقدار آن در محاسبات شرکت می کند ولی اگه بعد از متغیر ها قرار بگیرند اول مقدار در محاسبات شرکت داده می شه بعد عملگر های کاهش و افزایش عمل می کنند مثل :

int x , y ;

x= 10 ;

y = ++x ;

در این مثال اول مقدار x یک واحد اضافه می شود و بعد مقدار آن در  y قرار می گیرد یعنی مقدار 11 و اگه بجای خط سوم این خط نوشته شود

y = x ++ ;

در اول مقدار 10 در y قرار می گیره بعد مقدار x می شه 11 .
 

تقدم عملگرها

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

بالاترین تقدم                   ++  - -

                                    -  (منهای یکانی)

                                    * / %

پایین ترین تقدم               + -

 عملگرهایی که تقدم یکسان دارند مثل اینها * / % تقدم مکانی دارند یعنی هر کدام که زودتر ظاهر شود همان عملگر زود تر انجام می شود . مثل :

int m , x=6 , y = 10 ;

m = x + y / 2 * 3 ;

در این مثال اول متغیر y تقسیم بر 2 می شه بعد مقدار حاصل در 3 ضرب می شه و بعد با مقدار x جمع می شود و در آخر مقدار 21 خواهد بود . اگر تقدم ها را یاد نگیرید حتما می گید که جواب می شه 34  .
 
 
2. عملگرهای رابطه ای : عملگر های رابطه ای ارتباط بین دو عملوند را مشخص می کند . اعمالی مثل تساوی دو مقدار ، کوچکتر یا بزرگتر بودن ، مقایسه با صفر یا غیر صفر و غیره توسط عملگر های رابطه ای مشخص می شود .

این عملگر ها در دستورات شرطی استفاده می شود .

عملگر                            نام                                مثال

<                                  بزرگتر                            x > y

=<                               بزرگتر یا مساوی             x >= y

>                                  کوچکتر                          x < y

==                               مساوی                         x == y

! =                                نامساوی                       x != y
 
 

3. عملگرهای منطقی : بر روی عبارات منطقی عمل می کند . عبارات منطقی دارای دو ارزش درستی یا نادرستی می باشد . در این زبان ارزش نادرستی با مقدار صفر و ارزش درستس با مقدار غیر صفر مشخص می شود .

عملگر ! (نقیض ) وقتی درست است که عملوند آن دارای ارزش نادرستی باشد و وقتی نادست است که مقدار عملوند ارزش درستی داشته باشد در واقع معکوس می کنه . نتیجه عملگر && ( و )  وقتی درست است که هر دو عملوند ارزش درستی داشته باشند و عملگر || ( یا )  وقتی درست است که حداقل یکی از مقادیر ارزش درستی داشته باشد در غیر این صورت مقدار آن نادست است .
 
 
4. عملگرهای ترکیبی : از عملگرهای محاسباتی و علامت = ، مجموعه دیگری از عملگرها ایجاد می شود که عمل محاسباتی و انتساب را انجام می دهند . تقدم این عملگرها پایین تر از سایر عملگرها است .

عملگر                نام                    مثال

=+                   انتساب جمع      x += y

=-                    انتساب تفریق    x -= y

=*                    انتساب ضرب      x *= y

=/                    انتساب تقسیم   x /= y

=%                  انتساب باقیمانده            x %=y

به عنوان مثال معادل دستور x += y برابر x = x + y است .
 
 

5. عملگرهای بیتی : بهتر دونستم که این قسمت و براتون توضیح ندم چون امکان داره گیج بشید و شاید زده بشید پس بعدا توضیح می دهم .
 
 
عملگر  ( ؟ ) :  این عملگر عبارات را ارزیابی کرده و با توجه به ارزش آنها دو عملیات انجام می دهد .

< عبارت 3 > : < عبارت 2 >  ؟  < عبارت >  = متغیر

اگر < عبارت 1 > دارای ارزش درستی باشد ، مقدار ارزیابی شده < عبارت 2 > در متغیر قرار می گیرد وگرنه مقدار ارزیابی شده < عبارت 3 > در متغیر قرار خواهد گرفت . مثل :

int x , y ;

x = 5 ;

y = x > 5  ?  x * 2 : x * 5 ;

 در این مثال چون مقدار x برابر 5 و x از 5 بزرگتر نیست . بنابراین مقدار x * 5 یعنی مقدار 25 در y قرار می گیرد .
 
 

عملگر ( , ) : این عملگر برای انجام چند عمل در یک دستور به کار می رود .

; (< عبارت 2 >  , < عبارت 1 > = متغیر

< عبارت 1 > به نحوی با < عبارت 2 > در ارتباط است . به طوری که ، ابتدا < عبارت 1 > ارزیابی می شود و < عبارت 2 > می تواند از نتیجه آن استفاده کند و حاصل < عبارت 2 > در متغیر قرار می گیرد . مثل :

int x , y ;

y = ( x = 2 , x * 4 / 2 ) ;

در این مثال اول مقدار 2  در  x قرار گرفته و بعد x در 4 ضرب شده و بعد تقسیم بر 2 می شود که حاصل 4 در y قرار می گیرد .
 

عملگر () : عملگر پرانتز عملگری است که تقدم عملگرهای داخل خود را بالا می برد . مثل :

y = ( 3 + 1) * 2 / 2  ;

در این مثال اول 3 + 1 شده ( ولی می دونیم تقدم + پایین ولی با عملگر پرانتز تقدم آن بالا می رود و اول اجرا می شه ) و بعد در 2 ضرب شده و بعد تقسیم بر 2 می شه که حاصل 4 در y قرار می گیرد .
 
 
کل تقدم ها :

بالا ترین تقدم                  ()

                                    ! ++ --

                                    + -

                                    =<  <  =>  >

                                    =! ==

                                    &&

                                    ||

                                    ؟

پایین ترین تقدم               =% =/ =* =- =+ =
آموزش برنامه نویسی C جلسه 2

چهارشنبه 2 بهمن 1387
 
توابع و سایر اطلاعاتی که کامپایلر برای ترجمه برنامه به آن احتیاج دارد در تعدادی از فایل ها به نام سرآیند (header ) قرار دارند . پسوند این فایل ها .h است و معمولا بر روی فهرستی از دیسک به نام INCLUDE قرار دارند . باید بدانیم هر تابع مورد استفاده در برنامه ، در کدام فایل سرآیند قرار دارد و همان فایل را به برنامه اضافه کنیم . به عنوان مثال ، تابع scanf() که برای ورود داده ها از صفحه کلید است در فایلی به نام stdio.h قرار دارد .

برای اتصال فایل های سرآیند به برنامه C از دستوری به نام #include استفاده می کنیم . این دستور هم از دستورات پیش پردازنده است . پیش پردازنده ، مترجمی است که با مشاهده دستوراتی که با # آغاز می شوند اجرا می شود .
 
تعریف : <نام فایل سرآیند> #include

نکته : بین # و include نباید فاصله باشد و بین علامتهای > و < نباید فاصله باشد .

همه زبان های برنامه نویسی دارای یک بدنه اصلی می باشد .
 
<نام فایل سرآیند> #include

int main()

{

اعلان متغیرها

دستورات اجرایی
return 0 ;

}
همه برنامه ها به زبان C دارای تابع اصلی یا main هستند .البته به جز این تابع می توان تابع های دیگری هم به کار برد که طریقه نوشتن تابع ها بعدا گفته می شه . در واقع تابعها از مجموعه ای از دستورات تشکیل می شود که عملیات خاصی را انجام می دهند مثل تابع scanf()

بعد از اجرای دستورات باید مقداری به ویندوز برگردانده شود تا سیستم عامل متوجه بشه که برنامه با موفقیت به پایان رسیده است به همین دلیل آخرین دستور برنامه C با return 0 به پایان می رسد . مقداری که به سیستم عامل برمی گردونه باید از نوع int باشه به همین دلیل تابع main رو از نوع int تعریف کردم .
 
چند نکته:

1. دستور العمل های برنامه با } شروع شده به { ختم می شوند .

2. برای اضافه کردن چند فایل سرآیند به برنامه ، برای هر کدام از آنها باید یک دستور #include نوشت .

3. متغیرها در ابتدای برنامه و بلافاصله بعد از } تعرف می شوند .
 
 
چاپ اطلاعات با printf()

این تابع در فایل stdio.h قرار دارد برای چاپ اطلاعات در صفحه نمایش به کار می رود اگر این تابع با موفقیت اجرا بشه تعداد کاراکترهایی را که به خروجی منتقل می شوند را برمی گرداند در صورت وجود خطا یک مقدار منفی برگردانده می شود .

(<عبارت 2>, <عبارت 1> printf

در این تابع <عبارت 2> اطلاعاتی است که باید به خروجی برود و <عبارت 1> می تواند شامل مقدارهای زیر باشد .

1. اطلاعاتی که باید عینا در خروجی چاپ شود

2. کاراکترهای تعیین کننده فرمت خروجی . این کاراکترها نوع اطلاعاتی را که در <عبارت 2> وارد شده و باید به خروجی بروند را مشخص می کند . کاراکتر های فرمت با % شروع می شوند .

3. کاراکترهای کنترلی . این کاراکترها شکل خروجی اطلاعات را مشخص می کنند . اینکه آیا اطلاعات فقط در یک سطر باشند یا در چند سطر و یا اطلاعات با فاصله خاصی از یکدیگر چاپ شوند یا خیر . کاراکتر های کنترلی با \ شروع می شوند .

نکته : در این تابع می توان <عبارت 2> وجود نداشته باشد .

کاراکترهای فرمت تابع printf()
کاراکتر       نوع اطلاعاتی که باید به خروجی برود

%c               یک کاراکتر           

%d               اعداد صحیح دهدهی مثبت و منفی

%f                اعداد اعشاری ممیز شناور

%s               رشتهای از کاراکتر ها

%p               اشاره گر

%n               موجب می شود که تعداد کاراکترهایی که قبل از این کاراکتر به خروجی رفته است بشمارد و در متغیر متمایز قرار دهد 

%%             علامت %

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

کاراکترهای کنترلی تابع printf()

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

 \f              موجب انتقال کنترل به صفحه جدید می شود

\n              موجب انتقال کنترل به خط جدید می شود

\t               انتقال به 8 محل بعدی صفحه نمایش

 \"              چاپ کوتیشن ( " )

 \'              چاپ کوتیشن ( ' )

 \\             چاپ back slash

 \v             انتقال کنترل به 8 سطر بعدی
 

مثال :

#include <stdio.h>

int main()

{

printf(" C is a language ";

return 0;

}
خروجی :

C is a language

این مثال همین طور که می بینید فقط دارای <عبارت 1> است . بنابراین مقدار که در داخل کوتیشن قرار دارد چاپ می شود .

مثال :

#include <stdio.h>

int main()

{

printf("C is a language\n";

printf("and it is my favourite";

return 0 ;

}
 
خروجی :

C is a language
and it is my favourite

در این مثال همین طور که می بینید از \n استفاده شده است که صفحه کنترل را به خط بعد می برد .
 
مثال :

#include <stdio.h>
int main()

{
int x = 10 ;

float y = 15.5 ;

char ch = 'a'

printf("\n x=%d, y =%f , ch = %c" , x,y,ch) ;

printf("\n address of x is : %p",&x) ;

return 0 ;

}
خروجی :

x = 10 , y =15.500000 , ch = a

address of x is : FFF4
در دستور printf اولی کاراکتر \n سطر جاری رو رد می کنه . کاراکتر های x= عینا به خروجی می روند و با فرمت %d مقدار x یعنی 10 به خروجی می رود . سپس کاما و کاراکتر های y= عینا در خروجی چاپ می شوند . و با فرمت %f مقدار y یعنی 15.5 در خروجی چاپ می شود و ادامه هم مثل همین .

در دستور printf دومی آدرس متغیر x در خروجی چاپ می شود که این آدرس در کامپیوتر شما ممکنه فرق کنه . البته در این مورد کاملا بعدا توضیح می دهم .
 

مثال :

#include <stdio.h>

int main()

{

int count ;

printf("This is a %n test statment",&count) ;

printf("\n count = %d",count) ;

return 0 ;

}
خروجی :

This is a test statment

count = 10

کاراکتر فرمت %n مشخص می کند که تا قبل از آن چند کاراکتر به خروجی رفته است و تعداد آن را در متغیر count قرار می دهد و بعد مقدار 10 با printf بعدی چاپ می شود .
 
اگه دقت کرده باشید در بعضی مثال ها در دستورات printf در عبارت 2 آنها قبل از متغیر ها علامت & قرار دادم . این علامت وقتی قرار میگیره که شما بخواهید مقداری رو به اون متغیره بدهید و وقتی بخواهید مقداری را از متغیر ها را چاپ کند اون علامت و نمی گذاریم . حالا یک بار دیگه با دقت مثال ها رو بخوان .
 
مشاهده صفحه خروجی :

اگر برنامه هایی رو که تا اینجا آموزش دادم رو تست کرده باشید می بینید که اطلاعات زود ظاهر می شوند و بعد می روند برای اینکه اطلاعات زود از صفحه نروند از تابع getch() استفاده می کنیم این تابع منتظر می ماند تا شما کلیدی رو فشار بدهید بعد برنامه بسته می شود . الگوی این تابع در فایل conio.h قرار دارد . این تابع کاربردهای زیادی داره که بعدا می گم .

پاک کردن صفحه نمایش :

بهتر است که قبل از هر بار که خروجی چاپ می شود صفحه نمایش پاک شود برای این کار از تابع clrscr() که در فایل conio.h قرار دارد استفاده کنید .


آموزش برنامه نویسی C جلسه 3

چهارشنبه 2 بهمن 1387
 
انتقال مکان نما در صفحه خروجی

گاهی ممکن است بخواهید مکان نما را در صفحه خروجی به محل خاصی منتقل کنید و اطلاعات را از آنجا دریافت و یا چاپ کنید برای این منظور از تابع gotoxy() استفاده می کنیم که در فایل conio.h قرار دارد و به صورت زیر است

Gotoxy(int x , int y);

کهx  شماره ستون و y شماره سطر می باشد .
 
چاپ اعداد نوع short و long

برای چاپ اطلاعات عددی از نوع long و short از کاراکترهای خاصی استفاده می شود کاراکتر L به همراه d برای چاپ مقادیر long و کاراکتر h به همراه d برای چاپ مقادیر short به کار می رود البته شکلهای دیگری هم داره ولی همین بسه .
 
مثال :

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

int main()
{
            short int x = 15 ;
            long int m = 35789 ;
            clrscr() ;
            gotoxy(20,10) ;
            printf("\n x=%hd, m=%ld",x,m) ;
            getch() ;
            return 0 ;
}

تعیین طول میدان در تابع Printf()

با استفاده از امکانات دیگری که در تابع printf() وجود دارد ، می توان مشخص کرد که هر کدام از اطلاعاتی که به خروجی می رود چند بایتاز فضای خروجی را اشغال کنند . فضایی را که هر قلم اطلاعات اشغال می کند طول میدان خروجی می گویند .

طول میدان مقادیر صحیح به صورت %wd است که w طول میدان می باشد اگر طول میدان بیشتر از تعداد ارقام باشد عدد در سمت راست میدان قرار می گیرد و سمت چپ آن خالی می ماند و اگر طول میدان کمتر از تعداد ارقام باشد طول میدان نادیده گرفته می شود و تمام ارقام به خروج می رود .

طول مقادیر اعشاری به صورت %w.df است که در آن w طول کل میدان و d تعداد ارقام اعشار و البته نقطه هم یکی از تعداد طول میدن است . اگر تعداد ارقام اعشار از طول میدان اعشار بیشتر باشد قسمت اعشار گرد می شود یعنی اگر بزرگتر از 5 باشد یک رقم به قسمت اعشار اضافه می شود و اگر کمتر باشد رقم حذف می شود .
 
 
مثال :

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

int main()
{
        int x = 125 , y = 1468 ;
        float m = 327.348, n = 4351.32 ;

         clrscr() ;
        printf(“x = %5d, y = %3d, sum = %d”,x,y,x+y) ;
        printf(“\n m = %7.2f, n = %6.2f”,m,n) ;
        printf(“\n%5.10s”,”this is a sample output.”) ;
        getch() ;

        return 0 ;
}

اگه خودتون این مثال و تست کنید بهتر می فهمید چه اتفاقی می افته .

اگر برای چاپ یک عدد صحیح ، از طول میدانی به شکل %w.dd استفاده شود ، d حداقل طول میدان را مشخص می کند . اگر طول میدان رشته ها به صورت %w.ds باشد ، w حداقل طول میدان و d حداکثر کاراکترهای قابل چاپ را مشخص می کند .
 
 
ورود اطلاعات توسط تابع scanf()

این تابع برای ورود اطلاعات از صفحه کلید مورد استفاده قرار می گیرد و یک تابع همه منظوره در ورود داده ها است .

الگوی این تابع در فایل stdio.h قرار دارد .این تابع ، تمام انواع داده ها را می تواند از ورودی بخواند و آنها را در حافظه ذخیره نماید . اگر این تابع با موفقیت اجرا شود ، تعداد متغیرهایی را که از ورودی خوانده است برمی گرداند و در صورت بروز خطا ، EOF توسط تابع برگردانده می شود . EOF مقداری است که بیانگر عدم اجرای صحیح تابع scanf() است . این تابع به صورت زیر به کار می رود :

 ;(< عبارت 2 > , "< عبارت 1 >" scanf

<عبارت 2> آدرس متغیرهایی است که باید از ورودی خوانده شوند و <عبارت 1> مشخص می کند که مقادیر ورودی چگونه باید خوانده شوند و در متغیرهایی که آدرس آنها در <عبارت 2> مشخص شده است قرار گیرند <عبارت 1> شامل سه نوع کاراکتر است :

1. کاراکترهای فرمت : این کاراکترها مشخص می کنند که چه نوع اطلاعاتی باید از ورودی خوانده شوند و با % شروع می شوند .

کاراکتر       اطلاعاتی که خوانده می شوند 

%c               یک کاراکتر           

%d               اعداد صحیح دهدهی

%f                اعداد اعشاری ممیز شناور

%s               رشته ها 

%p               یک اشاره گر

%n               مشخص کننده تعداد کاراکترهایی است که تا %n از ورودی خوانده شده اند

2. کاراکترهای فضای خالی : وجود فضای خالی در <عبارت 1> موجب می شود تا تابع scanf() از فضای خالی موجود در ابتدای اطلاعات ورودی صرفنظر کند . کاراکتر های جدول بندی (tap) ، خط جدید (new line) و رد کننده صفحه (form feed) نیز به عنوان فضای خالی محسوب می شوند .
 
 
3. کاراکترهای غیر از فضای خالی و فرمت : وجود چنین کاراکتری موجب می شود تا چنانچه همان کاراکتر در رشته ورودی و جود داشته باشد ، آن را خوانده از آن صرفنظر کند . به عنوان مثال ، “%d,%d” موجب می شود تا یک عدد صحیح خوانده شود ، سپس یک کاما خوانده و از آن صرفنظر شود و سپس عدد صحیح دیگری خوانده شود . اگر کاراکتر مشخص شده در <عبارت 1> در رشته ورودی وجود نداشته باشد ، تابع scanf() خاتمه می یابد . برای خواندن و سپس صرفنظر از علامت % باید %% را در <عبارت 1> به کار برد .

وقتی دستور scanf() اجرا می شود ، منتظر می ماند تا داده ها را از صفحه کلید دریافت نماید . هنگام وارد کردن داده ها ، هر یک از اقلام داده را با یک فاصله یا کاما از هم جدا کنید و پس از ورود داده ها ، کلید Enter را فشار دهید .
مثال :

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

int main()
{

int x , y , area , p ;
    
clrscr() ;     
printf(“Enter length and width :”) ;     
scanf(“%d%d”, &x , &y) ;     
area = x * y ;     
p = (x + y) * 2 ;     
printf(“ Area = %d, p = %d”, area , p) ;     
getch() ;     

return 0 ;     
}

ورودی برنامه ، طول و عرض مستطیل اند که آنها را به ترتیب در x و y قرار می دهد .

عرض * طول = مساحت مستطیل ß  که مقدار به دست آمده در متغیر area ذخیره می شود

2 * (عرض + طول ) = محیط مستطیل ß  که مقدار به دست آمده در متغیر p ذخیره می شود

و حاصل توسط تابع  printf() چاپ می شود .
 
مثال :

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

int main()
{
int x , y , n ;      
float ave ;      

clrscr() ;      
printf(“\nEnter three integers :”) ;     
scanf(“%d%d%d”, &x , &y , &n) ;     
ave = (float)( x + y + n) / 3 ;     
printf(\nave = %6.2f” , ave) ;     
getch() ;     
return 0 ;     
}

این مثال سه عدد از ورودی دریافت می کند و میانگین آنها را حساب می کند .

چون هر سه عدد از نوع صحیح هستند ، مجوع آنها نیز صحیح خواهد بود . پس از تقسیم شده مجموع بر عدد 3 حاصل نیز صحیح خواهد شد یعنی تقسیم یه صورت صحیح انجام می شود در حالی که انتظار داریم تقسیم به صورت اعشاری انجام شود و میانگین اعشاری چاپ شود . برای این منظور باید تبدیل نوع صورت گیرد . چون می خواهیم تقسیم به صورت اعشاری باشد ، قیل از تقسیم ، نوع اعشاری ، یعنی float را دز داخل پرانتز قرار می دهیم . این روش تبدیل نوع را type casting گویند .
 

مثال :

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

int main()
{
int x , y ;       

clrscr() ;       
printf(“\n Enter two integers :”) ;       
scanf(“%d%d”, &x , &y) ;       
printf(“\n before change : x = %d , y = %d”,x , y) ;       
x += y ;       
y = x – y ;       
x -= y ;       
printf(“\n after change : x = %d , y = %d”, x , y) ;       
getch() ;       

return 0 ;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

مثلث خیام

 
این سورس مثلث خیام برات رسم می کنه . در این سورس از توابع ++C استفاده شده .
 
 
#include <stdio.h>
#include <stdlib.h>
#define num 10
void main(){
 int i,j,n,x[num][num];
 for(i=0;i<num;i++){
  x[i][0]=1;
  for(j=1;j<num;j++)
   x[i][j]=0;
 }
 for(i=0;i<num;i++)
  for(j=0;j<num && x[i][j]!=0;j++){
   n=x[i][j]+x[i][j+1];
   x[i+1][j+1]=n;
  }
 for(i=0;i<num;i++){
  for(n=num-i;n>0;n--)
   printf("  ");
  for(j=0;j<num && x[i][j]!=0;j++)
   printf("%4d",x[i][j]);
  printf("\n");
 }
 exit(1);
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

محدوده عددی انواع داده ها


 
میخواهید بفهمید که محدوده عددی انواع داده ها تو زبان برنامه نویسی  C چقدره ؟  اگه اینطوری این سورس و نگاه کنید .
میخواهید بفهمید که محدوده عددی انواع داده ها تو زبان برنامه نویسی  C چقدره ؟  اگه اینطوری این سورس و نگاه کنید .
 
#include <iostream.h>
#include <limits.h> //defines the constants SHRT_MIN, etc.
int main()
{ //prints some of the constants stored in the <limits>
header:
cout << "minimum short = " << SHRT_MIN << endl;
cout << "maximum short = " << SHRT_MAX << endl;
cout << "minimum unsigned short = 0" << endl;
cout << "maximum unsigned short = " << USHRT_MAX << endl;
cout << "minimum int = " << INT_MIN << endl;
cout << "maximum int = " << INT_MAX << endl;
cout << "minimum unsigned int = 0" << endl;
cout << "maximum unsigned int = " << UINT_MAX << endl;
cout << "minimum long = " << LONG_MIN << endl;
cout << "maximum long = " << LONG_MAX << endl;
cout << "minimum unsigned long = 0" << endl;
cout << "maximum unsigned long = " << ULONG_MAX << endl;
return 0;
}
•    email
•    contact
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
آرایه هایی از حافظه پویا

 
اگه نمی توانید از حافظه پویا برای آرایه های یک بعدی یا دو بعدی و n  بعدی استفاده کنید این سورس و حتما دانلود کنید .
اگه نمی توانید از حافظه پویا برای آرایه های یک بعدی یا دو بعدی و n  بعدی استفاده کنید این سورس و حتما دانلود کنید .
#include <iostream.h>
#include <stdlib.h>
#define n 2
#define m 6
int *k,*y;
/
/
void main(){
 int i,j,*k,*y;

 y=(int*)calloc(m,sizeof(int));
 if(y==NULL)
  exit(1);
 k=(int*)calloc(m*n,sizeof(int));
 if(k==NULL)
  exit(1);

 // neveshtan too hafeze ( array n*m )
 for(i=0;i<n;i++)
  for(j=0;j<m;j++)
   k[(i*m)+j]=1;
 // neveshtan too hafeze ( array m )
 for(i=0;i<m;i++)
   y[i]=2;
  // khandan az hafeze ( array n*m )
 for(i=0;i<n;i++)
  for(j=0;j<m;j++)
   cout<<k[(i*m)+j]<<endl;
 // khandan az hafeze ( array m )
 cout<<endl;
 for(i=0;i<m;i++)
   cout<<y[i]<<endl;
}

 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

پیدا کردن عدد بزرگ در ماتریس

 
اگه می خواهید به روش بازگشتی بزرگترین عدد یک ماتریس و پیدا کنی از این سورس استفاده کن ؟
سورس جالبی یه .
 
#include <stdio.h>
#define n 3
int Big(int);
int i,j,x[n][n];
main(){
 for(i=0;i<n;i++)
  for(j=0;j<n;j++)
   scanf("%d",&x[i][j]);
 i=0;
 j=0;
 printf("%d",Big(x[i][j]));

}
//****
int Big(int tmp){
 if(j<n-1)
  j++;
 else if(i<n-1){
  i++;
  j=0;
 }
 else
  return tmp;
 if(x[i][j]>tmp)
  return(Big(x[i][j]));
 else
  return(Big(tmp));
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


تبدیل عدد در مبنای 10 (Decimal) به مبنای 8 (Octal)

 
این سورس برای تبدیل عدد در مبنای 10 (Decimal) به مبنای 8  (Octal) خیلی خوب عمل می کنه . به زوی تبدیل های دیگه ای رو هم می گذارم .
نظر یادتون نره هااااااااااااااااا.
#include <stdio.h>
#define max 10
main(){
 float x,t;
 int a[max],s[max],tmp,i,j=0,z=0;
 printf("\n Decimal --> Octal");
 printf("\n\n Enter a Number(Right --> 245): ");
 scanf("%d",&tmp);
 printf("\n Enter a Number(Decimal --> .126): ");
 scanf("%f",&x);
 for(i=0;i<max && x!=0.000000;i++){ 
  t=(float)x*8;                  
  a[i]=(int)t;                
  x=t-a[i];                      
 }                                 

            
 while(tmp>=8){                    
  s[j++]=tmp%8;                 
  tmp/=8;                       
 }                                 
 j--;

 printf("\n\n Octal = %d",tmp);
 for(z=j;z>=0;z--)
  printf("%d",s[z]);
 printf(".");
 for(z=0;z<i;z++)
  printf("%d",a[z]);
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

تبدیل عدد در مبنای 10 (Decimal) به مبنای 2 (Binary)

 
این سورس برای تبدیل عدد در مبنای 10 (Decimal) به مبنای 2  (Binary) نوشته شده است 
#include <stdio.h>
#define max 10
main(){
 float x,t;
 int a[max],s2[max],tmp,i,j=0,z=0;
 printf("\n Decimal --> Binary");
 printf("\n\n Enter a Number(Right --> 245): ");
 scanf("%d",&tmp);
 printf("\n Enter a Number(Decimal --> .126): ");
 scanf("%f",&x);
            
 while(tmp>=2){                   
  s2[j++]=tmp%2;                  
  tmp/=2;                         
 }                                  
 j--;
 printf("\n\n Binary = %d",tmp);
 for(j;j>=0;j--)
  printf("%d",s2[j]);

 for(i=0;i<max && x!=0.000000;i++){ 
  t=(float)x*2;                  
  a[i]=(int)t;                   
  x=t-a[i];                       
 }                                  
   printf(".");
 for(z=0;z<i;z++)
  printf("%d",a[z]);
}
•    email
•    contact
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

تبدیل عدد در مبنای 10 (Decimal) به مبنای 16 (Hexadecimal)

 
این سورس برای تبدیل عدد در مبنای 10 (Decimal) به مبنای 2  (Hexadecimal) نوشته شده است
 
#include <stdio.h>
#define max 10
void Hex(int);

main(){
 int s16[max],tmp,j=0;
 printf("\n Decimal --> Hexadecimal");
 printf("\n\n Enter a Number(Right --> 245): ");
 scanf("%d",&tmp);
            
 while(tmp>=16){                   
  s16[j++]=tmp%16;                
  tmp/=16;                       
 }                                  
 j--;
 printf("\n\n HexaDecimal = ");
 Hex(tmp);
 for(j;j>=0;j--)
   Hex(s16[j]);
}
//*
void Hex(int x){
 switch(x){
   case 10: printf("%c",'A'); break;
   case 11: printf("%c",'B'); break;
   case 12: printf("%c",'C'); break;
   case 13: printf("%c",'D'); break;
   case 14: printf("%c",'E'); break;
   case 15: printf("%c",'F'); break;
   default: printf("%d",x);
  }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

تبدیل عدد در مبنای 2 (Binary) به مبنای 16 (Hexadecimal)

 
این سورس برای تبدیل عدد در مبنای 2 (Binary) به مبنای 16  (Hexadecimal) نوشته شده است
 
 
#include <stdio.h>
#include <math.h>
#include <string.h>
#define max 100
void Hex(int);
main(){
 char s[max];
 int tmp,x[4],s16[max/4],i,j,z=-1,w;
 printf("\n Enter a Number Binary :");
 scanf("%s",s);
 strrev(s);
 for(i=strlen(s);i<max && i%4!=0;i++){
  s[i]='0';
  s[i+1]='\0';
 }
 for(i=0,j=0,z=-1;i<max && s[i];i++){
  x[j++]=(s[i]-48);
  if(j==4){
   for(j=0,w=0;j<=4;j++)
    x[j]*=pow(2,w++);
   for(j=0,tmp=0;j<4;j++)
    tmp+=x[j];
   s16[++z]=tmp;
   j=0;
  }
 }
 printf("\n\n HexaDecimal = ");
 for(j=z;j>=0;j--)
   Hex(s16[j]);
}
//*
void Hex(int x){
 switch(x){
   case 10: printf("%c",'A'); break;
   case 11: printf("%c",'B'); break;
   case 12: printf("%c",'C'); break;
   case 13: printf("%c",'D'); break;
   case 14: printf("%c",'E'); break;
   case 15: printf("%c",'F'); break;
   default: printf("%d",x);
  }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
تبدیل عدد در مبنای 2 (Binary) به مبنای 10 (Decimal)

 
این سورس برای تبدیل عدد در مبنای 2 (Binary) به مبنای 10  (Decimal) نوشته شده است
 
#include <stdio.h>
#include <math.h>
#include <string.h>
#define max 100
main(){
 char s[max];
 int tmp,x[4],i,w,sum;
 printf("\n Enter a Number Binary :");
 scanf("%s",s);
 strrev(s);
 sum=0;
 for(i=0,w=0;i<=max && s[i];i++){
  tmp=(s[i]-48);
  tmp*=pow(2,w++);
  sum+=tmp;
 }
 printf("\n\n Decimal = %d",sum);
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

تعداد رقم های یک عدد
 
این سورس رو هم یکی از دوستان درخواست کرده که خیلی ساه است . یک عدد از ورودی می گیره و تعداد رقم هاش و بر می گردونه .
 
#include <stdio.h>
main(){
 int x,c=0;
 printf("\n Enter A number :");
 scanf("%d",&x);
 while(x!=0){
  x/=10;
  c++;
 }
 switch(c){
  case 1: printf("\n One "); break;
  case 2: printf("\n Two "); break;
  case 3: printf("\n Three "); break;
  case 4: printf("\n Four "); break;
  default :  printf("\n Other "); break;
 }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

عبارت ریاضی

 
این سورس هم یک عبارت ریاضی دریافت می کنه و حاصل اون و بهتون می ده .
 
 
#include <iostream.h>
int convert(int,int,char);
main(){
 char s[100],amalgar[10];
 int i=0,j=0,z=0,tmp,amalvand[10];
 for(i=0;i<10;i++)
  amalvand[i]=0;
 cout<<"\n Enter a statment :";
 cin>>s;
 i=0;
 while(s[i]!='\0'){
  if(s[i]!='+' &&  s[i]!='-' && s[i]!='*' && s[i]!='/' ){
   amalvand[j]*=10;
   amalvand[j]+=(s[i]-48);
  }
  else if(s[i]=='+' ||  s[i]=='-' || s[i]=='*' || s[i]=='/'){
   j++;
   amalgar[z++]=s[i];
  }
  i++;
 }
 z=0;
 i=0;
 tmp=amalvand[i++];
 while(amalvand[i]!=0){
  tmp=convert(tmp,amalvand[i],amalgar[z]);
  i++;
  z++;
 }
 cout<<"\n\n Value = "<<tmp;
}
//***
int convert(int x,int y,char a){
 switch(a){
  case '+': return(x+y);
  case '-': return(x-y);
  case '*': return(x*y);
  case '/': return(x/y);
 }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

عدد اول
 
این سورس و یکی از دوستان در خواست کرده که در اینجا قرار می دهم . این سورس عدد اول را به خوبی تشخیص می دهد .
#include <stdio.h>
#include <conio.h>
int prime(int);
main(){
 int num;
 char ans;

 while(1){
      clrscr();
  printf("\n enter a number :");
  scanf("%d",&num);
  if(prime(num))
   printf("\n Number %d is prime.",num);
  else
   printf("\n Number %d is not prime.",num);
  printf("\n\n Do you want to continue?(y/n):");
  ans=getche();
  if(ans!='y')
   break;
 }
 getch();
}
//****
int prime(int num){
 int i,tmp=1;
 for(i=2;(i<=num/2)&& tmp;i++)
  if(num%i==0)
   tmp=0;
 return tmp;
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

تبدیل عدد در مبنای 2 (Binary) به مبنای 8 (Octal)

این سورس برای تبدیل عدد در مبنای 2 (Binary) به مبنای 8  (Octal) نوشته شده است
 
#include <stdio.h>
#include <math.h>
#include <string.h>
#define max 100

main(){
 char s[max];
 int tmp,x[4],s8[max/3],i,j,z=-1,w;
 printf("\n Enter a Number Binary :");
 scanf("%s",s);
 strrev(s);
 for(i=strlen(s);i<max && i%3!=0;i++){
  s[i]='0';
  s[i+1]='\0';
 }
 for(i=0,j=0;i<max && s[i];i++){
  x[j++]=(s[i]-48);
 if(j==3){
   for(j=0,w=0;j<3;j++)
    x[j]*=pow(2,w++);
   for(j=0,tmp=0;j<3;j++)
    tmp+=x[j];
   s8[++z]=tmp;
   j=0;
  }
 }
 printf("\n\n Octal = ");
 for(j=z;j>=0;j--)
   printf("%d",s8[j]);
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

فاکتوریل عدد های 4 رقمی

 
این سورس فاکتوریل عدد های 4 رقمی رو بدست می آورد . سورس خیلی خوبی یه ولی کامل تر و بهتر شو برای فروش گذاشتم . به لینک زیر مراجعه کنید .
 
لینک : http://www.volcano-c.mihanblog.com/extrapage/projectamade
 
 
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <alloc.h>
#define MaxY 8120

int far *k,*y,*z;
int x[4];
void multiply(void);
void Fact(int);
/
/
void main(){
 int f;
 y=(int*)farcalloc(MaxY,sizeof(int));
 if(y==NULL)
  exit(1);
 k=(int*)farcalloc(MaxY*4,sizeof(int));
 if(k==NULL)
  exit(1);
 k=(int*)farcalloc(MaxY*4,sizeof(int));
 clrscr();
 cout << "\n Enter a Number :";
 cin >> f;
 Fact(f);
 farfree(y);
 farfree(k);
}
/
/
void Fact(int f){
 int i,j,t,tmp;
 y[MaxY]=1;
 for(i=1;i<=f;i++){
  tmp=i;
  t=3;
  while(tmp!=0){
   x[t--]=tmp%10;
   tmp/=10;
  }
  multiply();
 }
 cout<<"\n\n Value = ";
 for(i=0;i<MaxY && y[i]==0 ;i++);
 for(i;i<=MaxY;i++)
  cout<<y[i];
 getch();
}
/
/
void multiply(void){
 register int i,j,z,z1;
 int tmp,c;
 c=0;
 z=MaxY;
 for(i=3;i>=0;i--)
  for(j=MaxY;j>=0;j--){
   tmp=(x[i]*y[j])+c;
   c=0;
   while(tmp>=10){
    c++;
    tmp-=10;
   }
   if(j==MaxY)
    z1=z--;
   k[(i*MaxY)+z1--]=tmp;
  }
 c=0;
 for(j=MaxY;j>=0;j--){
  for(i=0;i<4;i++)
   tmp+=k[(i*MaxY)+j];
  tmp+=c;
  c=0;
  while(tmp>=10){
   c++;
   tmp-=10;
  }
  y[j]=tmp;
  tmp=0;
 }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

راه اندازی و استفاده همه جوره از موس در ++C
 
سلام رفقا . ببخشید که یکم دیر سورس قرار می دم .
یه سورس خیلی توپ براتون گذاشتم که فکر نکنم که مثل شو دیده باشید . این سورس موس و تو C++ فعال می کنه و هر کاری که می خواهید با موس انجام بدهید رو داره .
اگه احتیاج به توضیح داشت بهم sms بزنید چون وقت نمی کنم همه نظرا ت و بخونم . مرسی .
 
 
#include <graphics.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
//***********************************
int Mouse(void){
 REGS in,out;
 in.x.ax=0x00;
 int86(0x33,&in,&out);
 if(out.x.ax==0) return 0;
 return 1;
}
//***********************************
void ShowCursor(void){
 REGS in,out;
 in.x.ax=0x01;
 int86(0x33,&in,&out);
}
//***********************************
void HideCursor(void){
 REGS in,out;
 in.x.ax=0x02;
 int86(0x33,&in,&out);
}
//***********************************
void CursorLocate(int* column,int* row){
 REGS in,out;
 in.x.ax=0x03;
 int86(0x33,&in,&out);
 *column=out.x.cx;
 *row=out.x.dx;
}
//***********************************
void CursorTo(int column,int row){
 REGS in,out;
 in.x.ax=0x04;
 in.x.cx=column;
 in.x.dx=row;
 int86(0x33,&in,&out);
}
//***********************************
int Click(int key){
 REGS in,out;
 in.x.ax=0x05;
 in.x.bx=key;
 int86(0x33,&in,&out);
 return out.x.bx;
}
//***
void fill_circle(int x,int y,int r, int c){
 setcolor(c);
 while(r){
  circle(x,y,r);
  r--;
 }
}
//***********************************
main(){
 int *x,*y,driver=0,mode=DETECT;
 initgraph(&driver,&mode,"");
 Mouse();
 ShowCursor();
 CursorTo(0,0);
 setcolor(15);
 circle(300,200,10);
 //rectangle(290,190,310,210);
 while(1){
  CursorLocate(x,y);
  if(*x>=290 && *x<=310 && *y>=190 && *y<=210 && Click(0)==1){
   HideCursor();
   fill_circle(300,200,10,20);
   getch();
   exit(1);
  }
 }
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ساخت تایمر در ++C
 
این سورس یک تایمر که می تونید ازش همه جا استفاده کنید مثل : بازی هاتون .
 
 
 
 
#include <time.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <graphics.h>
#include <dos.h>

main(void){
   int gdriver = DETECT, gmode, a;
   char str[10];
   initgraph(&gdriver, &gmode, "");
   while(!kbhit()){
 a=clock() / CLK_TCK;
 a=120-a;
 itoa(a,str,10);
 setcolor(15);
 outtextxy(10,10,str);
 sleep(1);
 setcolor(0);
 outtextxy(10,10,str);
   }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ساخت Splash در ++C
 
این یک سورس گرافیکی یه که یک Splash  رو شبیه سازی می کنه . حتما Splash ویندوز ها رو دیدید Splash  یه چیزی یه که وقتی یه برنامه در حال بارگذاری یه نمایش داده می شود .
توجه داشته باشید که بیشتر برنامه ها که در این وبلاگ قرار گرفته است با برنامه Turbo C++ 3.0 DOS به بالا تر اجرا میشه ( حتما تحت داس مخصوص گرافیکی ها)
 
رفقا نظرات خود تون و بهم sms  بزنید . مرسی .
 
#include <graphics.h>
#include <dos.h>

int x=-1,y=0,z=0,q=0;

void splash();
void Change_Color_Blinker();
void fill_circle(int,int,int,int);
main(){
 int driver=0,mode=DETECT;
 initgraph(&driver,&mode,"");
 splash();  
}
//********************************
void splash(){
 for(int i=0;i<4*9+1;i++){
  Change_Color_Blinker();
  fill_circle(225,200,10,x);
  fill_circle(275,200,10,y);
  fill_circle(325,200,10,z);
  fill_circle(375,200,10,q);
 }
}
//***********************************
void Change_Color_Blinker(){
 delay(150);
 if(x==-1)
  x=0;
 else if(x==0 && q==0){
  x=8;
  y=0;
  z=0;
  q=0;
 }
 else if(x==8 && y==0){
  x=7;
  y=8;
  z=0;
  q=0;
 }
 else if(x==7 && y==8){
  x=15;
  y=7;
  z=8;
  q=0;
 }
 else if(x==15){
  x=7;
  y=15;
  z=7;
  q=8;
 }
 else if(x==7 && y==15){
  x=8;
  y=7;
  z=15;
  q=7;
 }
 else if(x==8 && y==7){
  x=0;
  y=8;
  z=7;
  q=15;
 }
 else if(x==0 && y==8){
  x=0;
  y=0;
  z=8;
  q=7;
 }
 else if(x==0 && z==8){
  x=0;
  y=0;
  z=0;
  q=8;
 }
 else if(x==0 && q==8){
  x=0;
  y=0;
  z=0;
  q=0;
 }
}
//***
void fill_circle(int x,int y,int r, int c){
 setcolor(c);
 while(r){
  circle(x,y,r);
  r--;
 }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

عدد های بین دو عدد 10 رقمی
 
این سورس دو عدد 10 رقمی از ورودی گرفته و اعدادی که بین این دو عدد می باشد را در یک فایل ذخیره می کنه .
 
 
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define Max 10
void digit0();
void digit1();
void digit2();
void digit3();
void digit4();
void digit5();
void digit6();
void digit7();
void digit8();
void digit9();
void Print();
int x[Max],y[Max],tmp[Max],W=0,c=0;
FILE *f;
main(){
 char str1[Max],str2[Max];
 int i,j;
 for(i=0;i<Max;i++)
  str1[i]=str2[i]='\0';
 f=fopen("c:\\sajjad.txt","wt");
 printf(" Enter a 1 Number :0000000000\n");
 printf("\n Enter a 1 Number :");
 gets(str1);
 printf("\n Enter a 2 Number :");
 gets(str2);
 for(i=0;i<Max;i++)
  tmp[i]=x[i]=y[i]=0;

 for(i=Max-1;i>=0;i--){
  if(str1[i]!='\0')
   x[i]=str1[i]-48;
  if(str2[i]!='\0')
   y[i]=str2[i]-48;
 }
 digit0();
}
//**********************
void digit0(){
 while(1){
  if(tmp[9]>9){
   digit1();
   tmp[9]=0;
  }
  else{
   if(W==1)
    Print();
   tmp[9]++;
  }
  if(W==0){
   c=0;
   for(int i=0;i<Max;i++)
    if(x[i]==tmp[i])
     c++;
   if(c==Max){
    W=1;
    c=0;
   }
  }
  if(W==1){
         c=0;
   for(int i=0;i<Max;i++)
    if(y[i]==tmp[i])
     c++;
   if(c==Max){
    fclose(f);
    exit(1);
   }
  }
 }
}
//**********************
void digit1(){
 if(tmp[8]>=9){
  digit2();
  tmp[8]=0;
 }
 else
  tmp[8]++;
}
//**********************
void digit2(){
 if(tmp[7]>=9){
  digit3();
  tmp[7]=0;
 }
 else
  tmp[7]++;
}
//**********************
void digit3(){
 if(tmp[6]>=9){
  digit4();
  tmp[6]=0;
 }
 else
  tmp[6]++;
}
//**********************
void digit4(){
 if(tmp[5]>=9){
  digit5();
  tmp[5]=0;
 }
 else
  tmp[5]++;
}
//**********************
void digit5(){
 if(tmp[4]>=9){
  digit6();
  tmp[4]=0;
 }
 else
  tmp[4]++;
}
//**********************
void digit6(){
 if(tmp[3]>=9){
  digit7();
  tmp[3]=0;
 }
 else
  tmp[3]++;
}
//**********************
void digit7(){
 if(tmp[2]>=9){
  digit8();
  tmp[2]=0;
 }
 else
  tmp[2]++;
}
//**********************
void digit8(){
 if(tmp[1]>=9){
  digit9();
  tmp[1]=0;
 }
 else
  tmp[1]++;
}
//**********************
void digit9(){
 if(tmp[0]>=9){
  //digit10();
  tmp[0]=0;
 }
 else
  tmp[0]++;
}
//**********************
void Print(){
 for(int i=0;i<Max;i++){
  putc(tmp[i]+48,f);
  printf("%d",tmp[i]);
 }
 putc('\n',f);
 printf("\n");
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

مرتب سازی حبابی و نزولی

 
این سورس ابتدا یه عدد از ورودی می گیره و به تعداد همون عدد ، عدد از ورودی گرفته و به دو صورت حبابی و نزولی مرتب کرده و چاپ می کند .
 
#include "iostream.h"
#include "stdlib.h"
#include "conio.h"
void nozoli(void);
void bubble(void);
int *x,len;
//**************************
main(){
 int tmp;
 cout<<endl<<" Enter a number for N :";
 cin>>len;
 x=(int *)calloc(len,sizeof(int));
 if(x==NULL)
  exit(1);
 clrscr();
 for(int i=len;i>0;i--){
  cout<<endl<<" Enter a number :";
  cin>>x[i];
 }
 cout<<endl<<" Enter a number (1 for sort Nozoli , 2 for sort Hobabi) :";
 cin>>tmp;
 if(tmp==1)
  nozoli();
 else if(tmp==2)
    bubble();
}
//**************************
void nozoli(void){
 int i,j,tmp;
 for(i=1;i<=len;i++)
  for(j=i+1;j<=len;j++)
   if(x[i]<x[j]){
    tmp=x[j];
    x[j]=x[i];
    x[i]=tmp;
   }
 clrscr();
 for(i=1;i<=len;i++)
  cout<<endl<<" "<<x[i];
}
//***************************
void bubble(void){
 int i,j,tmp;
 for(i=len;i>0;i--)
  for(j=1;j<i;j++)
   if(x[j]>x[j+1]){
    tmp=x[j];
    x[j]=x[j+1];
    x[j+1]=tmp;
   }
 clrscr();
 for(i=1;i<=len;i++)
  cout<<endl<<" "<<x[i];
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ضرب 20 در 20 رقمی

می خواهید برنامه ای داشته باشید که یک عدد 20 رقمی را در یک عدد 20
 رقمی ضرب کنه و همین طور حاصل جمع شو برات چاپ کنه. اگه این طوره پس این سورس و نگاه کنید .
 
#include <iostream.h>
#include <conio.h>
int x[20],y[20],w[40],k[20][40];
void multiply(void);
void Sum(void);
void main(){
 char t[20];
 int i,j,z;
 clrscr();
 cout << "\n Enter a Number 1 :";
 cin >> t;
 z=19;
 for(i=0;i<20 && t[i];i++);
 for(i=i-1;i>=0;i--)
  x[z--]=t[i]-48;
 cout << "\n Enter a Number 2 :";
 cin >> t;
 z=19;
 for(i=0;i<20 && t[i];i++);
 for(i=i-1;i>=0;i--)
  y[z--]=t[i]-48;
 for(i=0;i<20;i++)
  for(j=0;j<40;j++)
   k[i][j]=0;
 multiply();
}
/
/
void multiply(void){
 int i,j,z,z1,tmp,c;
 c=0;
 z=39;
 for(i=19;i>=0;i--)
  for(j=19;j>=0;j--){
   tmp=(x[i]*y[j])+c;
   c=0;
    // cout<<tmp<<"\n";
   while(tmp>=10){
    c++;
    tmp=tmp-10;
   }
   if(i==19)
    k[i][j+20]=tmp;
   else{
    if(j==19){
     z--;
     z1=z;
    }
    k[i][z1--]=tmp;
   }
  }
 c=0;
 for(j=39;j>=0;j--){
  for(i=0;i<20;i++)
   tmp+=k[i][j];
  tmp+=c;
  c=0;
  while(tmp>=10){
   c++;
   tmp-=10;
  }
  w[j]=tmp;
  tmp=0;
 }
 for(i=0;i<40 && w[i]==0 ;i++);
 cout<<"\n\n Value zarb= ";
 for(i;i<40;i++)
  cout<<w[i];
 Sum();
}
/
/
void Sum(void){
 int i,tmp,c,s[20];
 c=0;
 for(i=19;i>=0;i--){
   tmp=(x[i]+y[i])+c;
   c=0;
   while(tmp>=10){
    c++;
    tmp=tmp-10;
   }
   s[i]=tmp;
  }
 cout<<"\n\n Value jam = ";
 for(i=0;i<20 && s[i]==0 ;i++);
 for(i;i<20;i++)
  cout<<s[i];
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

سورس تبدیل (کد کردن) یک عبارت انگلیسی

 
این سورس یک عبارت انگلیسی از ورودی گرفته و اونو به صورت کد در می آورد .
 
این سورس اینگونه عمل می کنه که حرف اول هر کلمه از عبارت انگلیسی را به آخر کلمه برده و حرف های ay رو به آخرش اضافه می کنه برای مثال :
 
This is a test  -  hisTay siay aay esttay
این سورس و برای یکی از دوستان نوشته بودم . 'گذاشتم اینجا که شاید مفید باشه .
#include <iostream.h>
#include <stdio.h>
#include <string.h>
#define Max 200
void convert();
char tmp[20];
void main(){
 char x[Max];
 int i=0,j=0;
 cout<<"\n Enter a statment : ";
 gets(x);
 strnset(tmp,'\0',20);
 cout<<"\n Value = ";
 while(x[i]!='\0'){
  if(x[i]!=' ')
   tmp[j++]=x[i];
  else if(x[i]==' '){
   convert();
   strnset(tmp,'\0',20);
   j=0;
  }
  i++;
 }
 convert();
}
//***
void convert(){
 char ch_aval,y[20];
 int i=0;
 strnset(y,'\0',20);
 while(tmp[i]!='\0'){
  if(i==0)
   ch_aval=tmp[i];
  else
   y[i-1]=tmp[i];
  i++;
 }
 i=0;
 while(y[i]!='\0'){
  cout<<y[i];
  i++;
 }
 cout<<ch_aval;
 cout<<"ay ";
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

سورس مرتب سازی صعودی هنگام گرفتن عدد از ورودی

 
این سورس اعداد و وقتی از ورودی می گیره به صورت صعودی در آرایه قرار می دهد یعنی همون لحظه که عددی از ورودی گرفته می شود با اعداد داخل آرایه مقایسه می کنه و در جای مناسب (مرتب)  قرار می دهد و بعد اعداد و چاپ می کنه .
 
#include <iostream.h>
#define Max 10
void Enter(int,int);
void shift(int,int,int);
int x[Max];
main(){
 int i,tmp;
 for(i=0;i<Max;i++)
  x[i]=0;
 for(i=0;i<Max;i++){
  cout<<"\n Enter a number :";
  cin>>tmp;
  Enter(tmp,i);
 }
 cout<<"\n\n sort value : \n";
 for(i=0;i<Max;i++)
  cout<<"\n "<<x[i];
}
//***
void Enter(int x1,int locat){
 int i;
 for(i=0;i<Max;i++)
  if(x[i]>x1){
   shift(x1,locat,i);
   return ;
  }
 x[locat]=x1;
}
//***
void shift(int x1,int locat,int rep){
 int i;
 for(i=locat;i>rep;i--)
  x[i]=x[i-1];
 x[rep]=x1;
}
•    email
•    contact

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

برابر بودن رشته از دو طرف
 
این سورس که به زبان C++ نوشته شده است اینگونه عمل می کند که رشته را از دو طرف مقایسه می کنه اگر از هر دو طرف یک جور بود برای مثال کلمه RooR از هر طرفی که خوانده شود همان RooR می باشد .
 
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#define Max 20
main(){
 char str[Max];
 int i,max,j;
 cout<<"\n Enter a statment :";
 cin>>str;
 max=strlen(str);
 for(i=0,j=max-1;i<2;i++,j--)
  if(str[i]!=str[j]){
   cout<<"\n Not EQUAL";
   exit(1);
  }
 cout<<"\n EQUAL";
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
جمع دو ماتریس 3 در 5

 
این سورس دو ماتریس 3 در 5 را از ورودی می گیرد و با هم جمع می کند و در خروجی نتیجه را چاپ می کند .
#include <iostream.h>
#include <conio.h>
main(){
 int x[3][5],y[3][5],z[3][5],i,j;
 clrscr();
 cout<<"\n Matris 1";
 for(i=0;i<3;i++)
  for(j=0;j<5;j++){
   cout<<"\n Enter a number satre "<<i+1 <<"  sotone "<<j+1 <<" : ";
   cin>>x[i][j];
  }
 cout<<"\n Matris 2";
 for(i=0;i<3;i++)
  for(j=0;j<5;j++){
   cout<<"\n Enter a number satre "<<i+1 <<"  sotone"<<j+1 <<" : ";
   cin>>y[i][j];
  }
 for(i=0;i<3;i++)
  for(j=0;j<5;j++)
   z[i][j]=x[i][j]+y[i][j];
 cout<<"\n\n Value ";
 for(i=0;i<3;i++){
      cout<<endl;
  for(j=0;j<5;j++){
   cout<<"\t"<<z[i][j];

  }
 }
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ضرب دو ماتریس 3 در 5
 
این سورس دو ماتریس 3 در 5 را از ورودی می گیرد و در هم ضرب می کند و ماتریس 3 در 3 نتیجه را در خروجی چاپ می کند .
#include <iostream.h>
#include <conio.h>
main(){
 int x[3][5],y[5][3],z[3][3],i,j,k;
 clrscr();
 cout<<"\n Matris 1";
 for(i=0;i<3;i++)
  for(j=0;j<5;j++){
   cout<<"\n Enter a number satre "<<i+1 <<"  sotone "<<j+1 <<" : ";
   cin>>x[i][j];
  }
 cout<<"\n Matris 2";
 for(i=0;i<5;i++)
  for(j=0;j<3;j++){
   cout<<"\n Enter a number satre "<<i+1 <<"  sotone"<<j+1 <<" : ";
   cin>>y[i][j];
  }
 for(i=0;i<3;i++)
  for(j=0;j<3;j++)
   z[i][j]=0;
 for(i=0;i<3;i++)
  for(j=0;j<3;j++)
   for(k=0;k<5;k++)
    z[i][j]+=(x[i][k]*y[k][j]);

 cout<<"\n\n Value ";
 for(i=0;i<3;i++){
  cout<<endl;
  for(j=0;j<3;j++)
   cout<<"\t"<<z[i][j];
 }
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

جمع دو عدد بوسیله اشاره گرها
 
 
این سورس دو عدد را بوسیله اشاره گر از ورودی می گیرد و با هم جمع می کند .
#include <iostream.h>
#include <stdlib.h>

main(){
 int *x,*y;
 x=(int *) calloc(1,sizeof(int));
 y=(int *) calloc(1,sizeof(int));
 cout<<"\n Enter a number : ";
 cin>>*x;
 cout<<"\n Enter a number : ";
 cin>>*y;
 cout<<"\n Value = "<<*x+*y;
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
حاصل ضرب دکارتی دو مجموعه بوسیله لینک لیست
 
این پروژه  نیز کاربرد مفید لینک لیست ها را نشان می دهد که ابتدا بی نهایت مجموعه با بی نهایت عضو می گیرد و سپس اسم دو مجموعه از مجموعه های ورودی را می گیرد و حاصل ضرب دکارتی آن مجموع ها را چاپ می کند .
A={1,2,3}         
B={5,6}            
A * B = { (1*5) (1*6)(2*5)(2*6)(3*5)(3*6) }
 
#include "iostream.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"
struct number{
 int count;
 int num;
 struct number *next;
}*nn,*ln,*fn;
struct collection{
 char name[20];
 struct number *p;
 struct collection *next;
}*fc,*nc,*lc;
void add();
void print();
void move();
int *avali,*dovomi,c1,c2;
char a[20],b[20];
main(){
  add();
  move();
  print();
}
//***********************************
void add(){
 char x[20];
 int tmp;
 cout<<"\n Enter your set by n";
 do{
  cout<<"\n Enter a name for complex : ";
  cin>>x;
  if(strcmp(x,"final")==0)
   break;
  cout<<"\n\t { \n";
  nc=(struct collection*)calloc(1,sizeof(struct collection));
  if(nc==NULL)
   exit(1);
  if(fc==NULL)
   fc=nc;
  else
   lc->next=nc;
  lc=nc;
  nc->next=NULL;
  nc->p=NULL;
  strcpy(nc->name,x);
  do{
   cout<<"\t\t";
   cin>>x;
   if(strcmp(x,"end")==0)
    break;
   else
    tmp=atoi(x);
   nn=(struct number*)calloc(1,sizeof(struct number));
   if(nn==NULL)
    exit(1);
   nn->next=NULL;
   nn->num=tmp;
   nn->count=0;
   if(nc->p==NULL){
    nc->p=fn=nn;
    fn->count=1;
   }
   else{
    ln->next=nn;
    fn->count+=1;
   }
   ln=nn;
  }while(1);
  cout<<"\n\t } \n";
 }while(1);
}
//***********
void move(){
 int i;
 clrscr();
 cout<<"\n Enter two collection (C B) : ";
 cin>>a>>b;
 nc=fc;
 while(nc!=NULL){
  if(strcmp(nc->name,a)==0){
   ln=nc->p;
   c1=ln->count;
   avali=(int*)calloc(c1,sizeof(int));
   for(i=0;i<c1;i++){
    avali[i]=ln->num;
    ln=ln->next;
   }
  }
  else if(strcmp(nc->name,b)==0){
   ln=nc->p;
   c2=ln->count;
   dovomi=(int*)calloc(c2,sizeof(int));
   for(i=0;i<c2;i++){
    dovomi[i]=ln->num;
    ln=ln->next;
   }
  }
  nc=nc->next;
 }
}
//****
void print(){
 int i,j;
 clrscr();
 cout<<"\n "<<a<<"*"<<b<<" = {";
 for(i=0;i<c1;i++)
  for(j=0;j<c2;j++)
   cout<<"("<<avali[i]<<"*"<<dovomi[j]<<")";
 cout<<"}";
 getch();
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

کارایی رشته ها و اشاره گر ها در تابع ها
 
این سورس کارایی رشته و اشاره گر ها را در تابع ها را نشان می دهد . این سورس ابتدا دو رشته و دو کاراکتر می گیرد و در تابع هایی جداگانه عملیات های زیر را انجام می دهد . ( بدون تابع های آماده C ) .
 
1.       طول رشته اول
2.       کاراکتر اول را در رشته اول جستجو و آن کاراکتر ها را حذف می کند .
3.       کاراکتر اول را در رشته اول جستجو و به جای آن کاراکتر دوم را قرار می دهد .
4.       رشته اول را به رشته دوم الحاق میکند .
 
#include "iostream.h"
#include "conio.h"
int len_s1(char *);
void remove_s1_ch1(char *,char,char *);
void swap_s1_ch1_ch2(char *,char ,char ,char *);
void paste_s1_s2(char *,char *);

main(){
 char s1[200],s2[200],tmp[200],ch1,ch2;
 clrscr();
 cout<<"\n enter a string 1 : ";
 cin>>s1;
 cout<<"\n enter a string 2 : ";
 cin>>s2;
 cout<<"\n enter a char 1 : ";
 cin>>ch1;
 cout<<"\n enter a char 2 : ";
 cin>>ch2;

 cout<<"\n len string 1 = "<<len_s1(s1);
 remove_s1_ch1(s1,ch1,tmp);
 cout<<"\n\n string1 remove char1 = "<<tmp;
 swap_s1_ch1_ch2(s1,ch1,ch2,tmp);
 cout<<"\n\n string1 char1 swap char2 = "<<tmp;
 int i=0;
 while(s1[i]){
  tmp[i]=s1[i];
  i++;
 }
 tmp[i]='\0';
 paste_s1_s2(tmp,s2);
 cout<<"\n\n string1 paste string2 = "<<tmp;

 i=0;
 while(s2[i]){
  tmp[i]=s2[i];
  i++;
 }
 tmp[i]='\0';
 paste_s1_s2(tmp,s1);
 cout<<"\n\n string2 paste string1 = "<<tmp;
}
//*************
int len_s1(char *s1){
 int c=0;
 while(*s1){
  *s1++;
  c++;
 }
 return c;
}
//*************
void remove_s1_ch1(char *s1,char ch1,char *ret){
 while(*s1){
  if(*s1!=ch1)
   *ret++=*s1;
  *s1++;
 }
}
//*************
void swap_s1_ch1_ch2(char *s1,char ch1,char ch2,char *ret){
 while(*s1){
  if(*s1==ch1)
   *ret++=ch2;
  else
   *ret++=*s1;
  *s1++;
 }
}
//*************
void paste_s1_s2(char *s1,char *s2){
 while(*s1)
  *s1++;
 while(*s2){
  *s1=*s2;
  *s2++;
  *s1++;
 }
 *s1='\0';
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

پروژه فیبوناچی بازگشتی و غیر بازگشتی
 
این پروژه سورس سری فیبوناچی می باشد که هم به صورت بازگشتی و هم به صورت معمولی نوشته شده است .
 
#include "iostream.h"
#include "conio.h"
int fib (int);
int i;
main(){
 int n;
 clrscr();
 cout<<"\n Enter a number : ";
 cin>>n;
 cout<<"\n\n value = ";
 if(n==1 || n==2)
  cout<<"0 ";
 else if(n>2)
  cout<<"0 1 ";
 cout<<fib(n);
 getch();
}
//****
int fib (int n){
 int x=0,y;
 if(n<=1)
  return n;
 x=fib(n-1);
 y=fib(n-2);
 if(i<x){
  cout<<x<<" ";
      i=x;
 }
   return x+y;
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

پروژه ای بسیار خوب برای کلاس ها ( ثبت نام دانشجو ) در ++C

 
 این پروژه یک کلاسی است که امکان اضافه کردن دانشجو ، ویرایش ،  جستجو  و ... را دارد که امکان ذخیره سازی اطلاعات تو فایل و بارگذاری مجدد آن هنگام اجرای برنامه را دارا می باشد و همچنین حجم فایل ذخیره شده را نشان میدهد . در کل بگم که این سورس به صورت تمام با کلاس ها نوشته شده است و کد خوبی برای درک کلاس ها می باشد .
 
 
#include "iostream.h"
#include "conio.h"
#include "string.h"
#include "stdio.h"
#include "stdlib.h"
#include "io.h"
#include "fcntl.h"
#define max 50
class student {
 public :
  char numst[11];
  char name[15];
  char famili[20];
  double score[4];
  double ave;
  student();  //initializing
  ~student(); //destructing
  set_null(){name[0]=numst[0]='\0';}
}st[max];
//************************************
student::student(){      //initializing
 set_null();
}
//
student::~student(){    //destructing
 set_null();
}
//
class Enter {
 private :
  void save();
 public :
  void add();
  void edit();
  void search();
  void print();
  void len_file();
  void load();
}e;
//****
void Enter::add(){
 int i;
 double sum=0.00;
 for(i=0;i<max && st[i].name[0]!='\0';i++);
 clrscr();
 cout<<"\n Enter a name : ";
 cin>>st[i].name;
 cout<<"\n Enter a famili : ";
 cin>>st[i].famili;
 cout<<"\n Enter a numst : ";
 cin>>st[i].numst;

 for(int j=0;j<4;j++){
  cout<<"\n Enter a score "<<j+1<<" : ";
  cin>>st[i].score[j];
  sum+=st[i].score[j];
 }
 st[i].ave=sum/4;
 e.save();
}
//****
void Enter::edit(){
 char tmp[11];
 int i,flag=0;;
 double sum=0.00;
 clrscr();
 cout<<"\n Enter a numst for edit : ";
 cin>>tmp;
 for(i=0;i<max && st[i].name[0]!='\0';i++)
  if(strcmp(st[i].numst,tmp)==0){
   cout<<"\n Enter a new name : ";
   cin>>st[i].name;
   cout<<"\n Enter a new famili : ";
   cin>>st[i].famili;

   for(int j=0;j<4;j++){
    cout<<"\n Enter a new score "<<j+1<<" : ";
    cin>>st[i].score[j];
    sum+=st[i].score[j];
   }
   st[i].ave=sum/4;
   cout<<"\n for continue . press key...";
   getch();
   flag=1;
   e.save();
  }
 if(flag==0){
  cout<<"\n Not found . press key...";
  getch();
  return ;
 }
}
//****
void Enter::search(){
 char tmp[15];
 int i,flag=0;

 clrscr();
 cout<<"\n Enter a name for search : ";
 cin>>tmp;
 for(i=0;i<max && st[i].name[0]!='\0';i++)
  if(strcmp(st[i].name,tmp)==0){
   cout<<"\n Name = "<<st[i].name;
   cout<<"\n Famili = "<<st[i].famili;

   for(int j=0;j<4;j++)
    cout<<"\n Score "<<j+1<<" = "<<st[i].score[j];
   cout<<"\n average = "<<st[i].ave;
   cout<<"\n for continue . press key...";
   getch();
   flag=1;
  }
  if(flag==0){
   cout<<"\n Not found . press key...";
   getch();
   return ;
  }
}
//****
void Enter::print(){
 int i;
 clrscr();
 for(i=0;i<max && st[i].name[0]!='\0';i++){
  cout<<"\n Name = "<<st[i].name;
  cout<<"\n Famili = "<<st[i].famili;
  for(int j=0;j<4;j++)
   cout<<"\n Score "<<j+1<<" = "<<st[i].score[j];
  cout<<"\n average = "<<st[i].ave<<"\n\n";
 }
 cout<<"\n for continue . press key...";
 getch();
}
//****
void Enter::save(void){
 register int i;
 FILE *fp;
 fp=fopen("c:\\st.dat","w+b");
 if(!fp){
  cout<<"\n Cannot open file press key ...";
  getch();
  return ;
 }
 for(i=0;i<max && st[i].name[0]!='\0';i++)
  fwrite(&st[i],sizeof(class student),1,fp);
 fclose(fp);
}
//****
void Enter::load(void){
 register int i;
 FILE *fp;
 clrscr();
 fp=fopen("c:\\st.dat","rb");
 if(!fp){
  cout<<"\n Cannot open file press key ...";
  getch();
  return ;
 }
 for(i=0;i<max;i++){
  fread(&st[i],sizeof(class student),1,fp);
  if(feof(fp)){
   clrscr();
   cout<<" Data loaded press a key ...";
   getch();
   return ;
  }
 }
 fclose(fp);
}
//****
void Enter::len_file(){
 int handle;
 clrscr();
 handle=open("c:\\st.dat",O_RDONLY);
 cout<<"\n File lenght in byte = "<<filelength(handle)<<" byte ";
 getch();
 close(handle);
}
//*****************************
void main(){
 int num;
 e.load();
 do{
  clrscr();
  cout<<"\t\t Welcome\n";
  cout<<"\n 1).Add";
  cout<<"\n 2).Edit";
  cout<<"\n 3).Search";
  cout<<"\n 4).List";
  cout<<"\n 5).Length file";
  cout<<"\n 6).Exit";
  cout<<"\n\n Enter a number (1-6) :";
  num=getche()-48;
  getch();
  switch (num){
   case 1 : e.add();
      break;
   case 2 : e.edit();
      break;
   case 3 : e.search();
      break;
   case 4 : e.print();
      break;
   case 5 : e.len_file();
      break;
   case 6 : exit(1);
  }
 }while(1);
}// end program

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

سورس مرتب سازی حبابی ( Bubble sort )

 
این سورس یک عدد گرفته و به تعداد همان عدد از ورودی دریافت می کند و آنها را با روش Bubble sort  مرتب می کند .
 
 
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
//--------------------------------------------------------------------------
void read_list(int a[],int n){
 int i;
 for(i=0;i<n;i++){
  printf("\n\n\t ENTER THE ELEMENT [%d] :: ",i);
  scanf("%d",&a[i]);
 }
}
//--------------------------------------------------------------------------
void print_list(int a[],int n){
 int i;
 for(i=0;i<n;i++)
   printf("\t%d",a[i]);
}
//--------------------------------------------------------------------------
void bubble_sort(int a[],int n){
 int i,j,temp;
 for(i=0;i<n-1;i++){
  for(j=0;j<n-1;j++)
   if(a[j]>a[j+1]){
    temp=a[j];
    a[j]=a[j+1];
    a[j+1]=temp;
   }
  printf("\n\n\t PASS %d :: ",i);
  print_list(a,n);
 }
}
//--------------------------------------------------------------------------
void main(){
 int a[20],n;
 clrscr();
 printf("\n\n\t ENTER THE ARRAY LENGTH :: ");
 scanf("%d",&n);
 read_list(a,n);
 printf("\n\n\t THE ARRAY ELEMENTS ARE AS FOLLOWS :: ");
 print_list(a,n);
 bubble_sort(a,n);
 printf("\n\n\t THE SORTED LIST IS :: ");
 print_list(a,n);
 getch();
}
//--------------------------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

سورس مرتب سازی سریع ( Quick sort )
 
این سورس یک عدد گرفته و به تعداد همان عدد از ورودی دریافت می کند و آنها را با روش . Quick sort مرتب می کند .
 
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
//--------------------------------------------------------------------------
void read_list(int a[],int n){
 int i;
 for(i=0;i<n;i++){
  printf("\n\n\t ENTER THE ELEMENT [%d] :: ",i);
  scanf("%d",&a[i]);
  }
}
//--------------------------------------------------------------------------
void print_list(int a[],int n){
 int i;
 for(i=0;i<n;i++)
  printf("\n\n\t %d",a[i]);
}
//--------------------------------------------------------------------------
void quick_sort(int a[],int first,int last){
 int low,high,temp,pivot;
 low=first;
 high=last;
 pivot=a[(first+last)/2];
 do{
  while(a[low]<pivot)
   low++;
  while(a[high]>pivot)
   high--;
   if(low<=high){
   temp=a[low];
   a[low]=a[high];
   a[high]=temp;
   low=low+1;
   high=high-1;
   }
 }while(low<=high);
 if(first<high)
  quick_sort(a,first,high);
 if(low<last)
  quick_sort(a,low,last);
}
//--------------------------------------------------------------------------
void main(){
 int a[20],n;
 clrscr();
 printf("\n\n\t ENTER THE ARRAY LENGTH :: ");
 scanf("%d",&n);
 read_list(a,n);
 printf("\n\n\t THE ARRAY ELEMENTS ARE AS FOLLOWS :: ");
 print_list(a,n);
 quick_sort(a,0,n-1);
 printf("\n\n\t THE SOTED LIST IS :: ");
 print_list(a,n);
 getch();
}
//--------------------------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

سورس مرتب سازی انتخابی ( Selection sort )
 
این سورس یک عدد گرفته و به تعداد همان عدد از ورودی دریافت می کند و آنها را با روش . Selection sort مرتب می کند .
 
 
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
//--------------------------------------------------------------------------
void read_list(int a[],int n){
 int i;
 for(i=0;i<n;i++){
  printf("\n\n\t ENTER THE ELEMENT [%d] :: ",i);
  scanf("%d",&a[i]);
  }
}
//--------------------------------------------------------------------------
void print_list(int a[],int n){
 int i;
 for(i=0;i<n;i++)
  printf("\t%d",a[i]);
}
//--------------------------------------------------------------------------
void select_sort(int a[],int n){
 int i,j,temp,min;
 for(i=0;i<n;i++){
  min=i;
  for(j=i+1;j<n;j++)
   if(a[min]>a[j])
  min=j;
  temp=a[i];
  a[i]=a[min];
  a[min]=temp;
  printf("\n\n\t PASS %d :: ",i);
  print_list(a,n);
 }
}
//--------------------------------------------------------------------------
void main(){
 int a[20],n;
 clrscr();
 printf("\n\n\t ENTER THE ARRAY LENGTH :: ");
 scanf("%d",&n);
 read_list(a,n);
 printf("\n\n\t THE ARRAY ELEMENTS ARE AS FOLLOWS :: ");
 print_list(a,n);
 select_sort(a,n);
 printf("\n\n\t THE SORTED LIST IS :: ");
 print_list(a,n);
 getch();
}
//--------------------------------------------------------------------------

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

بالا مثلثی و پایین مثلثی ماتریس به زبان ++C

 
این سورس بالا و پایین مثلثی ماتریس را بدست آورده و چاپ می کند و  به زبان ++C نوشته شده است .
 
#include <iostream.h>
#include <conio.h>
#define max 10
main(){
 int i,j,p[max][max];

 for(i=0;i<max;i++)
  for(j=0;j<max;j++)
   if(i>j)
    p[i][j]=0;
   else if(i<j)
    p[i][j]=1;
   else
    p[i][j]=1;

 for(i=0;i<max;i++){
    cout<<endl;
  for(j=0;j<max;j++)
   cout<<" "<<p[i][j];
  }
 cout<<endl<<endl<<endl;
 for(i=0;i<max;i++)
  for(j=0;j<max;j++)
   if(i>j)
    p[i][j]=1;
   else if(i<j)
    p[i][j]=0;
   else
    p[i][j]=1;

 for(i=0;i<max;i++){
  cout<<endl;
  for(j=0;j<max;j++)
   cout<<" "<<p[i][j];
  }
  getch();
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

سورس مرتب سازی Shell sort

 
این سورس یک عدد گرفته و به تعداد همان عدد از ورودی دریافت می کند و آنها را با روش  Shell sort مرتب می کند .
 
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
//--------------------------------------------------------------------------
void read_list(int a[],int n)
{
 int i;
 for(i=0;i<n;i++)
  {
   printf("\n\n\t ENTER THE ELEMENT [%d] :: ",i);
   scanf("%d",&a[i]);
  }
}
//--------------------------------------------------------------------------
void print_list(int a[],int n)
{
 int i;
 for(i=0;i<n;i++)
  printf("\t%d",a[i]);
}
//--------------------------------------------------------------------------
void shell_sort(int a[],int n)
{
 int temp,flag,m,i;
 m=n;
 do
  {
   flag=0;
   m=(m+1)/2;
   for(i=0;(i+m)<n;i++)
  if(a[i]>a[i+m])
    {
  temp=a[i];
  a[i]=a[i+m];
  a[i+m]=temp;
  flag=1;
    }
  printf("\n\n\t PASS %d ::",i);
  print_list(a,n);
  }while(flag!=0 || m>1);
}
//--------------------------------------------------------------------------
void main()
{
 int a[20],n;
 clrscr();
 printf("\n\n\t ENTER THE ARRAY LENGTH :: ");
 scanf("%d",&n);
 read_list(a,n);
 printf("\n\n\t THE ARRAY ELEMENTS ARE AS FOLLOWS :: ");
 print_list(a,n);
 shell_sort(a,n);
 printf("\n\n\t THE SORTED LIST IS :: ");
 print_list(a,n);
 getch();
}
//--------------------------------------------------------------------------

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

سورس مرتب سازی ادغام Merge sort

 
این سورس یک عدد گرفته و به تعداد همان عدد از ورودی دریافت می کند و آنها را با روش  Merge sort مرتب می کند .
 
#include<stdio.h>
#include<conio.h>
int a[50];
void merge(int,int,int);
void merge_sort(int low,int high)
{
 int mid;
 if(low<high)
 {
  mid=(low+high)/2;
  merge_sort(low,mid);
  merge_sort(mid+1,high);
  merge(low,mid,high);
 }
}
void merge(int low,int mid,int high)
{
 int h,i,j,b[50],k;
 h=low;
 i=low;
 j=mid+1;
 while((h<=mid)&&(j<=high))
 {
  if(a[h]<=a[j])
  {
   b[i]=a[h];
   h++;
  }
  else
  {
   b[i]=a[j];
   j++;
  }
  i++;
 }
 if(h>mid)
 {
  for(k=j;k<=high;k++)
  {
   b[i]=a[k];
   i++;
  }
 }
 else
 {
  for(k=h;k<=mid;k++)
  {
   b[i]=a[k];
   i++;
  }
 }
 for(k=low;k<=high;k++) a[k]=b[k];
}
void main()
{
 int num,i;
 clrscr();
 printf("\t\t\t\tMERGE SORT\n");
 printf("\nEnter the total numbers: ");
 scanf("%d",&num);
 printf("\nEnter %d numbers: \n",num);
 for(i=1;i<=num;i++)
 {
  scanf("%d",&a[i]);
 }
 merge_sort(1,num);
 printf("\nSORTED ORDER: ");
 for(i=1;i<=num;i++) printf("\t%d",a[i]);
 getch();
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

سورس مرتب سازی انتخابی Selection sort
 
این سورس یک عدد گرفته و به تعداد همان عدد از ورودی دریافت می کند و آنها را با روش  Selection sort مرتب می کند .
 
 
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
//--------------------------------------------------------------------------
void read_list(int a[],int n){
 int i;
 for(i=0;i<n;i++){
  printf("\n\n\t ENTER THE ELEMENT [%d] :: ",i);
  scanf("%d",&a[i]);
 }
}
//--------------------------------------------------------------------------
void print_list(int a[],int n){
 int i;
 for(i=0;i<n;i++)
  printf("\t%d",a[i]);
}
//--------------------------------------------------------------------------
void insert_sort(int a[],int n){
 int i,j,temp;
 for(i=1;i<n;i++){
  temp=a[i];
  for(j=i-1;j>=0 && a[j]>temp;j--)
   a[j+1]=a[j];
  a[j+1]=temp;
  printf("\n\n\t PASS %d :: ",i);
  print_list(a,n);
  }
}
//--------------------------------------------------------------------------
void main(){
 int a[20],n;
  clrscr();
 printf("\n\n\t ENTER THE ARRAY LENGTH :: ");
 scanf("%d",&n);
 read_list(a,n);
 printf("\n\n\t THE ARRAY ELEMENTS ARE AS FOLLOWS :: ");
 print_list(a,n);
 insert_sort(a,n);
 printf("\n\n\t THE SORTED LIST IS :: ");
 print_list(a,n);
 getch();
}
//--------------------------------------------------------------------------

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

پروژه تبدیل تاریخ هجری شمسی به میلادی ( بدون تابع) در ++C
 
سلام این سورس تبدیل تاریخ شمسی به میلادی می باشد که بدون تابع نوشته شده است .
این سورس خیلی دقیق عمل می کند ولی در بعضی مواقع 1 روز جلو یا عقب می شود .
 
لطفا نظر بدهید
 
 
#include <iostream.h>
#include <conio.h>

#define yy 621
#define mm 3
#define dd -9
main()
{
 int y,m,d,ly,lm,ld;
 clrscr();
 cout<<"\n This is Lunar based calendar convertor to AD ";
 cout<<"\n\n Enter a year :";
 cin>>y;
 cout<<"\n Enter a month :";
 cin>>m;
 cout<<"\n Enter a day :";
 cin>>d;
 ly=y+yy;
 lm=m+mm;
 ld=d+dd;
 if (ld > 30){
  ld = ld - 30;
  lm = lm + 1;
 }
 if (ld < 1){
  ld = ld + 30;
  lm = lm -1;
 }
 if (lm > 12){
  lm = lm - 12;
  ly = ly + 1;
 }
 if (lm < 1){
  lm = lm + 12;
  ly = ly - 1;
 }
 cout<<"\n\n date miladi = "<<ly<<"\\"<<lm<<"\\"<<ld;
 getch();
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

پروژه تبدیل تاریخ هجری شمسی به میلادی ( با تابعی جداگانه) در ++C

 
سلام این سورس تبدیل تاریخ شمسی به میلادی می باشد که با تابعی جدا گانه نوشته شده است که تبدیل رو انجام می دهد .
این سورس خیلی دقیق عمل می کند ولی در بعضی مواقع 1 روز جلو یا عقب می شود .
 
 
#include <iostream.h>
#include <conio.h>

#define yy 621
#define mm 3
#define dd -9
void convert(int,int,int,int*,int*,int*);
main()
{
 int y,m,d,ly,lm,ld;
 clrscr();
 cout<<"\n This is Lunar based calendar convertor to AD ";
 cout<<"\n\n Enter a year :";
 cin>>y;
 cout<<"\n Enter a month :";
 cin>>m;
 cout<<"\n Enter a day :";
 cin>>d;
 convert(y,m,d,&ly,&lm,&ld);
 cout<<"\n\n date miladi = "<<ly<<"\\"<<lm<<"\\"<<ld;
 getch();
}
void convert(int y,int m,int d,int*ly,int*lm,int*ld){
 int lyy,ldd,lmm;
 lyy=y+yy;
 lmm=m+mm;
 ldd=d+dd;
 if (ldd > 30){
  ldd = ldd - 30;
  lmm = lmm + 1;
 }
 if (ldd < 1){
  ldd = ldd + 30;
  lmm = lmm -1;
 }
 if (lmm > 12){
  lmm = lmm - 12;
  lyy = lyy + 1;
 }
 if (lmm < 1){
  lmm = lmm + 12;
  lyy = lyy - 1;
 }
 *ly=lyy;
 *ld=ldd;
 *lm=lmm;

}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

شمارنده تعداد حروف بزرگ ، کوچک ، کلمات و .... در ++C
 
این برنامه یک پاراگراف از ورودی گرفته و تعداد حروف بزرگ ، حروف کوچک ، اعداد ، کلمات و حروف ویژه را می شمارد و چاپ می کند .
 
 

#include "iostream.h"
#include "conio.h"
int main()
{
 int word_counter=0,small_chars=0,large_chars=0,number_counter=0,special_chars=0;
 char ch=0;
 cout<<"\n *** This program count the number of diffenet kinds of characters ***\n "
  <<"\t\t*** which you use in a paragragh ***\n\n";
 cout<<"  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \n\n";
 cout<<"\n\a>>NOTE: about using space(????)\n"
  <<"\n\\O/ Now! Enter a paragragh (and press enter 4end):\n\n\n";
 cout<<"\t\t\t * * * * * \n\n ";
 while((ch=getche())!='\r')
 {
  if(ch>='a'&&ch<='z')
   small_chars++;
  else if(ch>='A'&&ch<='Z')
   large_chars++;
  else if(ch>='0'&&ch<='9')
   number_counter++;
  else if(ch==' '||ch==',' || ch=='.')
   word_counter++;
  else
   special_chars++;
 }
 word_counter++;
 cout<<"\n\n >Word Count= "<<word_counter<<"\n\n >Small Characters Count= "<<small_chars
  <<"\n\n >Large Characters Count= "<<large_chars<<"\n\n >Number Count= "<<number_counter
  <<"\n\n >Special Characters Count= "<<special_chars;
 getch();
 return 0;
}