نمایش نتایج 1 تا 7 از 7

نام تاپیک: شمارش کلمه در جمله

  1. #1

    Wink شمارش کلمه در جمله

    با سلام خدمت دوستان
    من می خوام یک برنامه بنویسم که یک string را بگیرد و یک کلمه را بگیرد ببیند چند بار تو جمله تکرار شده برنامه رو نوشتم اما می خوام با pointer توش کار کنم اما چون خوب این مبحث رو نفهمیدم نمی تونم باهاش کار کنم می شه خواهش کنم من رو راهنمایی کنید تا با pointer هم برنامم درست بشه سورس برنامم هم می ذارم اگه راهنماییم کنید ممکنه این pointer ها رو هم بفهمم ممنون میشم :لبخندساده
    #include<conio.h>
    #include<stdio.h>
    #include<string.h>

    [RIGHT] main()
    {
    char string[200],string2[200];
    char ch[20];
    int count=0,i,x=0,k;
    printf("Enter a statement:\n");
    gets(string);
    printf("\nEnter a word for searching in the statment:\n");
    gets(ch);
    x=strlen(string);
    i=0;
    while(i<=x)
    {
    k=0;
    while(string[i]!=' ')
    {
    string2[k]=string[i++];
    k++;
    }
    string2[k++]='\0';
    if(!strcmp(string2,ch))
    count++;


    i++;

    }
    printf("the itereation of word %s in this statement is %d",ch,count);
    getch();
    }

  2. #2
    سلام بر دوست عزیزم mania
    من برنامه شما رو خوندم و اشکالی که برنامه شما داره اینه که برای آخرین کلمه که جستجو می شه چون به بلانک نمی رسه داخل رشته string تا هنگامی که به بلانک نرسد جلو می رود ولی از شانش خوب شما به محض تمام شدن کارکتر های رشته string یک NULL به انتهای رشته string2 اضافه می شود و این باعث می شود که کارکتر های دیگر هم که چک می شوند و در string2 قرار می گیرند نادیده گرفته شود.
    خلاصه نمی دونم گرفتید یا نه به هر حال برنامه شما درست کار می کنه ولی برای بهینه کردن اون می تونید در while دومی این چنین چیزی رو قرار دهید که حتما نیازی به رسیدن به بلانک نداشته باشه یعنی:
    while(string[i]!=' ' && (i<x)) { //added condition
    امیدوارم که خویب مطلب رو به عرضتون رسونده باشم. و اما اینکه با اشاره گر ها می خواستید امیدوارم اینو که نوشتم بر خلاف قوانین نباشه به هر حال یه نوع آموزشه:


    #include<conio.h>
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>//for use function malloc

    main()
    {
    char *string,*string2;
    char *ch;
    int count=0,i,x=0,k;
    //************ memory allocate ************
    string=(char *) malloc (sizeof(char)*30);
    string2=(char *) malloc (sizeof(char)*20);
    ch=(char *) malloc (sizeof(char)*20);
    if (!ch || !string2 || !string ) {
    printf("Memory not allocated");
    getch();
    exit(0);
    }
    clrscr();
    printf("Enter a statement:\n");
    gets(string);
    printf("\nEnter a word for searching in the statment:\n");
    gets(ch);
    x=strlen(string);
    i=0;
    while(*(string))
    {
    k=0;
    while((*(string)!=' ') && *(string))
    {
    *(string2+k)=*(string++);
    k++;
    }
    *(string2+k)='\0';
    if(!strcmp(string2,ch))
    count++;
    string++;
    }
    printf("the itereation of word %s in this statement is %d",ch,count);
    getch();
    }

  3. #3
    فکر نمی کنید کدهای بالا اگه اینجوری نوشته بشه بهتره(منظورم به صورت LeftToRight هست)

    #include<conio.h>
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>//for use function malloc

    main()
    {
    char *string,*string2;
    char *ch;
    int count=0,i,x=0,k;
    //************ memory allocate ************
    string=(char *) malloc (sizeof(char)*30);
    string2=(char *) malloc (sizeof(char)*20);
    ch=(char *) malloc (sizeof(char)*20);
    if (!ch || !string2 || !string ) {
    printf("Memory not allocated");
    getch();
    exit(0);
    }
    clrscr();
    printf("Enter a statement:\n");
    gets(string);
    printf("\nEnter a word for searching in the statment:\n");
    gets(ch);
    x=strlen(string);
    i=0;
    while(*(string))
    {
    k=0;
    while((*(string)!=' ') && *(string))
    {
    *(string2+k)=*(string++);
    k++;
    }
    *(string2+k)='\0';
    if(!strcmp(string2,ch))
    count++;
    string++;
    }
    printf("the itereation of word %s in this statement is %d",ch,count);
    getch();
    }

    برای این کار یک [/code] بذارید آخر کد و یه [code] هم بذارید اول کد
    You never know what you can do until you try

  4. #4
    سلام
    بابا همه که مثل شما کاربر دائمی نیستند ولی دستت درد نکنه
    /merci
    thanks\

  5. #5
    ببخشید می شه تابع strcmp رو خودمون پیاده سازی کنیم؟
    می تونید راهش رو بذارید؟

  6. #6
    کاربر جدید آواتار محمد صادق
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    اصفهان
    پست
    26
    بسمه تعالی
    سلام
    پیاده سازی strcmp:

    int strcmp(const char *a,const char *b)
    {
    int i;
    for(i=0;*(a+i)==*(b+i) && *(a+i) && *(b+i);i++);
    return (*(a+i)-*(b+i));
    }

  7. #7
    برای کار کردن بهتر با رشته ها این لینک رو ببینید.
    یه کلاس کامل برای کار با رشته ها ست.
    تقریبا بیشتر توابعی که در کلاس CString هستند رو پیاده سازی کرده.

    http://www.codeproject.com/string/KString_class.asp

قوانین ایجاد تاپیک در تالار

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