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

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

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

    پیش فرض تابع delete_str





    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for EXIT_SUCCESS free () malloc () */
    
    #define MXSZ 1024
    
    long delete_str (char[], const long, const char[]);
    
    int main ()
    {
       char *str;
    
       str = (char*) malloc (MXSZ);
       fillitoff (str, '\0', MXSZ);
    
       strcpy_v7 (str, ",,,I-have-made-a-lot-of-mistakes-but-i-am-still-alive...");
    
       printf ("Original string: ( %s )\n", str);
       printf ("Length of original string ( %i )\n", strlen_v7 (str, 0));
       printf ("Number of deleted characters: ( %i )\n", delete_str (str, 0, ".,"));
       printf ("Current string: ( %s )\n", str);
       printf ("Length of current string: ( %i )\n", strlen_v7 (str, 0));
    
       free (str);
    
       return (EXIT_SUCCESS);
    }
    
    long delete_str (char str[], const long pos, const char ex[])
    {
       if (pos < 0 || strlen_v7 (str, 0) <= pos)
          return (-1);
    
       long i, nc;
    
       for (nc = 0, i = pos; str[i]; ++i)
       {
          if (lookfor_c_v3 (ex, str[i]) == 0)
          {
             delete_c (str, i, 1);
             --i, ++nc;
          }
       }
    
       return (nc);
    }
    ویرایش توسط C89 : 19-01-2015 در ساعت 21:37

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


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

    پیش فرض نسخه 9 تابع scat

    • به وسیله این تابع می توانستید رشته str2 را به «آخرِ» رشته str1 نیز بچسبانید. مثال: str1 = 012 | str2 = 345 | نتیجه: str1 = 012345. در این نسخه نه تنها عمل قبلی را می توانید انجام دهید، بلکه بیشتر; با وارد کردن کاراکتر L یا l به متغیر side، تابع scat رشته str2 را به «اولِ» رشته str1 می چسباند. L به معنای Left (چپ) است و R به معنای (راست) است. البته اینکار بدون کمک گرفتن از تابع pushf امکان پذیر نیست. pushf به تعداد کاراکترهای داخل str2، در str1 مکان باز می کند; اینکار با طول-رشته-str2-مرتبههُل دادنِ رشته str1 به جلو صورت می گیرد.






    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for malloc() free() EXIT_SUCCESS */
    
    #define MXSZ 1024
    
    char *scat_v9 (char*, const int, const char*, const int, int);
    char *pushf (char[], int, int, int);
    
    int main ()
    {
       char *str;
    
       str = (char*) malloc (MXSZ);
       fillitoff (str, '\0', MXSZ);
    
       printf ("%s\n", scat_v9 (strcpy_v7 (str, "345"), MXSZ, "012", MXSZ, 'L'));
       printf ("%s\n", scat_v9 (str, MXSZ, "678", MXSZ, 'r'));
       printf ("%s\n", scat_v9 (str, MXSZ, "9", MXSZ, 'R'));
    
       free (str);
    
       return (EXIT_SUCCESS);
    }
    
    char *scat_v9 (char *str1, const int max_size1, const char *str2, const int max_size2, int side)
    {
       if (max_size1 < 2
          || max_size2 < 2
          || strlen_v7 (str1, 0) > max_size1-1
          || strlen_v7 (str2, 0) > max_size2-1
          || strlen_v7 (str1, 0) + strlen_v7 (str2, 0) > max_size1-1)
             return (NULL);
    
       char *str_ptr = str1;
    
       switch (low2up_c (side))
       {
          case 'R' :
             while (*str1)
                ++str1;
             while (*str1++ = *str2++)
                ;
             break;
    
          case 'L' :
             pushf (str1, 0, strlen_v7 (str2, 0), max_size1);
             while (*str2)
                *str1++ = *str2++;
             break;
    
          default :
             return (NULL);
       }
    
       return (str_ptr);
    }
    ویرایش توسط C89 : 17-01-2015 در ساعت 16:51

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


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

    پیش فرض تابع Engword_counter و is_alpha

    • Engword_counter تعداد «کلمات انگلیسی» داخل یک جمله را شمرده و برگشت می دهد.
    • is_alpha وظیفه تشخیص حرف بزرگ و کوچک انگلیسی را بر عهده دارد. (AZ az)
    • رجوع به تابع fillitoff و strcpy_v7



    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for EXIT_SUCCESS free () malloc () */
    
    #define MXSZ 1024
    
    unsigned long Engword_counter (const char[]);
    int is_alpha (const int);
    
    int main ()
    {
       char *str;
    
       str = (char*) malloc (MXSZ);
       fillitoff (str, '\0', MXSZ);
    
       puts (strcpy_v7 (str, "''' I just don't want to do that anymore - that's all... '''"));
    
       printf ("Number of English words: (%lu)\n", Engword_counter (str));
    
       free (str);
    
       return (EXIT_SUCCESS);
    }
    
    unsigned long Engword_counter (const char str[])
    {
       unsigned long i, nword, signal;
    
       for (signal = nword = i = 0; str[i]; ++i)
       {
          if (!is_alpha (str[i]))
             signal = 0;
          else if (signal == 0)
          {
             if (str[i-1] == '\'' && is_alpha (str[i-2]))
                ;
             else
                signal = 1, ++nword;
          }
       }
    
       return (nword);
    }
    
    int is_alpha (const int c)
    {
        if (c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z')
           return (c);
        else
           return (0);
    }
    ویرایش توسط C89 : 17-01-2015 در ساعت 17:11

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


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

    Lightbulb تمرین

    • نسخه ای دیگر از تابع Engword_counter بنویسید که فقط تعداد کلمات انگلیسی که با حرف دلخواه شما شروع می شوند را بشمارد. مثال: کلماتی که با حرف 'A' یا 'a' شروع می شوند.

    کد:
    /* Function Prototype */
    unsigned long Engword_counter (const char[], const int);

    • تابعی بنویسید که اعداد صحیح را به رشته ای از کاراکترها تبدیل کند. مثال: 2015 و 2015- که از نوع int یا long می باشند را به عنوان یک رشته از نوع char برگشت دهد. دقت کنید که اگر عدد منفی است، لازم است یک علامت منفی (-) کنار رشته نهایی (در صفرمین خانه) قرار داشته باشد.

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

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


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

    پیش فرض تابع OddEvenASCIINumberCounter

    • این تابع تعداد کدهای/اعداد ASCII زوج یا فرد درون رشته str را برگشت می دهد. مثال: کد اَسکی کاراکتر 'A' عدد 65 می باشد، که باقی مانده تقصیم صحیح این عدد بر 2، 1 می شود. بنابراین این کد اَسکی فرد است. با اختصاص دادن کاراکتر 'o' یا 'O' به دومین آرگومان این تابع (type)، به تابع درخواست شمردن اعداد اَسکی فرد را می دهید. 'e' یا 'E' به معنی زوج است. (Even - Odd)
    • رجوع به تابع fillitoff و strcpy_v7
    • رجوع به تابع low2up_c و is_lower



    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for EXIT_SUCCESS free () malloc () */
    
    #define MXSZ 1024
    
    long OddEvenASCIINumberCounter (const char*, int);
    int low2up_c (int);
    int is_lower (const int);
    
    int main ()
    {
       char *buff, *temp;
    
       buff = (char*) malloc (MXSZ);
       fillitoff (buff, '\0', MXSZ);
    
       strcpy_v7 (buff, "ABCdef012_(*");
    
       printf ("ASCII Numbers:\n");
    
       for (temp = buff; *temp; temp++)
          printf ("   '%c' = %i\n", *temp, *temp);
    
       printf ("\nNumber of Odd ASCII numbers: (%li)\n", OddEvenASCIINumberCounter (buff, 'O'));
       printf ("Number of Even ASCII numbers: (%ld)\n", OddEvenASCIINumberCounter (buff, 'E'));
    
       free (buff);
    
       return (EXIT_SUCCESS);
    }
    
    long OddEvenASCIINumberCounter (const char *str, int type)
    {
       long nc, remainder;
    
       switch (low2up_c (type))
       {
          case 'O' :
             remainder = 1;
             break;
    
          case 'E' :
             remainder = 0;
             break;
    
          default :
             return (-1);
       }
    
       for (nc = 0; *str; ++str)
          if (*str % 2 == remainder)
             ++nc;
    
       return (nc);
    }

    ویرایش توسط C89 : 17-01-2015 در ساعت 17:18

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


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

    Lightbulb تمرین

    • تابعی بنویسید که دارای دو آرگومان به نام های str1 و str2 بوده و تعداد کاراکترهایی که درون هر دو رشته یافت می شوند را برگشت دهد.
    • تابعی بنویسید که دارای دو آرگومان به نام های str1 و str2 بوده وتعداد کاراکترهایی که درون رشته str2 یافت می شوند اما در str1 یافت نمی شوند را برگشت دهد.





    • تابعی بنویسید که تعداد ارقام یک عدد مثبت یا منفی اعشاری را حساب کند و برگشت دهد.

    کد:
    /* Function Prototype */
    unsigned int flen (float);

    دقت کنید که هر کاراکترِ منطبق در تابع اول، و هر کاراکترِ غیر منطبق در تابع دوم تنها یک بار حساب شود:
    مثالی برای اولین تابع: str1 = ABCD | str2 = CABDeD (در اینجا D در str2 یک بار تکرار شده است، اما باید یک بار حساب شود. نتیجه 4 کاراکتر منطبق است: CABD
    مثالی برای دومین تابع: str1 = ABCD | str2 = CABdd (در اینجا d در str2 یک بار تکرار شده است، اما باید یک بار حساب شود. نتیجه 1 کاراکتر غیر منطبق است: d
    ویرایش توسط C89 : 18-01-2015 در ساعت 19:50

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


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

    پیش فرض تابع print



    کد:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #define MXSZ 1024
    #define MAX_ROUND_32BIT 4000000000LL
    #define SUB -
    #define BLANK ' '
    #define _NULL_ '\0'
    #define STR "Tomorrow Robots teach us."
    
    typedef char OptionalDataTypeName;
    
    long print (char*, const clock_t);
    
    int main ()
    {
       clock_t ms; /* ms stands for millisecond ::: clock_t is a long-integer data type */
    
       OptionalDataTypeName *str; /* OptionalDataTypeName is a char (small-integer) data type */
    
       str = (OptionalDataTypeName*) malloc (MXSZ);
       fillitoff (str, _NULL_, MXSZ);
    
       strcpy_v7 (str, "Yes!");
    
       for (ms = 100; ms > 0; ms = ms SUB 2)
       {
          print (str, ms);
          putchar (BLANK);
       }
    
       free (str);
    
       return (EXIT_SUCCESS);
    }
    
    long print (char *str, const clock_t ms)
    {
       if (ms < 1)
          return (-1);
    
       clock_t start, tmp_ms, lst_tmp_ms;
       char *str_ptr = str;
    
       start = clock ();
    
       for (lst_tmp_ms = 0; *str;)
       {
          if ((tmp_ms = clock () - start) - lst_tmp_ms >= ms)
             putchar (*str++), lst_tmp_ms = tmp_ms;
       }
    
       return (strlen_v7 (str_ptr, 0));
    }
    ویرایش توسط C89 : 17-01-2015 در ساعت 17:35

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


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

    پیش فرض تابع replace_d

    • این تابع عدد d را جایگزین pos-مین رقم از عدد num می کند.
    • در ساخت این تابع از تابع ilen (که خود مسئول ساخت آن در این چالش بودید) استفاده شده است. تابع ilen وظیفه محاسبه تعداد ارقام یک عدد صحیح مثبت یا منفی را دارد.

    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for EXIT_SUCCESS */
    
    long replace_d (long, const int, const int);
    
    int main ()
    {
       int num;
    
       num = -2020;
    
       printf ("%ld\n", replace_d (num, 3, 3));
    
       return (EXIT_SUCCESS);
    }
    
    long replace_d (long num, const int pos, const int d)
    {
       if (pos < 1 || ilen (num) < pos || d < 0 || d > 9)
          return (num);
    
       int new_num, pow, len, sign;
    
       (num < 0) ? (num = -1 * num, sign = -1) : (sign = 1);
    
       for (len = ilen (num), pow = 1; len > pos; len = len - 1)
          pow = pow * 10;
    
       new_num = num - (num / pow * pow) + (d * pow);
    
       return sign * (ilen (num) == ilen (new_num) ? (new_num) : (new_num + num / (pow = 10 * pow) * pow));
    }
    ویرایش توسط C89 : 17-01-2015 در ساعت 21:33

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


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

    Lightbulb تمرین

    • تابعی بنویسید که pos-مین رقم از عدد صحیح مثبت یا منفی num را حذف کند و عدد جدید را برگشت دهد.

    کد:
    /* Function Prototype */
    long delete_d (long num, int pos);

    • تابعی بنویسید که به جست و جوی اُلگویی خاص، در رشته ای از کاراکترها بپردازد. برای مثال، الگوی داده شده "ould" می باشد، که قرار است توسط این تابع در رشته "I could do that myself" نیز جست و جو شود. در این رشته کلمه could با اُلگوی داده شده مطابقت دارد: could = ould. بنابراین مقدار برگشتی تابع باید موقعیت یا خانه ای باشد که رشته ould از آن شروع می شود. (رشته ould از سومین خانه شروع می شود). در صورت پیدا نشدن ptr (اُلگو) در str (تک کاراکتر یا رشته ای از کاراکترها)، مقدار 1- نیز باید برگشت داده می شود.

    کد:
    /* Function Prototype */
    long strindex (const char *str, const char *ptr);
    یا
    long strindex (const char str[], const char ptr[]);
    ویرایش توسط C89 : 17-01-2015 در ساعت 18:24

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


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

    پیش فرض تابع token_finder



    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for EXIT_SUCCESS free () malloc ()*/
    
    #define MXSZ 1024
    
    unsigned long token_finder (const char[], const char[]);
    
    int main ()
    {
       char *str;
    
       str = (char*) malloc (MXSZ);
       fillitoff (str, '\0', MXSZ);
    
       strcpy_v7 (str, "I think it's time to think of how to make things think of how to think!");
       printf ("%lu\n", token_finder (str, "th"));
    
       strcpy_v7 (str, "1111011010110110110010110110111111111011101100011011011010101011011111001111101101010111111110101111");
       printf ("%lu\n", token_finder (str, "101"));
    
       free (str);
    
       return (EXIT_SUCCESS);
    }
    
    unsigned long token_finder (const char str[], const char token[])
    {
       if (strlen (token) < 1)
          return (0);
    
       unsigned long i, j, k, token_found;
    
       for (token_found = i = 0; str[i]; ++i)
       {
          for (j = i, k = 0; token[k] && str[j] == token[k]; ++k, ++j)
             ;
    
          if (token[k] == '\0')
             ++token_found;
       }
    
       return (token_found);
    }
    ویرایش توسط C89 : 24-01-2015 در ساعت 02:24

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


صفحه 4 از 5 اولیناولین ... 2345 آخرینآخرین

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

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

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

بوک مارک ها

بوک مارک ها

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

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