تبلیغات
برنامه نویسی C++ - آموزش و سورس برنامه ی سی پلاس پلاس - مطالب ابر تابع
برترین پیشنهاد

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

بزرگترین پایگاه آموزش سی پلاس پلاس و سورس تمام برنامه های آن

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

#include <iostream>
#include <string>
using namespace std;
void main(void)
{
   char ch='r';
   char string[] =
"The quick brown dog jumps over the lazy fox";
   char fmt1[] =
"         1         2         3         4         5";
   char fmt2[] =
"12345678901234567890123456789012345678901234567890";
   char* pdest;
   int result;
   cout<<"String to be searched: \n\t\t"<<string<<"\n";
    cout<<"\t\t"<<fmt1<<"\n\t\t"<<fmt2<<"\n\n";
     cout<<"Search char:\t"<<ch<<"\n";
/* Search forward. */
   pdest=strchr(string, ch);
    result=pdest - string + 1;
     if( pdest != NULL )
       cout<<"Result:\tfirst "<<ch
           <<" found at position "<<result<<"\n\n";
    else
       cout<<"Result:\t"<<ch<<" not found\n";
/* Search backward. */
   pdest=strrchr(string, ch);
    result=pdest - string + 1;
     if( pdest != NULL )
       cout<<"Result:\tfirst "<<ch
           <<" found at position "<<result<<"\n\n";
     else
       cout<<"Result:\t"<<ch<<" not found\n";
}

//end


برنامه ای که کاربرد تابع strlen را نشان میدهد. با اجرای این برنامه عدد 15 به عنوان طول رشته str چاپ میشود:

#include <iostream>
#include <string>
using namespace std ;
int main()
{
    char str [16] = "how long am I ?";
    int len ;
    len = strlen(str) ;
    cout<<str<<" is "<<len<<" characters long\n";
  return 0;
}

//end


پیاده سازی تابع strrchr

int strlen(const char *s)
{
    for(int i=0;s[i];++i);
    return i;
}
char *strrchr(const char *s,int c)
{
    long i;
    for(i=strlen(s)-1;i>=0 && s[i]!=(char)c;i--);
    if(i<0)
        return NULL;
    else
        return (char *)&s[i];
}

//end


پیاده سازی strncpy به دو صورت

صورت اول:

char *strncpy(char *s,const char *t,unsigned n)
{
    for(unsigned i=0;i<n && t[i]!='\0';i++)
        s[i]=t[i];
    for(;i<n;i++)
        s[i]='\0';
    return s;
}

//end

صورت دوم:
char *strncpy(char *s,const char *t,unsigned n)
{
    char *ts=s;
    for(unsigned i=0;i<n && *t!='\0';i++,s++,t++)
        *s=*t;
    for(;i<n;i++,s++)
        *s='\0';
    return ts;
}

//end


پیاده سازی تابع strncat

char *strncat(char *s,const char *t,unsigned n)
{
    const char *p=t;
    unsigned i,j;
    i=j=0;
    while(s[i]!='\0')
        i++;
    while(j<n && (s[i++]=p[j++])!='\0');
    if(p[j-1]!='\0')
        s[i]='\0';
    return s;
}

//end


پیاده سازی strcpy به دو صورت

حالت اول:
char *strcpy(char *s,const char *t)
{
    int i=0;
    while((s[i]=t[i])!='\0')
        i++;
    return s;
}

//end

حالت دوم:
char *strcpy(char *s,const char *t)
{
    char *ts;
    ts=s;
    while((*s=*t)!='\0')
    {
        s++;
        t++;
    }
    return ts;
}

//end


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

int strlen(const char *s)
{
    for(int i=0;s[i];++i);
    return i;
}
char *strchr(const char *s,int c)
{
    unsigned i;
    for(i=0;i<strlen(s) && s[i]!=(char)c;++i);
    if(i==strlen(s))
        return NULL;
    else
        return (char *)&s[i];
}

//end


پیاده سازی تابع strcat

char *strcat(char *s,const char *t)
{
    unsigned i,j;
    i=j=0;
    while(s[i]!='\0')
        i++;
    while((s[i++]=t[j++])!='\0');
    return s;
}

//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 رشته را از انتها به ابتدا جهت یافتن آخرین کاراکتر مورد نظر جستجو میکند.



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

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

gotoxy(int x, int y);
//end

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

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

نبود تابع clrscr و gotoxy در کامپایلر Dev C++ و نحوه تعریف آنها




  • کل صفحات:5  
  • 1
  • 2
  • 3
  • 4
  • 5
  •