یک برنامه بسیار آموزشی و جالب ، که یک منوی زیبا رو در محیط داس میسازه ، این برنامه کار آقای Vivek Patel هستش. چیز جالبیه حتما دانلود کنید. در ضمن باید آدرس bgi سیستم خودتون رو در سورس قرار بدید.
Printable View
یک برنامه بسیار آموزشی و جالب ، که یک منوی زیبا رو در محیط داس میسازه ، این برنامه کار آقای Vivek Patel هستش. چیز جالبیه حتما دانلود کنید. در ضمن باید آدرس bgi سیستم خودتون رو در سورس قرار بدید.
برنامه زیر کد مربوط به اجرای یک پیانوی کامپیوتری را نشان میدهد. در این برنامه به جای تابع getch() از پورت 60h برای بدست آوردن یک کلید استفاده شده است.
برای افزایش سرعت وهمچنین به منظور کاهش محاسبات از آرایه دو بعدی
notes[7][12] استغاده شده است.
دست هایی که کمک میکنند مقدس تر از لب هایی هستند که دعا میکنند.کورش کبیر
خوب امروز سه تا سورس دیگه از آرشیو برنامه های نوشته شدم گذاشتم که مطالعه ی سورس این برنامه ها برای کسانی که تازه برنامه نویسی رو شروع کرده اند خیلی مفیده.
در ابتدا چند تا نکته و یاد آوری ریاضی :
1) مقسوم علیه های یک عدد هیچ وقت بزرگتر از خود عدد نیستند.
2) عدد 1 مقسوم علیه تمام اعداد است
3) بزرگترین مقسوم علیه یک عدد به چز خود عدد حداکثر برابر نصف آن عدد است.
4) اعداد اول اعدادی هستند که فقط بر خود و یک بخش پذیر هستند
5) عدد کامل عددی ایست که مجموع مقسوم علیه های آن به جز خود آن عدد برابر با آن عدد است مثل: 6=3+2+1 که 3و2و1 مقسوم علیه های 6 هستند.
6) با کمی جستجو در اینترنت میتوانید اطلاعات زیادی را در این موارد بدست آورید
در این پست سه تا برنامه گذاشتم که به ترتیب:
1) یه ورودی صحیح مثبت میگیرد و تا آن عدد اعداد اول را چاپ میکند
2) یه ورودی صحیح مثبت میگیرد و تا آن عدد اعداد کامل را چاپ میکند
3) یه ورودی میگیرد و مقسوم علیه های آن عدد و مجموع مقسوم علیه های آن را چاپ میکند
نکته: ورودی میتونه یه عدد خیلی بزرگ باشه حتی از میلیارد بیشتر یعنی اینکه اگر عدد 100000000000 صد میلیارد رو وارد کنید تمام اعداد اول تا خود اون عدد رو چاپ میکنه برای همین من متغیر ها رو register unsigned long int گرفتم. دیگه باقیش با خودتون
نکته: برنامه تحت کامپایلر Turbo C++ هستند و من قبل از آپلود کارکرد اونها رو چک کردم.
نکته: وقت کردین یه سر به بلاگ من بزنید . من در رابطه با روباتیک مینویسم. خوشحال میشم. فعلا بای
قضیه مغلوب یک عدد که میدونید چیه...برنامشو گذاشتم.
این برنامه هم خیلی زیباست. من این رو با سه تا حلقه ی تو در توی for که توی یه If هستش نوشتم. نام برنامه ساعت هستش. بله ساعت.
ابتدا از کاربر سه تا عدد میگیره که به ترتیب ساعت ، دقیقه و ثانیه هستش. قابل توجه که ساعت رو باید بصورت 24 ساعته وارد کنید.
بعدش برنامه ساعت رو نشون میده و شروع به شمارش میکنه و ازای هر چرخش حلقه ی for سوم که ثانیه هستش یک حلقه ی دومی (دقیقه) یه دونه افزایش پیدا میکنه و به ازای چرخش کامل حلقه ی دومی حلقه ی اول (ساعت) یک مقدار افزایش پیدا میکنه.
البته این برنامه رو به صورت دیگری هم میشد نوشت. شاید بعدا براتون گذاشتم.
دستور شرطی اول هم چک میکنه که اعداد رو درست وارد کردید یا نه! مثلا اگه ثانیه رو 70 بزنید. برنامه خطا میده و از کاربر میپرسه آیا دوست دارید دوباره سعی کنید؟ که اگه جواب True f بود مرحله ی اول یه بار دیگه اجرا میشه وگرنه از برنامه خارج میشه.
دوستان میشه طوری این برنامه رو نوشت که ساعت رو از سیستم بگیره و نمایش بده اما اینجا ما به استراکچر برخورد میکنیم که برای تازه کارا یه کوچولو سخته.
نکته: این برنامه تحت کامپایلر turbo C++ Dos هستش قبل از آپلود صحت اون تست شده
تا یادم نرفته برای خروج از برنامه باید کلید های ctr ,Pause Break رو از کیبورد فشار بدید.
تغییر رنگ نوشته متن :
کامپایلر : Borland C++ 5.02
روش اول :
#include <iostream>
#include <conio>
int main(){
for(int i=1;i<=4;i++){
textcolor(i+8);
cprintf("Welcome to C++ World");
cout<<endl;}
getch();
}
روش دوم :
#include <iostream>
#include <conio>
#include <stdlib>
int main(){
for(int i=1;i<=4;i++){
system("color 0A");
cout<<"Welcome to C++ World\n";
}
getch();
}
این یه برنامه ماشین حسابه که خودم نوشتم، بدک نیست.
اینم برنامه ی چک کردن پسورده
ابتدا یه رشته 5 کاراکتری میگیره و بعد از شما میخواهد که همونو دوباره وارد کنید اگه درست بود اوکی میده در غیر اینصورت دوباره اجرا میشه
برای خروج هم باید Esc رو بزنید.
در ضمن همون ماشین حساب قبلیم رو هم با این پسورد تلفیق کردم.
این برنامه ای که امروز گذاشتم کلیه ی اعداد سه رقمی (یعنی بین 100 تا کوچکتر از 1000) که اصلا رقم صفر ندارن رو چاپ میکنه مثله 223. برای نوشتن این بنرامه دو تا نکته رو باید توجه کرد :
1 ) رقم صدگان کلیه ی اعداد سه رقمی مخالف صفر هستش پس باید دو رقم دیگر رو بررسی کرد.
2 ) باقیمانده ی حاصل از تقسیم هر عددی بر 10 برابر است با یکان اون عدد.
3 ) باقیش با خودتون ! امیدوارم این برنامه هایی که میزارم برای دوستان تازه کار مفید باشه !
خروجی این برنامه جدول کاراکتر های اسکی + شماره ی مربوط به اونهاست.
برای تنوع این یکی رو با C نوشتم.
www.innovation.iranblog.com
سلام. ساعت نزدیک به دو شب و این هم برنامه ی چاپ جملات دنباله ی فیبوناچی تا اونجایی که کاربر میخواد !
دنباله ی فیبوناچی: دنباله ای که هر جمله برابر است با مجموع دو جمله ی قبلی خودش ! با این قرار داد که جمله ی اول همیشه 0 و جمله ی دوم همیشه 1 است بنا بر این جمله ی سوم می شود مجموع دو جمله ی ماقبل خود یعنی 0+1 که می شود 1. به طور کلی:
f=0,1,1,2,3,5,8....jn
حالا ما برنامه ای می نویسم که n رو از کاربر بگیره و تا جمله ی n ام رو به خروجی ببره !
برای این کار چند تا روش هست که یکیش استفاده از تابع بازگشتی هستش و دیگری استفاده از جابه جایی متغیر ها که من این برنامه رو با روش دوم نوشتم و از یک آرایه از نوع صحیح با دو تا خونه استفاده کردم . شما می تونید به جای این کار دو تا متغیر مثلا a و b بگیرید. در کل امیدوارم این برنامه مفید واقع بشه !!!
1.برنامه جمع و ضرب و تفریق دو ماتریس 3*3
2.برنامه رسم یک شکل سه بعدی زیبا
3.فایل mouse.h برای کار با موس(این فایلو به راحتی نمیتونین پیدا کنید.استادمون برامون فرستاد)
4.نمونه برنامه کار با موس.(فایل mouse.h رو تو شاخه include باید کپی کنید)این برنامه شبیه برنامه paint میمونه
ممنون دوست عزیز ولی ایکاش مینوشتی که اون کتابخونه ای که استاد شما بهتون داده رو طرف با اسمبلی در کامپایلر C نوشته چون ممکنه خیلی از افراد تازه کار تو این قسمت بیان و از این برنامه ها استفاده کنند و با برخورد با اون کد ها یه کوچولو گیج بشن.! بنابر این هر برنامه ای که میاری فقط یه توضیح یه خطی هم براش بزار . با این حال باز ممنون ! احساس می کنم این این تاپیک یکی از بهترین تاپیک ها داره میشه !
(لطفا برای حفظ نظم تاپیک به این نوشته ی من پاسخ ندهید و به آپلود برنامه های خود ادامه دهید.)
من با این برنامه خیلی حال میکنم !
یه بار مبلغ 50 هزار تومان رو در خودپرداز وارد کردم و منتظر موندم تا پول رو بگیرم و برم . دیدم که 50 هزار تومان رو به صورت دو تا اسکناس 5 هزار تومانی ، 20 اسکناس 2 هزار تومانی و 10 اسکناس 1000 تومانی به من داد. !! خیلی برام جالب بود و فکر من رو به خودش مشغول کرد از اونجایی که میتونست این پول رو جور دیگه ای هم به من بده ولی نداد. همون لحظه این کار رو برای مبلغ 100 هزار تومان تست کردم دیدم این دفعه یه دونه اسکناس 50 هزار تومانی داد و بقیه رو مثله قبلی ! مطمئن شدم که یه الگوریتم تمیزی پشت این قضیه هستش که با سیستم های الکترونیکی و مکانیکی دستگاه ترکیب و هماهنگ شده و این سیستم رو تشکیل داده تا اینکه امشب این برنامه رو نوشتم !! شما میتونید این برنامه و الگوریتم رو تعمیم بدین و نوع پیشرفته ی اون رو هم بنویسید ! دیگه باقیش با خودتون. این برنامه ای که نوشتم تمام حالاتی رو که میشه یه اسکناس هزار تومانی رو به اسکناس های 500 تومانی ، 200 تومانی ، 100 تومانی ،50 تومانی، 20 تومانی و 10 تومانی خورد کرد محاسبه و چاپ میکنه ! برای مثال دو خط زیر دو تا از هزاران خروجی این برنامه است:
1000= 1*500 + 2*200 + 1*100
یعنی: هزار تومن میشه یه دونه 500 تومنی + دو تا 200 تومنی + یه دونه 100 تومنی
و همچنین :
1000= 0*500 + 4*200+0*100+4*50
شما دقیقا با کار روی این پروژه می تونید اون رو بسط داده و عین دستگاه خودپرداز رو شبیه سازی کنید که مثلا کاربر عدد رو وارد کنه و بر اساس مقدار پولی که می خواد و تعداد اسکناس هایی که از هر مقدار در انبار موجوده خروجی های ممکن رو چاپ کنه !!
این مسئله میتونه کاندیدای طرح شدن در مسابقات ACM نوجوانان باشه (شاید هم تا به حال طرح شده). که هر سال در ایران در شریف برگزار میشه !
شرح برنامه : به تعداد انوع اسکناس ها حلقه ی تو در تو داره یعنی از 6 حلقه ی تو در تو استفاده میکنه. بعد از چاپ هر خروجی یه مکث 500 میلی ثانیه ای گذاشتم که بتونیم خروجی ها رو ببینیم ! همش همین بود !! حالا دفعه های بعد پیشرفته ترش رو میزارم. اصل همین بود
این هم یه برنامه ی چند خطی اما ابتکاری که من اسمش رو گذاشتم پله ی اعداد که استفاده از حلقه های تو در تو رو به خوبی و قشنگی نشون میده ! خروجی این برنامه تصویر زیر هستش که ملاحضه میفرمایید . !
خوب یکی از دوستان چند وقت پیش این سوال رو تو بخش اصلی مطرح کرده بود. و من هم تو یکی دو پست قبل یه نمونه از مسئله ی فیبوناچی رو به روش غیر بازگشتی گذاشتم تا دوستان استفاده کنند ! حالا هم روش بازگشتی رو گذاشتم. زیبایی این برنامه و الگوریتم و قدرت کامپیوتر رو میشه در این برنامه دید. واقعا آدم لذت میبره وقتی به نحوه ی حل این مسئله توسط کامپیوتر دقت میکنه !! کل الگوریتم رو میتوان در نمودار زیر خلاصه کرد:
مثله اینکه نیما جان خوب به این تاپیک میرسن !!
سلام دوستان
امروز یه سایت انگلیسی زبان پیدا کردم که نمونه کد های C++,c,java,asp,... رو به صورت رایگان در اختیارتون قرار میده.
البته خوب نیست این کد ها رو کپی کنید و به عنوان پروژه تحویل بدید دانشگاه ، بلکه اونا رو خوب نگاه کنید و سعی کنید از اونا ایده بگیرید.
این سایت زمینه هر برنامه نوشته شده رو هم مشخص کرده مثلا گرافیک ، الگوریتم ، بازی ، کار با فایل ، محاسباتی و ...
اینم آدرسش :
www.happycodings.com
1.برنامه ای که با استفاده از منوی انتخاب رنگ تم طرح کشیده شده را عوض می کند و مانند پنجره های ویندوز با زدن دکمه ضربدر قرمز بالای سمت راست از برنامه خارج می شود.
2.برنامه ای که در هرلحضه موقعیت مکان نما رو چاپ میکنه.برای درک بهتر خود برنامه رو امتحان کنید.
3.برای اجرای این دو برنامه به فایل mouse.h نیاز دارید که باید اونو تو شاخه include سیستم خود کپی کنید.
این فایل تو پست های قبلیم هست.
خوب من در این تاپیک دو تا الگوریتم برای فیبوناچی گذاشتم . الگوریتم سوم برای این مسئله یه الگوریتم حرفه ای تر هستش و مشکلات الگوریتم دوم (به روش بازگشتی) رو پوشش میده.
در روش بازگشتی اگه دقت کرده باشید یه سری جمله ها چند بار حساب میشدند و این سرعت محاسبه رو میاره پایین. اما در این روش که از آرایه های پویا استفاده شده جمله ها تو خونه های آرایه ذخیره و هر بار که لازم شد خونده میشن. !
این برنامه اول کاربر عدد n رو وارد میکنه بعد یه آرایه ی پویا به طول n ساخته میشه و بعدش n رو چاپ میکنه.
سلام
این برنامه سرعت و زاویه از کاربر میگیره و در حین حرکت پرتابه شکل اون رو هم رسم میکنه
سلام تبریک میگم به بچه های این تاپیک در حد خودش خوبه.
تا حالا فکر کردین چه جوری میشه بدون حقه تکرار این کاراکترها رو چاپ کرد.
*
**
***
****
*****
******
*******
******
*****
****
***
**
*
که تعداد بیشترین ستاره(که در خط میانیه)همون مقدار n است که از کاربر میگیره.
اول یکم فکر کنید.....
.
.
.
اینم کدش که با C نوشتم:
#include<conio.h>
#include<stdio.h>
void star(unsigned char);
void newline1(unsigned char);
void newline2(unsigned char,unsigned char);
void main()
{
unsigned char n;
clrscr();
printf("Enter your number:");
scanf("%d",&n);
newline1(n);
newline2(1,n-1);
getch();
}//end main--------------------------------------------------------------------
void newline1(unsigned char n)
{
if(n>1)
newline1(n-1);
star(n);
printf("\n");
}
void newline2(unsigned char i,unsigned char n)
{
if(i<n)
newline2(i+1,n);
star(i);
printf("\n");
}
void star(unsigned char n)
{
if(n>1)
star(n-1);
printf("*");
}
یه سرس برای تمرین با کلاس ها رو هاردم پیدا کردم فکر کنم واسه دایتل بود ...
با ++g هم کامپایلش کنید چون رو ویندوز نوشته نشده از getch خبری نیست ! ( خودتون اضافه کنید )
در هر صورت میزارم ایشالله مفید باشه :
نقل قول:
/* soal :
classi ba name rational ijad konid ke amale mohasebaty ra rooye adade kasry anjam dahad ...
sepas barname ee benevisid ke az in class estefade konad . azaye dade ee class ebaratand az soorat va makhraje kasr
va tavabe ye ozve class ebaratand az :
*jam'e do kasr
*zarbe do kasr
*tafrighe do kasr
*taghsime do kasr
*chape kasr be soorate kasry
*chape kasr be soorate ashary
*/
#include<iostream>
using namespace std;
class rational {
public:
rational( float=0, float=1, float=0, float=1 );
void setvalues( float, float, float, float );
void mm();
void jam();
void tafrigh();
void zarb();
void taghsim();
void printkasry();
void printashary();
private:
float s;
float m;
float s2;
float m2;
float swap;
float swap2;
};
rational::rational( float a, float b, float c, float d ) {
setvalues( a, b, c, d );
}
void rational::setvalues( float a, float b, float c, float d ) {
s=a;
m=b;
s2=c;
m2=d;
}
void rational::mm() {
if(m!=m2){
if(m > m2) {
if( int(m)%int(m2)==0 ) {
m2=m;
s2*=(m2/m);
}
else {
s*=m2;
s2*=m;
m2*=m;
m=m2;
}
}
else {
if ( int(m2)%int(m)==0 ) {
m=m2;
s*=(m/m2);
}
else {
s*=m2;
s2*=m;
m2*=m;
m=m2;
}
}
}
}
void rational::jam() {
mm();
swap=s+s2;
cout << "command : Jam\nMajmoo: " << swap << "/" << m << endl ;
printkasry();
printashary();
}
void rational::tafrigh() {
mm();
swap=s-s2;
cout << "command : Tafrigh\nTafrigh: " << swap << "/" << m << endl;
printkasry();
printashary();
}
void rational::zarb() {
swap=s*s2;
swap2=m*m2;
cout << "command : Zarb\nZarb: " << swap << "/" << swap2 << endl;
printkasry();
printashary();
}
void rational::taghsim() {
swap=s*m2;
swap2=s2*m;
cout << "command : Taghsim\nTaghsim: " << swap << "/" << swap2 << endl;
printkasry();
printashary();
}
void rational::printkasry() {
cout << "\n--------------------\nPrinting like num/num \n";
cout << endl << "A/B :" << s << "/" << m << endl << "C/D :" << s2 << "/" << m2 << endl;
}
void rational::printashary() {
cout << "\n--------------------\nPrinting like float number \n";
cout << "A/B :" << s/m << "\nC/D :" << s2/m2 << endl;
}
int main()
{
float a,b,c,d;
int com;
cout << "help: A/B , C/D " << endl
<< " Commends:" << endl
<< " 1) Zarb" << endl
<< " 2) Taghsim" << endl
<< " 3) Jam" << endl
<< " 4) Tafrigh\n\n\n\n#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#"
<< "\nNow enter float numbers for A,B,C,D : " << endl;
cin >> a >> b >> c >> d;
rational kasr( a, b, c, d );
cout << "Now enter number of your command : ";
cin >> com;
switch (com) {
case 1 : kasr.zarb(); break;
case 2 : kasr.taghsim(); break;
case 3 : kasr.jam(); break;
case 4 : kasr.tafrigh(); break;
default: cout<<"your entered number for command is wrong ! \n Please replay the program again ..."; break;
}
cout << "\n program ended !\n\n\n\n";
return 0;
}
اینم یه برنامه آموزشی خوب برای اونایی که struct , اشاره گر , فایل و گرافیک رو خیلی خوب بلد نیستند . نظر دادن یادتون نره
موفق باشین :چشمک:
اینم یه برنامه آموزشی توپ که یه ساعته و کلی نکته آموزشی توش هست . ازجمله گرافیک.
نظر دادن یادتون نره
موفق باشین :چشمک:
برنامه ای که بروش بازگشتی عددی از مبنای 10 رو به هر مبنای تبدیل میکنه :
#include <iostream>
#include <conio>
void Base(int n,int x){
if(n<x)
cout<<n;
else{
Base(n/x,x);
cout<<n%x;
}
}
//=====================
int main(){
int x,n;
cout<<"Enter a number in decimal :\n";
cin>>n;
cout<<"Enter base :\n";
cin>>x;
cout<<"------------------------\n";
Base(n,x);
getch();
}
برنامه پیدا کردن فاکتوریل یک عدد بروش برنامه نویسی پویا
#include <iostream>
#include <conio>
int main(){
int n;
cout<<"Enter a number :\n";
cin>>n;
int *a = new int[n+1];
a[0] = 1;
for(int i=1;i<=n;i++)
a[i] = i*a[i-1];
for(int i=0;i<=n;i++)
cout<<i<<"! = "<<a[i]<<endl;
getch();
}
برنامه که بروش بازگشتی تعداد صفرهای سمت راست فاکتوریل یک عدد رو محاسبه میکنه :
(سوال مسابقات ACM )
مثلا 1000 فاکتوریل به چند صفر ختم میشود :
#include <iostream>
#include <conio>
#include <math>
int Fact_zero_count(int n){
if(n==0)
return 0;
else
return floor(n/5)+Fact_zero_count(n/5);
}
//===========================
int main(){
int n;
cout<<"Enter a number :\n";
cin>>n;
cout<<n<<"! has "<<Fact_zero_count(n)<<" zero at end . \n";
getch();
}
سلامبرنامه ای که نوشتم یه تقویم هستش که هم واسه تاریخ شمسی کار میکنه و هم واسه میلادی.هم میتونه یک ماه رو کامل نشون بده و هم می تونه nامین هفته سال رو نمایش بده.در ضمن همین برنامه چندین تابغ وجود داره:تبدیل تاریخ میلادی به شمسیتبدیل تاریخ شمسی به میلادیپیدا کردن اینکه یه تاریخ مشخص چند شتبه است؟امبدوارم برای دوستان مفید واقع شه
اینم یه برنامه نسبتا خوب در مورد کار با اصول شئ گرایی در ++C هست.
این برنامه مربوط به پیاده سازی نظریه مجموعه ها به زبان ++C هست که امروز با همکاری دوست خوبم mortezamsp تکمیلش کردیم.
در این برنامه از سازنده،سازنده کپی،سرباگذاری عملگرهای << و >> و + و - و =+ و = و ^ ،تعریف توابع خارج از کلاس و بعضی موارد دیگر استفاده شده.
تنها مشکلی که این برنامه می تونه داشته باشه اینه که با حافظه پویا پیاده سازی نشده،من چون فعلا وقت ندارم از دوستان می خوام که این کار رو انجام بدن و اگه کسی انجام نداد خودم یه چند روزه دیگه انجامش میدم.
امیدوارم مفید واقع بشه.
#include<iostream.h>
#include<conio.h>
#define maxsize 20
//=================================================
class Intset
{
private:
int ma[maxsize],topindex;
public:
Intset();
void insert(int);
Intset operator+=(Intset);
Intset operator-=(Intset);
int found(int);
void print(ostream & o);
Intset operator+(Intset);
Intset operator^(Intset);
Intset operator-(Intset);
int get(int);
int card();
void makeempty();
friend ostream & operator << (ostream & ,Intset);
};
//=================================================
Intset :: Intset()
{
topindex=-1;
}
void Intset :: insert(int x)
{
if(topindex==maxsize-1)
cout<<"\n=======\ninsert error : stack is full !\n=======\n";
else{
if(!found(x))
ma[++topindex]=x;
}
}
ostream & operator <<(ostream & o ,Intset a)
{
a.print(o);
return o;
}
Intset Intset :: operator+=(Intset b)
{
for(int i=0;i<=b.card()-1;i++)
insert(b.get(i));
return *this ;
}
Intset Intset :: operator-=(Intset b)
{
Intset rezualt ;
for( int i=0 ; i<=topindex ;i++ )
rezualt.insert( get(i) ) ;
makeempty() ;
for( i=0 ;i<=rezualt.topindex ;i++ )
if( !b.found( rezualt.get(i) ) )
insert( rezualt.get(i) ) ;
return rezualt ;
}
void Intset :: print(ostream & o)
{
if(topindex==-1)
o<<"Empty";
else
{
o<<"{";
for(int i=0;i<=topindex;i++)
o<<ma[i]<<",";
o<<"}";
}
}
Intset Intset :: operator+(Intset b)
{
Intset c;
for(int i=0;i<=card()-1;i++)
c.insert(get(i));
for(i=0;i<=b.card()-1;i++)
c.insert(b.get(i));
return c;
}
Intset Intset :: operator^(Intset b)
{
Intset c;
for(int i=0;i<=card()-1;i++)
for(int j=0;j<=b.card()-1;j++)
if(found(get(i)&&b.found(get(i)) ) )
c.insert(get(i));
return c;
}
Intset Intset :: operator-(Intset b)
{
Intset c;
for(int i=0;i<=card()-1;i++)
if(!b.found(get(i)) )
c.insert(get(i));
return c;
}
int Intset :: get(int i)
{
return ma[i];
}
int Intset :: card()
{
return topindex+1;
}
void Intset :: makeempty()
{
topindex=-1;
}
int Intset :: found(int x)
{
int i=( i<topindex? i : topindex );
for( i=0 ; i<=topindex ;i++ )
if(ma[i]==x)
return 1 ;
return 0 ;
}
//=================================================
int main()
{
clrscr();
Intset a,b1;
int b;
cout<<"\n=======Get a{} ";
for(int i=1;i<=5;i++)
{
cout<<"\nEnter number a{"<<i<<"} :";
cin>>b;
a.insert(b);
}
cout<<"\na{} :"<<a<<endl;
cout<<"\n=======Get b1{} :";
for( i=1;i<=3;i++)
{
cout<<"\nEnter number b1{"<<i<<"} :";
cin>>b;
b1.insert(b);
}
cout<<"\nb1{} :"<<b1<<endl;
Intset c;
cout<<"\n=======\nnew intset c :"<<c<<endl<<"press any key";
getch();
c=b1;
cout<<"\n=======\nc=b1 ==>c :"<<c<<endl<<"press any key";
getch();
c+=a;
cout<<"\n=======\nc+=a ==>c :"<<c<<endl<<"press any key";
getch();
c-=a;
cout<<"\n=======\nc-=a ==>c :"<<c<<endl<<"press any key";
getch();
c=a+b1;
cout<<"\n=======\nc=a+b1 ==>c :"<<c<<endl<<"press any key";
getch();
c=a-b1;
cout<<"\n=======\nc=a-b1 ==>c :"<<c<<endl<<"press any key";
getch();
c=a^b1;
cout<<"\n=======\nc=a^b1 ==>c :"<<c<<endl<<"press any key";
getch();
return 0 ;
}
قابلیت های برنامه:
وارد کردن اطلاعات دانشجویان؛جستجو بر اساس دو فیلد؛خذف دانشجو بر اساس دو فیلد؛ذحیره اطلاعات در فایل؛مرتب کردن اسامی بر اساس الفبای لاتین و.....
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include<string.h>
#define MAX 100
struct student {
char name[10] ;
float avrage ;
int unit ;
int amount_course ;
int student_number;
} st[MAX];
void first_evalution(void);
void enter(void);
void search(void);
void search2(void);
void del_name(int);
void display(void);
void top_student();
void fail_student();
void show(int *, int);
void title(int *);
int menu_select(void);
int spare_space(void) ;
void save (void);
void load(void);
void in_style(int l);
void delete_main(void);
void delete_name2(void);
void search_main(void);
static int l;
int main(void)
{
char choice ,ans;
first_evalution();
for(;;){
choice = menu_select() ;
switch(choice) {
case 1: enter();in_style(l); break;
case 2: search_main(); break ;
case 3: top_student(); break;
case 4: fail_student(); break ;
case 5: delete_main(); break ;
case 6: save();break;
case 7: load();break;
case 8: display();break;
case 9:{
printf("are you sure you want to quit ?(y/n)");
ans=getche();
clrscr();
if(ans=='y')
exit(0);break; }
}
}
}
void first_evalution(void)
{
register int i ;
for(i = 0; i < MAX; ++i)
st[i].name[0] = '\0' ;
}
int menu_select(void)
{
char s[10];
int g ;
printf("\n\t(1) << enter information >>");
printf("\n\t(2) << search menu >>");
printf("\n\t(3) << show top students >>");
printf("\n\t(4) << show fail students >>");
printf("\n\t(5) << delete menu >>");
printf("\n\t(6)<< save info >>");
printf("\n\t(7)<< load info >>");
printf("\n\t(8)<< display info >>");
printf("\n\t(9)<< quit from program >>");
do {
printf("\n\t Please enter your choice(1-9): ") ;
gets(s);
clrscr();
g = atoi(s);
} while(g < 0 || g > 9) ;
return (g) ;
}
void enter(void)
{
char name3[30];
float grade, sum_grade = 0;
int t, unit, sum_unit = 0 ,j,i;
t = spare_space() ;
if(t == -1){
printf("\n sorry the list is full.....press any key to continue");
getch();
return ;
}
printf("\n\t enter name:") ;
gets(st[t].name) ;
strcpy(name3,st[t].name);
for(i=0;i<t && st[i].name[0] ;i++)
{
if(strcmp(st[i].name,name3)==0){
printf("the similar name is already in the list. contine any way?(y,n)");
if(getche()=='n')
{
clrscr();
st[t].name[0]='\0';
return ;}}
}
l++;
clrscr();
printf("\n\tenter student number:") ;
scanf("%d", &st[t].student_number) ;
clrscr();
printf("\n\tenter number of course:") ;
scanf("%d", &st[t].amount_course) ;
clrscr();
for(j = 1; j <= st[t].amount_course; j++) {
printf("\n\tenter grade for course %d:",j);
scanf("%f", &grade) ;
clrscr();
printf("\n\tenter unit of course %d:", j);
scanf("%d", &unit) ;
clrscr();
sum_grade += grade * unit ;
sum_unit += unit ;
}
st[t].unit=sum_unit;
st[t].avrage = sum_grade / sum_unit ;
}
int spare_space(void)
{
register int i ;
for(i = 0; st[i].name[0] && i< MAX ; ++i);
if(i == MAX) return -1 ;
return i ;
}
void delete_main(void)
{
char c[10];
int h;
do {
printf("how do you want to delete info ?");
printf("\n\t\t\t(1)=base on name");
printf("\n\t\t\t(2)=base on student number");
gets(c);
clrscr();
h=atoi(c);} while(h<0 || h>2);
if(h==1){
delete_name2();}
if(h==2){
del_name(l);}
if(h!=1 && h!=2)
return;
}
void del_name(int l)
{
int i ;
char ans;
printf("\n\tenter record #(0 - %d):",l) ;
scanf("%d", &i) ;
printf("are u sure you want to delete record %d?(y/n)");
ans=getche();
clrscr();
if(ans=='y'){
if( st[i].name[0]){
st[i].name[0]='\0' ;
printf("deleted Successfully !!");}
else if(!st[i].name[0])
printf("this record is not in the list....press any key to continue...."); }
getch();
clrscr();
}
void delete_name2(void)
{
char name2[30],ans;
int i,h,w=0;
printf("\tenter a name to delete");
gets(name2);
printf("are you sure you want to delete %s information?(y/n)",name2);
ans=getche();
clrscr();
if(ans=='y'){
for(i=0;i<MAX;i++)
{
if(strcmp(st[i].name,name2)==0) {
h=i;
w=1; }}
if(w==1){
st[h].name[0]='\0' ;
printf("deleted Successfully !!");
}
if(w==0) {
printf("the one you are looking for is not in the list.press any key to continue.........."); }}
getch();
clrscr();
}
void display(void)
{
int i, r = 0;
;
title(&r) ;
for(i = 0; i < MAX; ++i)
if(st[i].name[0])
show(&r, i);
gotoxy(114,r);
printf("\n\t please press any key to continue ") ;
getch();
clrscr();
gotoxy(29,r+1);
getch();
}
void fail_student(void)
{
int i, r=0 ,a=0;
for(i = 0; i < MAX; ++i){
if(st[i].name[0] && st[i].avrage < 12){
a=1;
title(&r);
show(&r, i) ; }
}
if(a==0){
printf("there is no fail student!");}
gotoxy(25,r+1);
printf(" please press any key to continue ") ;
getch();
clrscr();
}
void top_student(void)
{
int i, r=0 ,a=0;
for(i = 0; i < MAX; ++i){
if(st[i].name[0] && st[i].avrage >= 17){
a=1;
title(&r);
show(&r, i) ; }
}
if(a==0){
printf("there is no top student!");}
gotoxy(25,r+1);
printf(" please press any key to continue ") ;
getch();
clrscr();
}
void title(int *r)
{
*r = 1;
gotoxy(25,*r);
printf(" << all the info in list are: >>");
gotoxy(6,*r+2);
printf(" name avrage ");
printf(" unit amount_course st_no ");
gotoxy(6,*r+3);
printf(" ________ ________ ");
printf(" ______ ______ ____ ");
*r = 4;
}
void show(int *r, int i)
{
gotoxy(14,*r);
printf("%s ", st[i].name) ;
gotoxy(26,*r);
printf("%.2f ", st[i].avrage) ;
gotoxy(40,*r);
printf("%d ", st[i].unit) ;
gotoxy(54,*r);
printf("%d ", st[i].amount_course) ;
gotoxy(70,*r);
printf("%u ", st[i].student_number) ;
(*r) ++ ;
}
void search_main(void)
{
char j[10];
int y;
do {
printf("how do you want to search?");
printf("\n\t\t\t(1)=base on name");
printf("\n\t\t\t(2)=base on student number");
gets(j);
clrscr();
y=atoi(j);} while (y<0 || y>2);
if(y==1){
search();}
if(y==2){
search2();}
if(y!=1 && y!=2)
return ;
}
void search(void)
{
int i,r=0,m=0,t=0;
char name2[30];
printf("enter a name to search");
gets(name2);
clrscr();
for(i=0;st[i].name[0];i++)
{
if(strcmp(name2,st[i].name)==0){
t=i;
m=1; }}
if(m==1){
title(&r) ;
show(&r, t);}
if (m==0)
printf("the one you are looking for is not in the list......press any key to continue");
getch();
clrscr();
}
void save(void)
{
FILE *fp ;
register int i ;
fp = fopen("project", "wb");
if(!fp) {
printf("\n cannot open file press a key ...");
getch() ;
clrscr();
return ;
}
for(i = 0 ; i < MAX ; i++)
if(*st[i].name)
fwrite(&st[i], sizeof(struct student), 1, fp) ;
clrscr() ;
gotoxy(20, 10) ;
printf("data saved.press a key.");
getch() ;
clrscr();
}
void load(void){
FILE *fp ;
register int i ;
fp = fopen("project", "rb");
if(!fp) {
printf("\n cannot open file press a key ...");
getch() ;
clrscr();
return ;
}
for(i = 0 ; i < MAX; i++) {
fread(&st[i], sizeof(struct student), 1, fp);
if(feof(fp)) {
clrscr() ;
gotoxy(20,10) ;
printf("data are loaded.press a key...........");
getch() ;
clrscr();
return ;
}
}
}
void search2(void)
{
int i,num2,r=0,a;
printf("enter the student number for the one you are looking for");
scanf("%d",&num2);
a=0;
for(i=0;i<MAX;i++){
if(st[i].student_number==num2){
a=1;
title(&r);
show(&r,i);}}
if(a==0)
printf("the one you are lookig for is not in the list...press any key to continue...");
getch();
clrscr();
}
void in_style(int l)
{
int i,j;
char name2[30];
struct student st1={0};
for(i=l-1;i>0;i--){
for(j=0;j<i;j++)
if(strcmp(st[j].name,st[j+1].name)>0){
st1=st[j];
st[j]=st[j+1];
st[j+1]=st1;
}
}
return;
}
کد زیر بروش بازگشتی عناصر یک آرایه رو چاپ میکنه :
#include <iostream>
#include <conio>
void Print_array(int a[],int n){
if(n==1)
cout<<a[n-1]<<" ";
else{
Print_array(a,n-1);
cout<<a[n-1]<<" ";
}
}
//===============================
int main(){
int a[]={2,6,8,5,3};
Print_array(a,5);
getch();
}
#include <iostream>
#include <conio>
int Rec_Add(int a,int b){
if(b==0)
return a;
else
return Rec_Add(a+1,b-1);
}
//===========================
int Rec_Multiply(int a,int b){
if(b==1)
return a;
else
return a+Rec_Multiply(a,b-1);
}
تو این برنامه سعی کردم یه چیزی شبیه paint ویندوز بنویسم.
امکانات اون نداره ولی فک کنم ارزش دیدن داشته باشه:لبخندساده:
فایل mouse.h رو در فلدر include ذخیره کنید و project07 رو در bin.
بزرگترین مقسوم علیه مشترک دو عدد به صورت بازگشتی
#include <conio.h>
#include <iostream.h>
int gcd(int,int);
int main()
{
int x,y;
cout<<"enter amount for x and y:";
cin>>x>>y;
int k=gcd(x,y);
cout<<k;
getch();
return 0;
}
int gcd(int x,int y)
{
if(y==0)
return x;
else
return gcd(y,x&y);
}
محاسبه توان یک عدد به صورت بازگشتی
#include <iostream.h>
#include <conio.h>
int power(int,int);
int main()
{
int exp,base;
cout<<"enter base,exp:";
cin>>base>>exp;
int h=power(base,exp);
cout<<"it equals by:"<<h;
getch();
return 0;
}
int power(int base,int exp)
{
if(exp==1)
return base;
else
return base*power(base,exp-1);
}
مدتی نبودم . دارم رو برنامه ی کتابخونه کار می کنم . تا حالا یه 1000 خطی شده ، تموم شد میزارم واسه دانلود !
و اما شما دوست عزیز :
تا به حال دقت کردی توابع strlwr و strupr چگونه کار می کنند ؟
خیلی ساده .... !
- در واقع کاراکتر در ++C عبارت است از یک کد 8 بیتی اسکی
- تابع اول حروفی از یک آرایه رو که بزرگ هستند کوچک و سپس چاپ میکنه
- تابع دوم حروفی از یک آرایه رو که کوچک هستند بزرگ و سپس چاپ میکنه
- این لینک ها هم مفید خواهند بود اگه به دنبال حرفه ای تر از اون چیزی هستی که من واسه دانلود گذاشتم .
http://support.sas.com/documentation...1/z2056662.htmبا تشکر
http://www.exforsys.com/tutorials/c-...ings-in-c.html
http://www.codase.com/search/definition?name=strlwr
http://poli.cs.vsb.cz/c/help/string0.htm
http://www.conman.org/software/amc/d...rsguide-3.html
pouya.taghipour@gmail.com
این برنامه رو طبق اصول شئ گرایی نوشتم، البته یه تیکه از برنامه که غیر فعالش کردم کار نمیکنه فکر کنم که باید تابع رو بصورت friend تعریف کنیم.
از اساتید می خوام که یه نگاهی بهش بندازن.
#include"iostream.h"
#include<CONIO.H>
class Complex{
double re,im;
public:
Complex(){re=0,im=0;}
Complex(double r){re=r,im=0;}
Complex(double r,double i){re=r,im=i;}
void setr(double x){re=x;}
void seti(double x){im=x;}
double getr(){return re;}
double geti(){return im;}
void set(double r,double i)
{
re=r;
im=i;
}
void print(ostream &o){
o<<re;
if(im>=0)o<<'+';
o<<im<<'i';
}
Complex operator+(Complex rhs){
Complex h;
h.re=re+rhs.re;
h.im=im+rhs.im;
return h;
}
Complex operator*(Complex rhs){
Complex h;
h.re=re*rhs.re - im*rhs.im;
h.im=im*rhs.re + re*rhs.im;
return h;
}
Complex operator*(double x){
Complex h;
h.re=re*x;
h.im=im*x;
return h;
}
/*
Complex operator *(double x,Complex rhs){
Complex h;
h.setr(x*rhs.getr());
h.seti(x*rhs.geti());
// return c*x;
return h;
}
*/
Complex operator/(Complex rhs){
double d=rhs.re * rhs.re + rhs.im*rhs.im;
Complex h;
h.re=(re*rhs.re + im*rhs.im)/d;
h.im=(im*rhs.re - re*rhs.im)/d;
return h;
}
};
ostream &operator <<(ostream &o,Complex cc){
cc.print(o);
return (o);
}
void main(){
clrscr();
Complex a(2,3),b(-1,4),c;
//a.set(2,3);
//b.set(-1,4);
c=a+b;
cout<<"\t\t\n a + b = "<<c;
c=a*b;
cout<<"\t\t\n a * b = "<<c;
c=a/b;
cout<<"\t\t\n a / b = "<<c;
c=a*2;
cout<<"\t\t\n a* 2 = "<<c;
}
یه برنامه برای کار با لیست ها که تمام مباحث شئ گرایی توی این برنامه رعایت شده!
#include <iostream.h>
#include <time.h>
#include <stdlib.h>
#define SIZE 200
#define INVALID -1
#ifndef array_list_h
#define array_list_h
class array_list {
public:
array_list(int sz = 0);
~array_list() { clear(); }
bool isEmpty(void) { return (num == 0); }
bool isInList(int sample);
int getLength(void) { return num; }
int getItem(int pos) { return a[pos]; }
void setItem(int pos, int newItem) { a[pos] = newItem; }
void insert(int pos, int newItem);
void remove(int pos);
void bubbleSort(void);
void insertionSort(void);
void selectionSort(void);
void heapSort(void);
void mergeSort(void) { mergeSortStub(0, num-1); }
void quickSort(void) { quickSortStub(0, num-1); }
int sequentialSearch(int key);
int binarySearch(int key) { return binarySearchStub(0, num-1, key); }
void clear() { for (int i = 0; i < SIZE; i++) a[i] = INVALID; num = 0; }
void display() { for (int i = 0; i < num; i++) cout << a[i] << " "; cout << endl; }
private:
void swap(int& x, int& y) { int temp = x; x = y; y = temp; }
int findMin(int curr, int last);
void fixHeap(int heapsize, int root, int k);
void constructHeap(int root);
int deleteMin(void);
void merge(int start, int last);
void mergeSortStub(int start, int last);
int random(int start, int last) { srand(time(NULL)); return start + rand() % (last-start+1); }
int partition(int start, int last);
void quickSortStub(int start, int last);
int binarySearchStub(int start, int last, int key);
int num;
int a[SIZE];
};
array_list::array_list(int sz)
{
int i;
for (i = 0; i < sz; i++)
a[i] = 0;
for (i = sz; i < 200; i++)
a[i] = INVALID;
num = sz;
}
bool array_list::isInList(int sample)
{
bool check = false;
for (int i = 0; i < num; i++)
if (a[i] == sample) {
check = true;
break;
}
return check;
}
void array_list::insert(int pos, int newItem)
{
if (pos > getLength())
return;
for (int i = num; i > pos; i--)
a[i] = a[i-1];
a[pos] = newItem;
num++;
}
void array_list::remove(int pos)
{
if (pos >= getLength())
return;
for (int i = pos; i < num-1; i++)
a[i] = a[i+1];
a[num-1] = INVALID;
num--;
}
//====================== SORTING ==========================//
void array_list::bubbleSort(void)
{
for (int i = 0; i < num-1; i++)
for (int j = i+1; j < num; j++)
if (a[i] > a[j])
swap(a[i], a[j]);
}
void array_list::insertionSort(void)
{
for (int i = 0; i < num; i++) {
int j = i;
while ((j > 0) && (a[j] < a[j-1])) {
swap(a[j], a[j-1]);
j--;
}
}
}
int array_list::findMin(int curr, int last)
{
if (last - curr == 1) {
if (a[curr] < a[last])
return curr;
else
return last;
}
else {
int rest = findMin(curr+1, last);
if (a[curr] < a[rest])
return curr;
else
return rest;
}
}
void array_list::selectionSort(void)
{
for (int i = 0; i < num-1; i++) {
int j = findMin(i, num-1);
swap(a[j], a[i]);
}
}
void array_list::fixHeap(int heapsize, int root, int k)
{
if (2*root+1 > heapsize) // the root has no child
a[root] = k;
else {
int largerSubHeap;
if (2*root+1 == heapsize) // the root has 1 child
largerSubHeap = 2*root+1;
else // the root has 2 children
largerSubHeap = (a[2*root+1] > a[2*root+2]) ? (2*root+1) : (2*root+2);
if (k >= a[largerSubHeap])
a[root] = k;
else {
a[root] = a[largerSubHeap];
fixHeap(heapsize, largerSubHeap, k);
}
}
}
void array_list::constructHeap(int root)
{
int k = a[root];
if (2*root+1 >= num) // the root has no child
return;
else if (2*root+2 == num) // the root has 1 child
constructHeap(2*root+1);
else { // the root has 2 children
constructHeap(2*root+1);
constructHeap(2*root+2);
}
fixHeap(num, root, k);
}
void array_list::heapSort(void)
{
int heapsize;
constructHeap(0);
for (heapsize = num; heapsize >= 2; heapsize--) {
int currentMax = a[0];
int k = a[heapsize-1];
fixHeap(heapsize-1,0, k);
a[heapsize-1] = currentMax;
}
}
void array_list::merge(int start, int last)
{
int i, j, k;
int aux[SIZE];
int mid = (start + last) / 2;
for (i = start; i <= mid; i++)
aux[i] = a[i];
for (i = mid+1; i <= last; i++)
aux[last+mid+1-i] = a[i];
j = start; k = last;
for (i = start; i <= last; i++)
a[i] = (aux[j] < aux[k]) ? aux[j++] : aux[k--];
}
void array_list::mergeSortStub(int start, int last)
{
if (last > start) {
int mid = (last + start) / 2;
mergeSortStub(start, mid);
mergeSortStub(mid+1, last);
merge(start, last);
}
}
int array_list::partition(int start, int last)
{
swap(a[start], a[random(start, last)]);
int pivot = a[start];
int leftwall = start;
for (int i = start+1; i <= last; i++) {
if (a[i] < pivot) {
leftwall++;
swap(a[i], a[leftwall]);
}
}
swap(a[start], a[leftwall]);
return leftwall;
}
void array_list::quickSortStub(int start, int last)
{
if (last > start) {
int pivot = partition(start, last);
quickSortStub(start, pivot-1);
quickSortStub(pivot+1, last);
}
}
//====================== SEARCHING ==============//
int array_list::sequentialSearch(int key)
{
int i = 0;
while ((i < num) && (a[i] != key))
i++;
if (i == num)
return -1;
else
return i;
}
int array_list::binarySearchStub(int start, int last, int key)
{
if (last < start)
return -1;
else {
int mid = (start + last) / 2;
if (key == a[mid])
return mid;
else if (key < a[mid])
return binarySearchStub(start, mid-1, key);
else
return binarySearchStub(mid+1, last, key);
}
}
البته تابع main رو اینجا نمی بینم!! (هر کی خواست،برای برنامه خودش تابع main رو هم بنویسه)
یه برنامه که طول رشته رو تا رسیدن به Enter حساب میکنه :لبخند:
#include<iostream.h>
#include<conio.h>
void main()
{
clrscr();
char ch;int i=0;
while(cin.get()!='\n')
i++;
cout<<i;
getch();
}