سلام ، آیا این بازدید اول شماست ؟ یا
تبلیغات در این انجمن
×
+
سفارش تبلیغات
صفحه 1 از 5 123 ... آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 از مجموع 49

موضوع: مثال هایی از توابع در زبان برنامه نویسی C

  1. #1
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    پیش فرض مثال هایی از توابع در زبان برنامه نویسی C

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

    کتاب پیشنهادی من برای یادگیری این زبان، The C Programming Language نوشته شده توسط خالق این زبان به نام مرحوم بزرگوار Dennis Ritchie و دوست او Brian Wilson Kernighan هست.

    لینک های مفید:


    ویرایش توسط C89 : 12-01-2015 در ساعت 23:42

  2. کاربران : 9 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  3. #2
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    پیش فرض توابع جمع، تفریق، ضرب، تقسیم و باقی مانده تقسیم - اعداد صحیح و اعشاری

    کد:
    #include <stdio.h>
    int jam (int, int);
    int tafrigh (int, int);
    int zarb (int, int);
    int taghsim (int, int);
    int baghimandeh_taghsim (int, int);
    int main ()
    {
       int num1 = 50;
       int num2 = 13;
    
       printf ("%d + %d = %d\n", num1, num2, jam (num1, num2));
    
       printf ("%d - %d = %d\n", num1, num2, tafrigh (num1, num2));
    
       printf ("%d * %d = %d\n", num1, num2, zarb (num1, num2));
    
       printf ("%d / %d = %d\n", num1, num2, taghsim (num1, num2));
    
       printf ("%d %% %d = %d\n", num1, num2, baghimandeh_taghsim (num1, num2));
    
       return 0;
    }
    
    int jam (int x, int y)
    {
       return x + y;
    }
    
    int tafrigh (int x, int y)
    {
       return x - y;
    }
    
    int zarb (int x, int y)
    {
       return x * y;
    }
    
    int taghsim (int x, int y)
    {
       return x / y;
    }
    
    int baghimandeh_taghsim (int x, int y)
    {
       return x % y;
    }
    مشاهده کدها به صورت رنگ بندی شده در وبسایت pastebin.com

    کد:
    #include <stdio.h>
    float jam (float, float);
    float tafrigh (float, float);
    float zarb (float, float);
    float taghsim (float, float);
    int main ()
    {
       float num1 = 50.4;
       float num2 = 13.7;
    
       printf ("%2.1f + %2.1f = %f\n", num1, num2, jam (num1, num2));
    
       printf ("%2.1f - %2.1f = %f\n", num1, num2, tafrigh (num1, num2));
    
       printf ("%2.1f * %2.1f = %f\n", num1, num2, zarb (num1, num2));
    
       printf ("%2.1f / %2.1f = %f\n", num1, num2, taghsim (num1, num2));
    
       return 0;
    }
    
    float jam (float x, float y)
    {
       return x + y;
    }
    
    float tafrigh (float x, float y)
    {
       return x - y;
    }
    
    float zarb (float x, float y)
    {
       return x * y;
    }
    
    float taghsim (float x, float y)
    {
       return x / y;
    }
    مشاهده کدها به صورت رنگ بندی شده در وبسایت pastebin.com

  4. کاربران : 10 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  5. #3
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    پیش فرض تابع تبدیل کننده عدد مثبت به منفی و بلعکس - اعداد صحیح و اعشاری

    کد:
    #include <stdio.h>
    int mbm_v1 (int);
    int mbm_v2 (int);
    int mbm_v3 (int);
    int main ()
    {
       int num1 = 19;
       int num2 = -19;
    
       printf ("%i\n", mbm_v3 (num1));
       printf ("%i\n", mbm_v3 (num2));
    
       printf ("%i\n", mbm_v2 (num1));
       printf ("%i\n", mbm_v2 (num2));
    
       printf ("%i\n", mbm_v1 (num1));
       printf ("%i\n", mbm_v1 (num2));
    
       return 0;
    }
    
    int mbm_v3 (int n)
    {
       return -n;
    }
    
    int mbm_v2 (int n)
    {
       return -1 * n;
    }
    
    int mbm_v1 (int n)
    {
       return n - n * 2;
    }
    مشاهده کدها به صورت رنگ بندی شده در وبسایت pastebin.com

    کد:
    #include <stdio.h>
    float mbm_v1 (float);
    float mbm_v2 (float);
    float mbm_v3 (float);
    int main ()
    {
       float num1 = 19.1;
       float num2 = -19.1;
    
       printf ("%1.1f\n", mbm_v3 (num1));
       printf ("%1.1f\n", mbm_v3 (num2));
    
       printf ("%1.1f\n", mbm_v2 (num1));
       printf ("%1.1f\n", mbm_v2 (num2));
    
       printf ("%1.1f\n", mbm_v1 (num1));
       printf ("%1.1f\n", mbm_v1 (num2));
    
       return 0;
    }
    
    float mbm_v3 (float n)
    {
       return -n;
    }
    
    float mbm_v2 (float n)
    {
       return -1 * n;
    }
    
    float mbm_v1 (float n)
    {
       return n - n * 2;
    }
    مشاهده کدها به صورت رنگ بندی شده در وبسایت pastebin.com

  6. کاربران : 8 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  7. #4
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    پیش فرض بدست آوردن طول رشته توسط تابع strlen

    کد:
    #include <stdio.h>
    
    unsigned long strlen_v1 (char[]);
    unsigned long strlen_v2 (char[]);
    unsigned long strlen_v3 (char[]);
    
    int main ()
    {
       char str[25] = "C Programming Language";
       unsigned long length;
    
       length = strlen_v3 (str);
       printf ("%u\n", length);
    
       printf ("%u\n", strlen_v2 (str));
    
       printf ("%u\n", strlen_v1 (str));
    
       return 0;
    }
    
    unsigned long strlen_v3 (char str[])
    {
        unsigned long i = 0;
        while (str[i] != '\0')
           i++;
        return i;
    }
    
    unsigned long strlen_v2 (char str[])
    {
        unsigned long i;
        for (i = 0; str[i] != '\0'; i++)
           ;
        return i;
    }
    
    unsigned long strlen_v1 (char str[])
    {
        unsigned long i;
        i = 0;
        for (; str[i] != '\0';)
           i++;
        return i;
    }
    ویرایش توسط C89 : 17-01-2015 در ساعت 13:57

  8. کاربران : 8 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  9. #5
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    Question تابع scat (برای چسباندن دو رشته به یکدیگر) و تابع knife1 و knife2 (برای قطع یک رشته)



    کد:
    #include <stdio.h>
    
    void knife_1 (char[], long);
    void knife_2 (char[], long);
    void scat_v1 (char[], char[]);
    void scat_v2 (char[], char[]);
    
    int main ()
    {
       char str1[25] = "C_Programming_Language";
       char str2[25] = "C_Programming_Language";
    
       knife_1 (str1, 13);
       printf ("%s\n", str1);
    
       knife_2 (str2, 13);
       printf ("%s\n", str2);
    
       scat_v2 (str1, str2);
       printf ("%s\n", str1);
    
       return 0;
    }
    
    void knife_1 (char str[], long pos)
    {
       if (pos >= 0)
          str[pos] = '\0';
    }
    
    void knife_2 (char str[], long pos)
    {
       long i;
    
       for (i = 0; str[pos] != '\0' && pos >= 0; i++, pos++)
          str[i] = str[pos];
    
       str[i] = '\0';
    }
    
    void scat_v2 (char str1[], char str2[])
    {
       unsigned long i, j;
       for (i = strlen_v3 (str1), j = 0; (str1[i++] = str2[j++]) != '\0';)
          ;
    }
    
    void scat_v1 (char str1[], char str2[])
    {
       unsigned long i, j;
       i = j = 0;
       while (str1[i] != '\0')
          i++;
       while ((str1[i++] = str2[j++]) != '\0')
          ;
    }

    تمرین: تابع scat و knife2 را از نو به چند شکل متفاوت بنویسید.
    ویرایش توسط C89 : 17-01-2015 در ساعت 14:06

  10. کاربران : 8 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  11. #6
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    پیش فرض تابع getline

    وظیفه این تابع ذخیره کردنِ کاراکترهای خوانده شده توسط تابع getchar در یک متغیر آرایه ای می باشد.

    کد:
    #include <stdio.h>
    
    #define MXSZ 1024
    
    long getline_v1 (char[], long);
    long getline_v2 (char[], long);
    
    int main ()
    {
       char str[MXSZ];
       long length;
    
       length = getline_v1 (str, MXSZ);
       printf ("%s", str);
       printf ("(%ld)\n", length);
    
       length = getline_v2 (str, MXSZ);
       printf ("%s", str);
       printf ("(%ld)", length);
    
       return 0;
    }
    
    long getline_v2 (char str[], long lim)
    {
       if (lim < 2)
          return -1;
    
       long c, i;
    
       for (i = 0; --lim > 0 && (c = getchar ()) != EOF && c != '\n'; str[i++] = c)
          ;
    
       if (c == '\n')
          str[i++] = c;
    
       str[i] = '\0';
    
       return i;
    }
    
    long getline_v1 (char str[], long lim)
    {
       long c, i;
    
       i = 0;
    
       while (--lim > 0 && (c = getchar ()) != EOF && c != '\n')
          str[i++] = c;
    
       if (c == '\n')
          str[i++] = c;
    
       str[i] = '\0';
    
       return i;
    }
    ویرایش توسط C89 : 20-01-2015 در ساعت 19:38 دلیل: به درخواست کاربر

  12. کاربران : 6 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  13. #7
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    پیش فرض نسخه 3، 4 و 5 تابع scat - نسخه 4 و 5 تابع strlen - آرگومانهای اشاره گر

    کد:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void scat_v3 (char*, const char*);
    void scat_v4 (char*, const char*);
    void scat_v5 (char*, const char*);
    unsigned long strlen_v4 (const char*);
    unsigned long strlen_v5 (const char*);
    
    int main ()
    {
       char *str;
    
       str = (char*) malloc (25);
       memset (str, '\0', 25);
    
       scat_v3 (str, "C");
       scat_v4 (str, "_Programming");
       scat_v5 (str, "_Language");
    
       printf ("%s  (%lu)::(%lu)\n", str, strlen_v4 (str), strlen_v5 (str));
    
       free (str);
    
       return 0;
    }
    
    void scat_v5 (char *str1, const char *str2)
    {
       unsigned long i;
    
       for (i = strlen_v5 (str1); (*(str1+i) = *str2++) != '\0'; i++)
          ;
    }
    
    void scat_v4 (char *str1, const char *str2)
    {
       unsigned long i = strlen_v4 (str1);
    
       while ((str1[i++] = *str2++) != '\0')
          ;
    }
    
    void scat_v3 (char *str1, const char *str2)
    {
       unsigned long i = strlen_v4 (str1);
    
       while ((str1[i] = *str2) != '\0')
       {
          i++;
          str2++;
       }
    }
    
    unsigned long strlen_v4 (const char *str)
    {
       unsigned long i;
    
       for (i = 0; *str != '\0'; str++)
          i++;
    
       return i;
    }
    
    unsigned long strlen_v5 (const char *str)
    {
       unsigned long i;
    
       for (i = 0; *str++ != '\0'; i++)
          ;
    
       return i;
    }
    ویرایش توسط C89 : 17-01-2015 در ساعت 14:18

  14. کاربران : 7 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  15. #8
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    پیش فرض تابع delete_c برای حذفِ n-مین کاراکتر از رشته ای از کاراکترها

    کد:
    #include <stdio.h>
    
    void delete_c_v1 (char[], unsigned long);
    void delete_c_v2 (char[], unsigned long);
    void delete_c_po_v1 (char*, unsigned long);
    void delete_c_po_v2 (char*, unsigned long);
    void delete_c_po_v3 (char*, unsigned long);
    
    int main ()
    {
       char str[25] = "C_Programming_Language";
    
       printf ("%s\n", str);
    
       delete_c_v1 (str, 1);
       printf ("%s\n", str);
    
       delete_c_v2 (str, 12);
       printf ("%s\n", str);
    
       delete_c_po_v1 (str, 0);
       printf ("%s\n", str);
    
       delete_c_po_v2 (str, 10);
       printf ("%s\n", str);
    
       delete_c_po_v3 (str, 10);
       printf ("%s\n", str);
    
       return 0;
    }
    
    void delete_c_v1 (char str[], unsigned long pos)
    {
       for (; str[pos] != '\0'; pos++)
          str[pos] = str[pos+1];
    }
    
    void delete_c_v2 (char str[], unsigned long pos)
    {
       while ((str[pos] = str[pos+1]) != '\0')
          pos++;
    }
    
    void delete_c_po_v1 (char *str, unsigned long pos)
    {
       while ((*(str+pos) = *(str+pos+1)) != '\0')
          pos++;
    }
    
    void delete_c_po_v2 (char *str, unsigned long pos)
    {
       while ((str[pos] = *(str+pos+1)) != '\0')
          pos++;
    }
    
    void delete_c_po_v3 (char *str, unsigned long pos)
    {
       while (str[pos] = str[pos+1])
          pos++;
    }
    ویرایش توسط C89 : 21-01-2015 در ساعت 03:36

  16. کاربران : 8 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  17. #9
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    Lightbulb تمرین

    • نسخه ای از تابع delete_c را بنویسید که صفرُمین و آخرین کاراکتر از یک رشته را حذف کند.


    کد:
    /* Function Prototype */
    void delete_c (char[]);


    • تابعی بنویسید به نام sncat که n کاراکتر اول از رشته str2 را به رشته str1 بچسباند/اضافه کند.


    کد:
    /* Function Prototype */
    void sncat (char str1[], const char str2[], long n);


    • تابعی بنویسید به نام ilen که تعداد ارقام عدد صحیح مثبت یا منفیِ وارده را به دست آورده و برگشت دهد. (return کند)


    کد:
    /* Function Prototype */
    long ilen (long);
    ویرایش توسط C89 : 18-01-2015 در ساعت 19:51

  18. کاربران : 7 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  19. #10
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    پیش فرض تابع strcpy (رشته str2 را به str1 کپی می کند)

    کد:
    #include <stdio.h>
    #include <stdlib.h>
    
    void strcpy_v1 (char[], const char[]);
    void strcpy_v2 (char[], const char[]);
    void strcpy_v3 (char*, const char*);
    void strcpy_v4 (char*, const char*);
    void strcpy_v5 (char*, const char*);
    char *strcpy_v6 (char*, const char*);
    
    int main ()
    {
       char *str;
       str = (char*) malloc (25);
    
       strcpy_v1 (str, "C Programming Language");
       printf ("%s\n", str);
    
       strcpy_v2 (str, "C Programming Language");
       printf ("%s\n", str);
    
       strcpy_v3 (str, "C Programming Language");
       printf ("%s\n", str);
    
       strcpy_v4 (str, "C Programming Language");
       printf ("%s\n", str);
    
       strcpy_v5 (str, "C Programming Language");
       printf ("%s\n", str);
    
       /* Unlike the others, strcpy_v6 can be used inside printf function
       because it return a pointer to the resulting string str1 */
       printf ("%s\n", strcpy_v6 (str, "C Programming Language"));
    
       free (str);
    
       return 0;
    }
    
    char *strcpy_v6 (char *str1, const char *str2)
    {
       char *str1_ptr;
    
       str1_ptr = str1;
    
       while (*str1++ = *str2++)
          ;
    
       return (str1_ptr);
    }
    
    void strcpy_v5 (char *str1, const char *str2)
    {
       while ((*str1++ = *str2++) != '\0')
          ;
    }
    
    void strcpy_v4 (char *str1, const char *str2)
    {
       while ((*str1 = *str2) != '\0')
          str1++, str2++;
    }
    
    void strcpy_v3 (char *str1, const char *str2)
    {
       unsigned long i;
    
       for (i = 0; (str1[i] = str2[i]) != '\0'; i++)
          ;
    }
    
    void strcpy_v2 (char str1[], const char str2[])
    {
       unsigned long i = 0;
    
       while ((str1[i] = str2[i++]) != '\0')
          ;
    }
    
    void strcpy_v1 (char str1[], const char str2[])
    {
       unsigned long i;
    
       for (i = 0; (str1[i] = str2[i]) != '\0'; i++)
          ;
    }
    ویرایش توسط C89 : 17-01-2015 در ساعت 14:27

  20. کاربران : 5 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


صفحه 1 از 5 123 ... آخرینآخرین

اطلاعات تاپیک

Users Browsing this Thread

در حال حاضر 1 در حال مشاهده این موضوع می باشد.. (0 کاربر و 1 مهمان در این انجمن حضور دارند)

موضوعات مشابه

  1. پاسخ ها: 2
    آخرين ارسال: 05-05-2017, 21:22
  2. راهنمایی در مورد ویروسی بودن یا نبودن فایلها وکرکها
    توسط Microtel در انجمن مباحث عمومی امنیت
    پاسخ ها: 4
    آخرين ارسال: 11-10-2013, 16:26
  3. سه بعدی دیدن فیلم هایی که سه بعدی نیستند در ایران !
    توسط paye2 در انجمن مباحث عمومی ویدئو
    پاسخ ها: 3
    آخرين ارسال: 01-10-2013, 14:30
  4. یه سوال درباره دامنه! - راهنمایی کنید
    توسط javadmo در انجمن سایر مباحث عمومی اینترنت
    پاسخ ها: 15
    آخرين ارسال: 28-09-2013, 21:13
  5. پاسخ ها: 0
    آخرين ارسال: 09-09-2011, 23:49

برچسب برای این موضوع

بوک مارک ها

بوک مارک ها

مجوزهای ارسال و ویرایش

  • شما نمی توانید موضوع جدید ارسال کنید
  • شما نمی توانید به پست ها پاسخ دهید
  • شما نمی توانید فایل پیوست ضمیمه کنید
  • شما نمی توانید پست های خود را ویرایش کنید
  •