PDA

View Full Version : شمارش کلمه در جمله



cs_mania
یک شنبه 04 دی 1384, 19:13 عصر
با سلام خدمت دوستان
من می خوام یک برنامه بنویسم که یک 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();
}

mohammad222
پنج شنبه 15 دی 1384, 14:17 عصر
سلام بر دوست عزیزم 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();
}

mzjahromi
پنج شنبه 15 دی 1384, 14:40 عصر
فکر نمی کنید کدهای بالا اگه اینجوری نوشته بشه بهتره(منظورم به صورت 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] هم بذارید اول کد

mohammad222
پنج شنبه 15 دی 1384, 21:53 عصر
سلام
بابا همه که مثل شما کاربر دائمی نیستند ولی دستت درد نکنه
/merci
thanks\

zahra_ah
یک شنبه 23 مهر 1385, 21:50 عصر
ببخشید می شه تابع strcmp رو خودمون پیاده سازی کنیم؟
می تونید راهش رو بذارید؟

محمد صادق
سه شنبه 25 مهر 1385, 06:01 صبح
بسمه تعالی
سلام
پیاده سازی 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));
}

marvel
چهارشنبه 26 مهر 1385, 11:32 صبح
برای کار کردن بهتر با رشته ها این لینک رو ببینید.
یه کلاس کامل برای کار با رشته ها ست.
تقریبا بیشتر توابعی که در کلاس CString هستند رو پیاده سازی کرده.

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