رفتن به مطلب

برنامه نویسی c++ - آموزش و سورس برنامه ی سی پلاس پلاس


poor!a

ارسال های توصیه شده

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

;(کاراکتر جایگزینی ,رشته مورد نظر)strset

 

به عنوان مثال دستور زیر رشته ی str را با کاراکتر x پر میکند:

 

strset(str, 'x');

//end

 

 

تابع strnset: این تابع یک کاراکتر را به تعداد دفعات مشخصی در یک رشته کپی میکند. شکل کلی:

;(تعداد دفعات کپی ,کاراکتر جایگزینی ,رشته مورد نظر)strnset

 

 

برای مثال دستور زیر کاراکتر 0 را به تعداد 8 بار در ابتدای رشته str کپی میکند:

strnset(str, '0', 8);

//end

لینک به دیدگاه
  • پاسخ 172
  • ایجاد شد
  • آخرین پاسخ

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

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

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

strrev(str);

//end

 

 

تابع strtok: این تابع نشانه های موجود در یک رشته را مشخص میکند و بیشتر برای تجزیه رشته ها کاربرد دارد:

 

char* token = strtok(str1, str2);

//end

 

 

در الگوی فوق str1 رشته ای است که نشانه های موجود در آن باید جدا شوند و str2 رشته ای است که جدا کننده ها را مشخص میکند. این تابع اشره گری را به نشانه ی یافت شده بر میگرداند.

لینک به دیدگاه

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

#include

 

void main()

{

int n, m, x[50], y[50];

register c;

cout

cin>>n;

cout

for(register i=0;i

cin>>x;

cout

cin>>m;

cout

for(c=0;c

cin>>y[c];

//------------------------------------------------------------

cout

char ch;

i=0;

for(i=0;i

if(x!=x[i-1])

cout

for(c=0;c

if(y[c]!=y[c-1])

{

ch=0;

for(i=0;i

if(y[c]==x)

{

ch=1;

break;

}

if(ch!=1)

cout

}

cout

//------------------------------------------------------------

cout

c=0;

for(i=0;i

if(x!=x[i-1])

for(;y[c]

if(y[c]!=y[c-1]&&x==y[c])

{

cout

break;

}

//-------------------------------------------------------------

}

 

 

//end

لینک به دیدگاه

این برنامه تا زمانی که کاربر Enter بزنه، شروع به ریختن تصادفی تاس میکنه و عدد اون رو نمایش میده.

//This program can imagery dice rolling.

#include

#include

#define randomize()(srand(time(0)))

#define random(x)(rand()%x)

#include

#include

 

void main()

{

cout

int n=1;

do{

char ch=getch();

if(ch==13)

{

clrscr();

randomize();

switch(random(6)+1)

{

case 1:

cout

break;

case 2:

cout

break;

case 3:

cout

break;

case 4:

cout

break;

case 5:

cout

break;

default :

cout

}//end of switch

}//end of if

else if(ch==27)

break;//break the loop if user press the Esc.

}while(1);//end of DO…WHILE loop.

}

 

 

//end

لینک به دیدگاه

عملگر شرطی (عملگر سه تایی Ternary Operator):

 

در C++ میتوان به واسطه ی عملگر ? یک ساختار تصمیم گیری ساده ولی پر کاربرد را پیاده سازی کرد که به این واسطه در کد نویسی صرفه جویی میشود. شکل کلی به کار گیری این عملگر به صورت زیر است:

 

;عبارت محاسباتی 2 : عبارت محاسباتی 1 ? (عبارت شرطی) = متغیر

 

عملکرد این عملگر به این صورت است که اگر عبارت شرطی دارای ارزش درستی بود، آنگاه مقدار عبارت محاسباتی 1 ارزیابی شده و در متغیر سمت چپ دستور انتساب قرار می گیرد، و الا اگر عبارت شرطی دارای ارزش نادرستی باشد مقدار عبارت محاسباتی 2 ارزیابی شده و در متغیر سمت چپ دستور انتساب قرار میگیرد.

 

به عبارت دیگر عملگر سه تایی معادل کد زیر عمل میکند:

(عبارت شرطی)if

;عبارت محاسباتی 1 = متغیر

else

;عبارت محاسباتی 2 = متغیر

لینک به دیدگاه

برنامه ای که با دریافت تاریخ یک روز سال جاری، تعداد روز های گذشته از ابتدای سال را مشخص میکند. این برنامه برای سال های کبیسه جواب اشتباه می دهد.

#include

#include

 

int main()

{

short month, day, total_days;

int day_per_month[12]={31,31,31,31,31,31,

30,30,30,30,30,29};

cout

cin>>month;

if(month12)

{

cout

getch();

return 0;

}

cout

cin>>day;

total_days=day;

for(int i=0;i

total_days+=day_per_month;

cout

return 0;

}

 

 

//end

لینک به دیدگاه

دستکاری کننده ی setw:

 

دستکاری کننده ها، عملگر هایی هستند که برای تغییر یا پردازش داده ها برای چاپ در خروجی با عملگر درج >> بکار می روند. قبلا با دستکاری کننده ی endl آشنا شدید اکنون توجه شما را به دستکاری کننده ی setw جلب میکنیم که طول میدان خروجی را تغییر میدهد. برای استفاده از این دستکاری کننده باید هدر فایل iomanip را به برنامه اضافه کرد.

هر مقداری که توسط cout چاپ میشود میدانی از فضا را اشغال میکند. این میدان، محدوده ای است که خروجی میتواند در آن چاپ گردد. میدان پیشفرض دارای طولی به قدر کافی بزرگ است تا بتواند مقدار مورد نظر را در خود چاپ (ذخیره) کند. مثلا عدد 576 دارای میدانی به طول 3 کاراکتر و رشته "Computer" میدانی به طول 8 کاراکتر را اشغال میکند. با وجود این در بعضی از موارد، طول میدان پیشفرض منتهی به نتایج مطلوبی نمیشود. لذا می توان به واسطه دستکاری کننده setw میدان پیشفرض را تغییر داد. دستکاری کننده setw باعث میشود عدد یا رشته ای که بعد از آن در جریان داده ها می آید، در میدانی به طول n کاراکتر چاپ شود که در آن n، ورودی تابع setw(n) است. مقدار عدد یا رشته ی مورد نظر در داخل میدان، به صورت تراز از راست چیده میشود.

لینک به دیدگاه

انتقال مکان نما در صفحه نمایش:

 

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

 

gotoxy(int x, int y);

//end

 

در حالت کنسول صفحه نمایش بصورت 80 ستون و 25 ردیف فرض میشود. که گوشه ی بالا سمت چپ، معادل نقطه (0,0) و گوشه ی پایین سمت راست معادل نقطه (80,25) در نظر گرفته میشود. نکته ی قابل توجه آن که در دستور gotoxy ایتدا شماره ستون و سپس شماره ردیف ذکر می گردد. برای مثال دستور زیر مکان نما را به ستون پنجم و ردیف دهم منتقل میکند:

gotoxy(5, 10);

//end

 

[h=2]نکته: نبود تابع clrscr و gotoxy در کامپایلر Dev C++ و نحوه تعریف آنها[/h]

دوستانی که با کامپایلر Dev C++ کار کرده اند، حتما میدانند که این کامپایلر دو تابع مهم gotoxy و clrscr رو در خودش به صورت تعریف شده نداره. ولی میشه این دو رو تعریف کرد و حتی بعد از تعریف با فرمت .h ذخیره و به عنوان هدر فایل استفاده کرد.

روش تعریف این دو در Dev C++ به شکل زیر است:

 

#include

#include

 

using namespace std;

 

void gotoxy(int x, int y)

{

HANDLE hConsoleOutput;

COORD dwCursorPosition;

cout.flush();

dwCursorPosition.X=x;

dwCursorPosition.Y=y;

hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleCursorPosition(hConsoleOutput, dwCursorPosition);

}

 

void clrscr()

{

system("cls");

}

 

 

//end

لینک به دیدگاه

تمرین

 

یه تمرین کامل برای آرایه ها:

 

47- برنامه ای بنویسید که 4 نمره امتحانی 10 دانشجو را خوانده و معدل هر دانشجو و معدل کلاس را در هر درس محاسبه و چاپ نماید.

#include

#include

#include

 

int main()

{

int score[10][5]={0};

int lesson_sum[4]={0};

for(int i=0;i

{

for(int j=0;j

{

if(j==0)

{

cout

cin>>score[0];

}

else

{

cout

cin>>score[j];

lesson_sum[j-1]+=score[j];

}

}

clrscr();

}

clrscr();

for(i=0;i

{

float sum=0;

for(int j=1;j

sum+=score[j];

cout

}

for(i=0;i

cout

cout

return 0;

}

 

 

//end

لینک به دیدگاه

برای جمع اعدادی که در محدوده ی قابل ذخیره در مبنا 32 اعداد int نباشند، باید به صورت نرم افزاری عمل کرد. در زیر برنامه ای ارائه شده که با استفاده از وکتور های یک بعدی دو عدد بسیار بزرگ (Huge Integer) را با یکدیگر جمع میکند.

//This program gets the sum of two huge integer numbers.

#include

#include

#include

 

int main()

{

vector num1,num2,result;

cout

cout

char ch;

while((ch=getch())!=13)

{

if(ch>='0'&& ch

{

cout.put(ch);

ch-=48;

num1.push_back(ch);

}

}

cout

while((ch=getch())!=13)

{

if(ch>='0'&& ch

{

cout.put(ch);

ch-=48;

num2.push_back(ch);

}

}

cout

int min_size;

min_size = num1.size()

num1.size() : num2.size();

bool carry=0;

while(min_size>0)

{

if(num1.back()+num2.back()+carry

{

result.push_back(num1.back()+num2.back()+carry);

num1.pop_back();

num2.pop_back();

carry=0;

}

else

{

result.push_back((num1.back()+num2.back()+carry)%10);

num1.pop_back();

num2.pop_back();

carry=1;

}

min_size--;

}

while(num1.size()!=0)

{

if(num1.back()+carry

{

result.push_back(num1.back()+carry);

num1.pop_back();

carry=0;

}

else

{

result.push_back((num1.back()+carry)%10);

num1.pop_back();

carry=1;

}

}

while(num2.size()!=0)

{

if(num2.back()+carry

{

result.push_back(num2.back()+carry);

num2.pop_back();

carry=0;

}

else

{

result.push_back((num2.back()+carry)%10);

num2.pop_back();

carry=1;

}

}

if(carry==1)

result.push_back(1);

while(result.size()>0)

{

cout.put(result.back()+48);

result.pop_back();

}

cout

return 0;

}

 

 

//end

لینک به دیدگاه

برنامه ای که ضرب دو ماتریس با ابعاد m*n و n*p را پیاده سازی میکند.

//This program calculates the product of 2 matrix.

#include

#include

#include

 

int main()

{

int m,n,p;

cout

cout

cout

cin>>m;

cout

cin>>n;

vector > A(m, vector (n,0));

cout

cout

cin>>p;

vector > B(n, vector (p,0));

clrscr();

cout

for(int i=0;i

for(int j=0;j

{

cout

cin>>A[j];

}

cout

for(i=0;i

for(int j=0;j

{

cout

cin>>B[j];

}

vector > C(m, vector (p,0));

for(i=0;i

for(int k=0;k

for(int j=0,sum=0;j

C[k]+=A[j]*B[j][k];

clrscr();

for(i=0;i

{

for(int j=0;j

cout

cout

}

return 0;

}

 

 

//end

لینک به دیدگاه

برنامه ای که یک رشته را در رشته ای دیگر کپی میکند.

//This program copies one string to another.

#include

#include

 

int main()

{

char s1[2000],s2[2000];

cout

cin.get(s1,100,'.');

for(int i=0; i

s2=s1;

s2='\0';

clrscr();

cout

cout

return 0;

}

 

 

//end

لینک به دیدگاه

تمرین

 

یه تمرین برای آرایه:

 

48- برنامه بنویسید که نام روز های هفته را در یک آرایه قرار دهد و آنها را چاپ کند.

//This program uses array of string.

#include

 

int main()

{

const int Days=7;

const int Max_Length=10;

char str_array[Days][Max_Length] = {"Sunday","Monday",

"Tuesday","WednesDay","Thursday","Friday","Saturday"};

for(int i=0;i

cout

return 0;

}

 

 

//end

لینک به دیدگاه

توابع جستجوی یک زیر رشته در رشته هایی از نوع string:

 

در تمامی موارد زیر فرض کنید str رشته ای از نوع string است که بصورت زیر تعریف شده است:

string str;

//end

 

تابع find: این تابع جهت یافتن یک زیر رشته در یک رشته از نوع string به کار می رود. این تابع بصورت کلی زیر بکار می رود:

;(نقطه شروع جستجو ,زیر رشته مورد جستجو)int pos = str.find

 

 

عملکرد این تابع به این صورت است که اگر زیر رشته داده شده به عنوان ورودی تابع در رشته ی str یافت شود، موقعیت آن در رشته str و در غیر این صورت عدد -1 برمیگرداند.

 

تابع rfind: این تابع از نظر به کار گیری دقیقا مشابه تابع find است با این تفاوت که عمل جستجو را از نقطه شروع به طور معکوس (به سمت ابتدا رشته) انجام میدهد.

 

تابع find_first_of: این تابع رشته را به جهت یافتن اولین موقعیتی که یک کاراکتر از عناصر یک مجموعه کاراکتری وجود داشته باشد، مورد جستجو قرار می دهد و بصورت کلی زیر بکار می رود:

 

;(نقطه شروع جستجو ,یک مجموعه کاراکتر بصورت رشته)int pos = str.find_first_of

 

 

تابع find_first_not_of: این تابع همانند تابع find_first_of عمل کرده با این تفاوت که رشته را به جهت یافتن اولین کاراکتری که داخل یک مجموعه از کاراکتر ها نباشد، مورد جستجو قرار میدهد. در صورت یافته شدن چنین کاراکتری در رشته، موقعیت کاراکتر را در رشته بصورت یک عدد int باز میگرداند و در غیر این صورت مقدار -1 را برمیگرداند.

 

تابع find_last_of و find_last_not_of: این دو تابع دقیقا مشابه دو تابع قبلی عمل میکنند با این تفاوت که همانند تابع rfind رشته را از انتها به ابتدا جهت یافتن آخرین کاراکتر مورد نظر جستجو میکند.

 

 

 

لینک به دیدگاه

برنامه ای که نحوه ی الحاق یک رشته را به رشته ای از نوع string نشان میدهد.

//This program shows concatenation of string object.

#include

#include

 

int main()

{

char S1[ ]="computer";

string S2=S1;

cout

strcpy(S1," science");

S2=S2+S1;

cout

return 0;

}

 

 

//end

لینک به دیدگاه

برنامه ای که نحوه عملکرد تابع strncpy را نشان میدهد:

 

#include

#include

 

int main(){

char str[ ] = "cats are nice usually.";

cout

strncpy(str,"dogs",4);

strncpy(str+9,"mean",4);

cout

return 0 ;

}

 

//end

لینک به دیدگاه

برنامه ای که نحوه عملکرد دو تابع strncmp و _strnicmp (در کامپایلر های بورلند: strnicmp) را نشان میدهد.

#include

#include

 

void main(void)

{

char string1[]="The quick brown dog jumps over the lazy fox";

char string2[]="The QUICK brown fox jumps over the lazy dog";

char tmp[20];

int result;

cout

cout

result = strncmp( string1, string2 , 10 );

if( result > 0 )

strcpy( tmp, "greater than" );

else if( result

strcpy( tmp, "less than" );

else

strcpy( tmp, "equal to" );

cout

cout

result = strnicmp( string1, string2, 10 );

if( result > 0 )

strcpy( tmp, "greater than" );

else if( result

strcpy( tmp, "less than" );

else

strcpy( tmp, "equal to" );

cout

}

 

 

//end

لینک به دیدگاه

پیاده سازی توابع strlen و strchr

 

 

int strlen(const char *s)

{

for(int i=0;s;++i);

return i;

}

char *strchr(const char *s,int c)

{

unsigned i;

for(i=0;i

if(i==strlen(s))

return NULL;

else

return (char *)&s;

}

 

//end

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • اضافه کردن...