خروجی این برنامه جدول کاراکتر های اسکی + شماره ی مربوط به اونهاست.
برای تنوع این یکی رو با C نوشتم.
www.innovation.iranblog.com
Printable View
خروجی این برنامه جدول کاراکتر های اسکی + شماره ی مربوط به اونهاست.
برای تنوع این یکی رو با 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();
}
اینم n جمله اول فیبوناچی رو حساب میکنه !
#include <iostream.h>
#include <conio.h >
main(){
int x=1;
int y=1,z=0;
int n;
cout <<"\n enter number:";
cin >>n;
cout<<x;
cout <<y;
for (int i=2;i<n;i++){
z=x+y;
x=y;
y=z;
cout<<z;
}
getch();
}
تعداد فاصله هایی که تو رشته هست رو میده!
#include<iostream.h>
#include<conio.h>
void main()
{
clrscr();
int i=1;char ch;
while((ch=cin.get())!='\n')
{
if(ch==' ')
i++;
}
cout<<i;
getch();
}
خروجی این برنامه بصورت :
*
**
***
****
*****
*n
#include<iostream.h>
#include<conio.h>
void star(int n)
{
if(n!=0)
{star (n-1);
for (int i=1 ; i<=n ; i++)
cout<<"*";
cout <<"\n";
}
}
void main ()
{
clrscr();
int n;
cout <<"enter a number :" ;
cin >> n;
star(n);
getch();
}
اینم یه برنامه برای برج هانوی که البته بدون گرافیکه فعلا!!
#include <stacks.h>
#include <iostream.h>
TStack <int> s[3];
void transfer(int n,int from ,int to, int temp){
if(n>0){
// move n-1 disks from origin to temporary
transfer(n-1, from,temp,to);
// move n th disk from origin to destination
s[to].Push(s[from].Pop());
//move n-1 disks from temporary to destination
transfer(n-1, temp,to,from);
}
}
void PrintStacks(){
for (int i=0;i<3;i++){
cout << "\n<";
while (!s[i].IsEmpty()){
cout << s[i].Pop()<<',';
}
cout <<']';
}
}
main(){
int n;
cout<<"n:";cin>>n;
for (int i=n;i>0;i--)s[0].Push(i);
transfer(n,0,1,2);
PrintStacks();
}
این برنامه هم برای محاسبه تابع sin هست که تا اجرا نکنی نمی دونی چیه!
#include<iostream.h>
#include<conio.h>
int pow(int a, int b);
int fact(int a);
double sin(int(*p)(int a,int b),int(*q)(int b),int x);
void main(){
int x;
clrscr();
cout<<"Please Enter Number : ";
cin>>x;
cout<<fact(x)<<endl<<pow(x,x);
//cout<<sin(pow,fact,x);
getch();
}
int pow(int a,int b){
int pow=1;
for (int i=1;i<=b;i++)
pow*=a;
return pow;
}
int fact(int a){
int fact=1;
for(int i=1;i<=a;i++)
fact*=i;
return fact;
}
double sin(int(*p)(int a,int b),int(*q)(int b),int x){
double sum=0;
int b=1;
for(int i=1;i<=15;i+=2){
sum+=(pow)(x,i)/(fact)(i)*b;
b=-b;
}
return sum;}
اینم یه تابع برای محاسبه انتگرال معین یه تابع :
double integral(double (*f)(double),double a,double b,int n)
{
double s=0,dx=fabs((b-a)/n);
for(double i=0;i<n;i++)
s+=(f(a+i*dx)+f(a+(i+1)*dx));
return dx*s/2;
}
اینم یه برنامه برای محاسبه ریشه n ام یک عدد:
double root(double n,double a)
{
double x1=1,x0;
do
{
x0=x1;
x1=(n-1)/n*x0+a/(n*pow(x0,n-1));
}while(fabs(x1-x0)>1e-6);
return x1;
}
برنامه زیر بدون استفاده از هیچ یک از توابع گرافیکی ، نمودار آماری یکسری داده ها (بین 1 تا 20)
رو رسم میکنه ، (نوشته شده در Borland 5.02) ، میتونه برای کاربردهای متفاوتی استفاده
بشه :
http://salarcpp.persiangig.com/Image%201/graph.PNG
* در ابتدا تعداد داده ها و بعد خود داده ها بین 20 - 1 را وارد می کنید .
من هم از این فرصت استفاده می کنم و سه برنامه (تشخیص زوج وفرد،رابطه فیثاغورس و تشخیص بزرگترین عدد)رو آپ می کنم امیدوارم خوشتان بیاد
سلام ،
اگه توجه کرده باشید به منظور اینکه بعضی از عملیاتی رو که انجام میدید ممکنه نیاز داشته باشید که به صورت Automate انجام بشن ممکنه نیاز پیدا کنید دسته ای از فایلها رو در یک Directory خاص بخواهید پاک کنید .
این قطعه کد اجازه بهتون میده که با تعیین مسیر Directory کلیه فایلهای موجود در یک دایرکتوری رو پاک کنید .
البته حواستون جمع باشه که یه زمانی برای تست روی یک دایرکتوری حساس این کارو انجام ندین ;)
سلام .
برنامه مثلث خیام ؛ پاسکال با بیانی بسیار ساده
اینم اولین پست من! برنامهای که تعداد یکهای یک عدد (چه مثبت و چه منفی) در مبنای ۲ رو میشماره مثلاً اگه ۵ وارد کنید خروجی میشه ۲:
#include <iostream>
using namespace std;
int main()
{
int n, cnt;
cin >> n;
for (cnt = 0; n; n &= n - 1, cnt++);
cout << cnt << endl;
return 0;
}
نقطه زین اسبی مختصات عنصری در ماتریس است که در آن سطر کمترین مقدار و در آن ستون بیشترین مقدار را دارد.
یک رشته و یک کاراکتر را دریافت کرده و در طول رشته هر جا که آن کاراکتر باشد را پاک میکند.
محل شروع یک رشته را در رشته دیگر پیدا میکند .
حذف یک رشته از رشته دیگر.
شطرنج به زبان C
بصورت کاملا گرافیکی و کامل.
یک عدد را از یک مبنا به مبنای دیگر میبرد.
معادله درجه 2 را حل می کند.
برنامه ماشین حساب که در این برنامه کار با لیست پیوندی را به راحتی یاد میگیرید زیرا این برنامه تماما بصورت لیست پیوندی میباشد و برای نوشتن آن تو زمان خودش کلی وقت گذاشتم.