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

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

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

    پیش فرض تابع CharToInt


    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for EXIT_SUCCESS free () malloc () */
    
    #define MXSZ 1024
    
    long CharToInt (char*);
    
    int main ()
    {
       char *str;
    
       str = (char*) malloc (MXSZ);
       fillitoff (str, '\0', MXSZ);
    
       printf ("%li\n", CharToInt (strcpy_v7 (str, "-2030")));
       printf ("%ld\n", CharToInt (strcpy_v7 (str, "2030")));
       printf ("%ld\n", CharToInt (strcpy_v7 (str, "oia-)  2k 0 (30")));
       printf ("%li\n", CharToInt (strcpy_v7 (str, "oia)  2k 0 (-30")));
    
       free (str);
    
       return (EXIT_SUCCESS);
    }
    
    long CharToInt (char *str)
    {
       long sign, num;
    
       delete_str (str, 0, "0123456789-");
    
       sign = (str[0] == '-') ? (-1) : (1);
    
       if (lookfor_c_v3 (str, '-') == 1)
          delete_all_c (str, '-');
    
       for (num = 0; *str; ++str)
          num = 10 * num + (*str - '0');
    
       return (sign * num);
    }
    ویرایش توسط C89 : 21-01-2015 در ساعت 02:53

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


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

    پیش فرض تابع timer

    • تابع زمان سنج



    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for EXIT_SUCCESS */
    #include <time.h> /* for CLOCKS_PER_SEC clock_t clock () */
    
    int timer (long, long, long);
    
    int main ()
    {
       long x, y, sum;
    
       for (sum = 0, x = -3; x < 7; ++x)
       {
          y = timer (0, 0, x);
    
          if (y == 0)
             printf ("...took %i sec...\n", x);
          else
          {
             printf ("Error occurred ( returned %i )\n", y);
             continue;
          }
    
          sum += x;
       }
    
       printf ("\n...took %i sec totally.\n", sum);
    
       return (EXIT_SUCCESS);
    }
    
    int timer (long hour, long minute, long second)
    {
       if (hour < 0 || minute < 0 || second < 0)
          return (-1);
    
       long interval = 0, temp;
       clock_t start = clock ();
    
       if ((temp = second / 60) > 0)
          minute += temp, second -= temp * 60;
    
       if ((temp = minute / 60) > 0)
          hour += temp, minute -= temp * 60;
    
       while (1)
       {
          if (((clock () - start) / CLOCKS_PER_SEC) >= interval)
          {
             ++interval;
             if (--second < 0)
             {
                if (--minute < 0)
                {
                   if (--hour < 0)
                      break;
                   minute = 59;
                }
                second = 59;
             }
          }
       }
    
       return (0);
    }
    ویرایش توسط C89 : 18-01-2015 در ساعت 16:10

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


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

    Lightbulb تمرین

    • با توجه به تابع replace_c که وظیفه جایگزین کردن کاراکتر pre_c با کاراکتر new_c در رشته str را دارد، تابعی به نام replace_str بنویسید که رشته ای جدید (new_str) را جایگزین رشته ای (pre_str) دیگر در رشته str کند. مقدار برگشتی تابع باید تعداد دفعات پیدا شدن رشته pre_str در رشته str، و جایگزین شدنش با رشته new_str باشد.

    کد:
    /* Function Prototype */
    unsigned long replace_str (char *str, char *pre_str, char *new_str);
    یا
    unsigned long replace_str (char str[], char pre_str[], char new_str[]);

    • تابعی به نام reverse_f بنویسید که مقلوب اعداد اعشاری مثبت و منفی را به دست آورد و برگشت دهد (مثال: 112.345 543.211 و 112.345- 543.211-). توجه کنید که تابع مذکور باید دارای حداکثر یک آرگومان از نوع float یا double (عدد اعشاری) باشد:

    کد:
    /* Function Prototype */
    float reverse_f (float);

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

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


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

    پیش فرض تابع sortbystr





    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for EXIT_SUCCESS free () malloc () */
    
    #define MXSZ 1024
    #define STR "   " /* String of blanks */
    
    long sortbystr (const long, char[], long, const char[]);
    
    int main ()
    {
       int x;
       char *buff;
    
       buff = (char*) malloc (MXSZ);
    
       fillitoff (buff, '\0', MXSZ);
    
       strcpy_v7 (buff, "11111111111");
    
       x = sortbystr (MXSZ, buff, 1, "0");
       printf ("%s (%ld)\n", buff, x);
    
       fillitoff (buff, '\0', MXSZ);
    
       strcpy_v7 (buff, "Programming");
    
       x = sortbystr (MXSZ, buff, 1, STR);
       printf ("%s (%ld)\n", buff, x);
    
    
       free (buff);
    
       return (EXIT_SUCCESS);
    }
    
    long sortbystr (const long max_size, char str[], long pos, const char src[])
    {
       if (max_size < 3
          || strlen_v7 (str, 0) <= pos
          || strlen_v7 (src, 0) < 1
          || (strlen_v7 (str, 0) - pos) * strlen_v7 (src, 0) + strlen_v7 (str, 0) > max_size-1
          || pos < 0)
             return (-1);
    
       long i, n;
    
       for (n = 0; str[pos]; ++pos, ++n)
       {
          for (i = 0; src[i]; ++i)
          {
             pushf (max_size, str, pos, 1);
             str[pos++] = src[i];
          }
       }
    
       return (n);
    }

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


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

    پیش فرض تابع strcmpr

    • این تابع رشته str1 را با رشته str2 از لحاظ طول و هم از لحاظ عناصر تشکیل دهنده آنها نیز مقایسه می کند. اگر برابر بودند، (مثال: Love = Love) سپس عدد 1 نیز برگشت داده می شود. در غیر این صورت 0 برگشت داده می شود. در صورت وقوع خطا، عدد 1- نیز برگشت داده می شود.
    • رجوع به تابع fillitoff و strcpy_v7
    • رجوع به تابع strlen_v7



    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for EXIT_SUCCESS free () malloc () */
    
    /* Defining Macros */
    #define MXSZ 32*32
    #define SUCF "Equal"
    #define UNSUCF "Unequal"
    
    /* Declaring External variables */
    int value[MXSZ];
    static unsigned int pos = 0;
    
    /* Declaring Functions */
    unsigned int strcmpr (char*, char*);
    unsigned int get_value (int);
    int pmsg (int);
    
    int main ()
    {
       unsigned int i;
       int sucsig = 1;
       int unsucsig = -1;
    
       /* Declaring variables of type char, and Allocating memory for them at the same time */
       char *str1 = malloc (MXSZ);
       char *str2 = malloc (MXSZ);
       char *str3 = malloc (MXSZ);
       char *str4 = malloc (MXSZ);
    
       fillitoff (str1, '\0', MXSZ);
       fillitoff (str2, '\0', MXSZ);
       fillitoff (str3, '\0', MXSZ);
       fillitoff (str4, '\0', MXSZ);
    
       strcpy_v7 (str1, "11000100100100010101101010101110100001001010111010100010101010101010111");
       strcpy_v7 (str2, "11000100100100010101111010101100100001001010111010100010101010101010111");
       strcpy_v7 (str3, "11000100100100010101101010101110100001001010111010100010101010101010111");
       strcpy_v7 (str4, "11000100100100010101101010101110100000100101011101010001010101010101011");
    
       get_value ((strcmpr (str1, str2) == 1) ? (sucsig) : (unsucsig));
       sucsig += 1, unsucsig += -1;
    
       get_value ((strcmpr (str1, str3) == 1) ? (sucsig) : (unsucsig));
       sucsig += 1, unsucsig += -1;
    
       get_value ((strcmpr (str1, str4) == 1) ? (sucsig) : (unsucsig));
       sucsig += 1, unsucsig += -1;
    
       get_value ((strcmpr (str2, str3) == 1) ? (sucsig) : (unsucsig));
       sucsig += 1, unsucsig += -1;
    
       get_value ((strcmpr (str2, str4) == 1) ? (sucsig) : (unsucsig));
       sucsig += 1, unsucsig += -1;
    
       get_value ((strcmpr (str3, str4) == 1) ? (sucsig) : (unsucsig));
       sucsig += 1, unsucsig += -1;
    
       for (i = 0; i < pos; ++i)
          printf ("%dth/nd check\n\n", pmsg (value[i]));
    
       free (str1);
       free (str2);
       free (str3);
       free (str4);
    
       return (EXIT_SUCCESS);
    }
    
    /* Defining Functions */
    unsigned int strcmpr (char *str1, char *str2)
    {
       while (*str1)
          if (*str1++ != *str2++)
             return (0);
    
       return (strlen_v7 (str1, 0) == strlen_v7 (str2, 0) ? (1) : (0));
    }
    
    int pmsg (int val)
    {
       if (val > 0)
          puts (SUCF);
       else if (val < 0)
          puts (UNSUCF);
    
       return (val);
    }
    
    unsigned int get_value (int val)
    {
       value[pos++] = val;
    
       return ((val != 0) ? (1) : (0));
    }


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


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

    پیش فرض تابع strncmpr



    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for EXIT_SUCCESS free () malloc () */
    
    #define MXSZ (1024)
    
    int strncmpr (char*, char*, long);
    
    int main ()
    {
       unsigned int i;
    
       char *str1 = malloc (MXSZ);
       char *str2 = malloc (MXSZ);
    
       fillitoff (str1, '\0', MXSZ);
       fillitoff (str2, '\0', MXSZ);
    
       strcpy_v7 (str1, "110110001000111");
       strcpy_v7 (str2, "110110011000111");
    
       for (i = 0; i <= strlen_v7 (str1, 0); ++i)
       {
          switch (strncmpr (str1, str2, i))
          {
             case 1 :
                puts ("Equal");
                break;
    
             case 0 :
                puts ("Unequal");
                break;
    
             default :
                puts ("Error");
                break;
          }
       }
    
       free (str1);
       free (str2);
    
       return (EXIT_SUCCESS);
    }
    
    int strncmpr (char *str1, char *str2, long n)
    {
       if (n < 1 || strlen_v7 (str1, 0) < n || strlen_v7 (str2, 0) < n)
          return (-1);
    
       for (; *str1 && n > 0; --n)
          if (*str1++ != *str2++)
             return (0);
    
      return (strlen_v7 (str1, 0) == strlen_v7 (str2, 0) ? (1) : (0));
    }
    ویرایش توسط C89 : 23-01-2015 در ساعت 00:06

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


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

    پیش فرض تابع RomToDec



    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for EXIT_SUCCESS free () malloc () */
    
    #define MXSZ (1024)
    
    unsigned long RomToDec (char[]);
    
    int main ()
    {
       char *str = malloc (MXSZ);
    
       fillitoff (str, '\0', MXSZ);
    
       strcpy_v7 (str, "MMXXX");
    
       printf ("%lu\n", RomToDec (str));
    
       free (str);
    
       return (EXIT_SUCCESS);
    }
    
    unsigned long RomToDec (char rom[])
    {
       unsigned long i, j, dec, val[2];
    
       delete_str (low2up_str (rom), 0, "IVXLCDM");
    
       for (dec = i = 0; rom[i]; ++i)
       {
          for (val[0] = val[1] = j = 0; rom[j] && j <= 1; ++j)
             switch (rom[i+j])
             {
                case 'I' :
                   val[j] = 1;
                   break;
                case 'V' :
                   val[j] = 5;
                   break;
                case 'X' :
                   val[j] = 10;
                   break;
                case 'L' :
                   val[j] = 50;
                   break;
                case 'C' :
                   val[j] = 100;
                   break;
                case 'D' :
                   val[j] = 500;
                   break;
                case 'M' :
                   val[j] = 1000;
                   break;
             }
    
          (val[0] < val[1]) ? (dec += (val[1] - val[0]), ++i) : (dec += val[0]);
       }
    
       return (dec);
    }

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


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

    پیش فرض تابع getline_v5، تابع student_info، تابع is_space و تابع is_symbol

    • وظیفه تابع getline ذخیره کردنِ کاراکترهای خوانده شده توسط تابع getchar در یک متغیر آرایه ای می باشد. این نسخه با توجه به src ورودی را دریافت می کند. A به معنی کاراکترهای حروفی - D به معنی کاراکترهای عددی - S به معنی کاراکترهای نمادین (محدود به 32 عدد) و W به معنی کاراکترهای فضای سپید می باشد. بنابراین، اگر src حاوی "AD" باشد، getline فقط کاراکترهای حروفی و عددی را وارد line می کند و از انواع خواسته نشده نیز عبور می کند.
    • تابع student_info نیز به کمک تابع getline مشخصات یک دانش آموز را می گیرد.
    • تابع is_space وظیفه تشخیص کاراکترهای فضای سپید را بر عهده دارد. (مثل space و tab که قابل مشاهده نیستند)
    • تابع is_symbol وظیفه تشخیص 32 کاراکتر نمادین عمومی را برعهده دارد. ( _ ) ( % ^ . , / )
    • تابع is_alpha وظیفه تشخیص حرف بزرگ و کوچک انگلیسی را بر عهده دارد. ( ABC abc)
    • رجوع به تابع fillitoff
    • رجوع به تابع strlen_v7
    • رجوع به تابع lookfor_c_v3
    • رجوع به تابع strfrc_c
    • رجوع به تابع strfrc_s
    • رجوع به تابع is_digit






    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for EXIT_SUCCESS */
    
    #define MXSZ (256)
    
    struct student
    {
        char gender[MXSZ];
        char last_name[MXSZ];
        char first_name[MXSZ];
        char age[MXSZ];
        char number[MXSZ];
        char score[MXSZ];
    };
    
    struct student record;
    
    int is_alpha (int);
    int is_space (int);
    int is_symbol (int);
    void student_info (void);
    long getline_v5 (char*, long, char*);
    
    int main ()
    {
        fillitoff (record.last_name, '\0', MXSZ);
        fillitoff (record.first_name, '\0', MXSZ);
        fillitoff (record.gender, '\0', MXSZ);
        fillitoff (record.age, '\0', MXSZ);
        fillitoff (record.number, '\0', MXSZ);
    
        student_info ();
    
        printf ("\nLast name: %s\n", record.last_name);
        printf ("First name: %s\n", record.first_name);
        printf ("Gender: %s\n", record.gender);
        printf ("Age: %s\n", record.age);
        printf ("Number: %s\n", record.number);
        printf ("Score: %s\n", record.score);
    
        return (EXIT_SUCCESS);
    }
    
    void student_info (void)
    {
       printf ("Last name: ");
       getline_v5 (record.last_name, MXSZ, "A");
    
       printf ("First name: ");
       getline_v5 (record.first_name, MXSZ, "A");
    
       printf ("Gender: ");
       getline_v5 (record.gender, MXSZ, "A");
    
       printf ("Age: ");
       getline_v5 (record.age, MXSZ, "D");
    
       printf ("Number: ");
       getline_v5 (record.number, MXSZ, "D");
    
       printf ("Score: ");
       getline_v5 (record.score, MXSZ, "DS");
    }
    
    long getline_v5 (char *line, long lim, char *src)
    {
       if (lim < 2 || strlen_v7 (src, 0) < 1)
          return (-1);
    
       long c, i;
       char type[5];
       char *line_ptr = line;
    
       fillitoff (type, '\0', 5);
    
       for (i = 0; *src; ++src)
       {
          c = low2up_c (*src);
          if (lookfor_c_v3 ("ADSW", c) == 1)
             type[i++] = c;
          if (strfrc_s (type, "ADSW") == 1)
             break;
       }
    
       if (strfrc_c (type, "ADSW") == 0)
          return (-1);
    
       while (--lim > 0 && (c = getchar ()) != EOF && c != '\n')
       {
          if (is_alpha (c) && lookfor_c_v3 (type, 'A') == 1)
             *line++ = c;
          else if (is_digit (c) && lookfor_c_v3 (type, 'D') == 1)
             *line++ = c;
          else if (is_symbol (c) && lookfor_c_v3 (type, 'S') == 1)
             *line++ = c;
          else if (is_space (c) && lookfor_c_v3 (type, 'W') == 1)
             *line++ = c;
          else
             ++lim;
       }
    
       if (c == '\n' && lookfor_c_v3 (type, 'W') == 1)
          *line = c;
    
       return (strlen_v7 (line_ptr, 0));
    }
    
    int is_alpha (int c)
    {
        if (c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z')
           return (c);
        else
           return (0);
    }
    
    int is_space (int c)
    {
        if (c == ' ' || c == '\n' || c == '\t' || c == '\r' || c == '\v' || c == '\f')
           return (c);
        else
           return (0);
    }
    
    int is_symbol (int c)
    {
        if (c >= '!' && c <= '/' || c >= ':' && c <= '@' || c >= '[' && c <= '`' || c >= '{' && c <= '~')
           return (c);
        else
           return (0);
    }


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

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


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

    Lightbulb تمرین

    • با توجه به تمام نکاتی که پیرامون رمزعبورهای قوی در اینجا آمده است، سیستمی/تابعی بنویسید که کمیت و کیفیت رمزعبورها را بررسی کند و امتیاز (Score) آن را نیز برگشت دهد.

    کد:
     /* Function Prototype */
    unsigned long PasscodeStrengthChecker (char passcode[]);
    یا
    unsigned long PasscodeStrengthChecker (char *passcode);

  18. تشکرها از این نوشته :


صفحه 5 از 5 اولیناولین ... 345

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

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

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

بوک مارک ها

بوک مارک ها

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

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