الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف تحسب عدد أحرف كلمة في ال C

بدأه SIFE في 4 سبتمبر 2009 · 12 رد · 10,468 مشاهدة · في المواضيع والدروس
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

اليوم إن شاء الله سنتعرف على طريقة حساب عدد حروف كلمة في لغة C في الحقيقة توجد دالة بإسم strlen في المكتبة string مهمتها حساب عدد حروف كلمة ما

لكن الهدف هنا هو تعلم طريقة بناء مثل هذه الدوال .

في لغة C لا توجد متغيرات لتخزين الكلمات لكن بدل ذلك نستخدم مصفوفات إلا أنه هذه الأخيرة محدودة من حيث العناصر حيث يجب عليك إما تحديد عدد عناصر المصفوفة

أو أن المترجم سيقوم بذلك أثناء عملية الترجمة هذا بعد تحديد الكلمة .

مثال :

char str[]="sife";

أثناء عملية الترجمة ستكون هكذا :

char str[3]="sife";

الطريقة الأخرى هي بإعطاء مؤشر كالآتي :

char *str="sife";

حيث تكون في الذاكرة كالآتي :

post-133201-1252073593_thumb.jpg

حيث أن NULL في الذاكرة تكون 0\ و ليست 0 الذي نقوم به في الحساب أما في الكلمة ستكون بمعنى النهاية ،الآن و عرفنا كيف يتم تخزين كلمة في الذاكرة حان دور معرفة كيفية حساب عدد حروف كلمة لننظر للبرنامج الآتي :

post-133201-1252073525_thumb.jpg

السطر 4 متغير نخزن فيه عدد الأحرف أما السطر 5 فهو مؤشر للكلمة المراد حسابها ،السطر 6 إستخدمنا فيه التكرار حيث str* تعني القيمة الموجودة

في الذاكرة فائدتها في هذه الحلقة هي فحص إذا ما تم الوصول إلى النهاية أما لا ،السطر 8 مع كل زيادة في عنوان أي النتقال إلى حرف جديد نزيد المتغير بقيمة واحدة أما السطر 9 فهو الإنتقال إلى العنوان اللاحق أي الإنتقال إلى الحرف اللاحق ،السطر 11 هو لطابعة عدد الأحرف الموجودة .

كان من الممكن تبديل البرنامج السابق بهذا :

  1.  
  2. #include<stdio.h>
  3. main()
  4. {
  5. int i=0;
  6. char *str="abdelrazak";
  7. while(*str!='\0')
  8. {
  9. i++;
  10. *str++;
  11. }
  12. printf("%d",i);
  13. return 0;
  14. }
  15.  
  16.  

الإختلاف الوحيد سيكون في السطر 6 حيث أن الشرط هو أننا لم نصل إلى نهاية الكلمة أي 0\ سنقوم بزيادة عنوان في الذاكرة مع زيادة في المتغير i .

البرنامج : str.rar

المقال الأصلي : كيف تحسب عدد أحرف كلمة في ال C

تم تعديل هذه المشاركة بواسطة SIFE في 4 سبتمبر 2009 في 17:16

1

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#2

موضوع جميل اخى سيف، جزاك الله خيرا عليه

post-133201-1252073525.jpg

اخى سيف ممكن استأذنك ترفع لى ملف الـ setting الذى يحتوى على هذا الـ Style حيث انى بحث عنه و لم اجده ايضا حاولت عمل واحد شبيه له لكنى مملت.

و شكرا لك

مدونتي: C++ Tips and Tricks

#3

themes.rar

إسمه black board ،الملف المرفق فيه جميع الثيمات .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#4

شكرا جزيلا لك

مدونتي: C++ Tips and Tricks

#5

جميل جدا ياسيف هذه دالة بنفس طريقه كودك :

  1. int lenth(const char * str){return (*++str)? 1+lenth(str): 1;}
  2.  

tvquran_6.gif

#6

في طريقتك يا أخي فهد جعلت الدالة تعيد نفسها حتى الوصول إلى NULL على ما أظن أي recursion .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#7

نعم هذه الدالة ترجع كل مرة حتى تصل الي الحرف الخامد '0\'.

غالبا في لغة السي أكثر من طريقة لعمل نفس الوظيفة.

tvquran_6.gif

#8

انا زلت الثيم ولكن اين احطه اخي

49940.jpg
#9

لماذا

char str[3]="sife"

و ليس

char str[4]="sife"

أو

char str[5]="sife"

للاستفسار فقط.

تم تعديل هذه المشاركة بواسطة SalemSo في 10 سبتمبر 2009 في 10:19

#10

الصحيح هو :

char str[5]="sife"

لأن عدد الأحرف هي 4 + حرف null character .

أما في البقية فهناك overflow كتابة خارج حدود المصفوفة .

بالتوفيق ،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#11

هل لديك notepad++ .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#12

السلام عليكم ورحمة الله وبركاته

اخي هذا برنامج لطباعة سلسلة حرفية تم ادخالها عن طريق لوحة

المفاتيح مع بيان عدد حروفها وعدد كلماتها .


main()
{
int i=0,j=1,k=0;
char ch[50];
printf("\nEnter The string:>\n");
gets(ch);
while(ch!='\0')
{
printf("%c",ch);
if(ch==' ')
{if(ch[i+1]!=' ')
j++;
}
else
{k++;}
i++;
}
printf("\n%s",ch);
printf("\n\n\n...The string lenght is:=%d",k);
printf("\n\n\n...The words number is:=%d",j);
}


#include<stdio.h>

#13

اظن أقصى حد سيحسبه هو 50 حرفا لأنك إستعملت مصفوفة .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

مواضيع مشابهة