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

ممكن مساعدة سريعة ..!!

مغلق
بدأه anoood في 24 نوفمبر 2002 · 11 رد · 822 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي برنامج صغير ياليت تساعدوني فيه ..

يقول :

اكتب برنامج يقوم بتخزين السلسله النصيه التاليه:

"HELLO MYFRIND HOWAREYOU"

ثم يقوم البرنامج بعمل التالي :

1-طباعة عددالحروف الموجود بالنص.

2- طباعة النص معكوس .

3-طباعة عدد الكلمات الموجوده بالنص.

4-طباعة كل كلمه في سطر مع عدد الحروف المكونة منه كل كلمه.

5-حساب عدد مرات ورود حرف RوحرفH.

6-عدد ورود حرف O بشرط الحرف الذي يسبقهY.

7-عمل احصائيه بعدد تكرار كل حرف .

ملوحظه هامه:

اتمنى ان يستخدم بالبرنامج

scanf,printf ,for ,function

string,n

الرجاء الرد وايجاد الحل سريعا قبل الغد اذاامكن ذلك والرد سريعا

وشكرا ..(f)

#2

السلام عليكم ,,,

أختي عنود كان اجدر بك أن تقرئي قوانين المنتدى

قوانين الكتابة في المنتدى

أختي أطرحي تصورك للموضوع أولاً...

مع تحياتي ,,,

#3

اولا - اعتذر اشد الاعتذار لكوني وضعت الموضوع قبل قراءة قوانين المنتدى ...

ثانيا - انا لا اعرف في لغة C لأني مبتدأه فيها جدا ...اريد ان اتعلمها ... لكن تواجهني حاليا بعض المشاكل في جهازي ..فلا استطيع تحميل البرنامج حاليا ..

بالنسبة للسؤال ..:confused:

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

وسأقول ماعندي .. وارجو التصحيح لي ..

------------------------------------------------------------

طبعا في البدايه

سأضع جمله توضح مااحتاجه من الدوال المكتبيه الجاهزه وفي حالتنا هنا

اتوقع اني استخدم (stdio) فقط

بعدها اذكر المتغيرات الموجوده عندي وهي على مااظن

1-السلسله الموجوده .. واذكر عدد حروفها..

2-استخدم اكثر من عداد .اظن امممممممم 3

وطبعا سأحتاج استخدام function

لذلك راح اعرفها هنا ايضا

بعد كذا ادخل في الــmain

ابتدي بقراءة السلسله واكيد راح احتاج for

هنا نبدأ نستخدم الدوال ونستدعيها

1- نستدعي الداله الي راح تطبع لنا عدد الحروف بالنص

2- الداله التي تطبع النص معكوس .

3-

4- وهكذاااااااااااااااااااااااا

5-

6-الداله التي تقوم بعمل احصائيه بعدد تكرار كل حرف .

بعدها نغلق الـ main

وهنا نقوم ببناء الدوال ...

------------------------------

سؤالي اخي الفاضل ..

اني اعرف جسم البرنامج ...

لكني جديده على الدوال ولم ادرسها ولا اعرف ان كانت طريقتي صحيحه ام لا ..

وهل في طرق اسهل لحلها ...

سؤالي الثاني ... اني تعلمت الــ C على التيربو ... لكن هل تختلف كتابة البرنامج كثيرا عن ++C

وذا كانت تختلف .... ماهي الفروق ...؟؟

شكرا للتجاوب السريع ...

وتقبلو تحياتي ...،،

#4

السلام عليكم ,,,

أختي شكراً لك على تقبل الموضوع بصدر رحب

و طرحك آرائك :)

و لكني لم اشاهد هنا أي كود سي :eek:

المهم لقد قمت بكاتبة جزء من الكود فقط و ليس كله

لذلك عليك بتكلمة الباقي, فأنا وضعتك على أول الطريق

تفضلي:

#include

#include

void print_rev(char str[], int len);

void print_num_of_words(char str[], int len);

int main()

{

char str[] = "HELLO MY FRIND HOW ARE YOU";

int len;

len = strlen(str);

printf("The String contains %d leters.n", len); /* print the number of letters */

print_rev(str, len);

print_num_of_words(str, len);

}

void print_rev(char str[], int len) /* print the string in reverce order */

{

int i;

printf("nThe string in the reverce order: ");

for( i = len-1 ; i >= 0 ; i-- )

{

printf("%c", str);

}

printf("n");

}

void print_num_of_words(char str[], int len)

{

int counter, i;

counter = 1;

for(i = 0 ; i :)

أتمنى ان أرى في المرة القادمة عملك على كود لغة سي

و إطرحي أي إستفسار عندك و نحن كلنا هنا في الخدمة :)

مع تحياتي ,,,أخوك / طلال.

#5

مره ثانيه ... اكرر شكري لك ..

وإن شاء الله مجرد مااحمل البرنامج على الجهاز ... اكتب الكود هنا ..

يعطيك الف عافيه :)

تقبل تحياتي ،،

#6

السلام عليكم ,,,

العفو أختي لا شكر على واجب :)

و نحن في إنتظار تحميل البرنامج :)

مع تحياتي ,,, أخوك / طلال.

#7

أخ طلال لدي تصور حول حلك وهو بخصوص عدد الفراغات, : ماذا لو وضعت بعد جملة

;(' '==[if(str[i لو وضعت بعدها حلقة تقدّم الـ i طالما ' '==[str[i وبهذا تضمن تقدم عدد الفراغات دون زيادة counter ... اليس هذا مجدٍ؟

هكذا :

#include <stdio.h>

#include <string.h>



void print_rev(char str[], int len);

void print_num_of_words(char str[], int len);



int main()

{

char str[] = "HELLO MY FRIND HOW ARE YOU";

int len;



len = strlen(str);

printf("The String contains %d leters.n", len); /* print the number of letters */



print_rev(str, len);



print_num_of_words(str, len);









}





void print_rev(char str[], int len) /* print the string in reverce order */

{

int i;



printf("nThe string in the reverce order: ");



for( i = len-1; i >= 0; i-- )

{

printf("%c", str);

}



printf("n");

}



void print_num_of_words(char str[], int len)

{

int counter, i;

counter = 1;



for(i = 0; i < len; i++)

{

if(str == ' ')

{

counter++;

while(str==' ') i++;

}

printf("nThe string contines %d words. ", counter);

}

هكذا ستنتهي قصة تكرار الفراغات...

#8

بخصوص عمل احصائية بعدد تكرار كل حرف فيمكن بناء مصفوفة من 26 حرف (عدد الحروف الانجليزية), الحرف الاول في المصفوفة(المكان صفر) يكون عداد الـA والثاني

B هكذا...

الآن نريد من البرنامج اذا كان الحرف A يزيد المكان 0 في المصفوفة واذا كان الحرف B يزيد المكان 1 وهكذا... كيف؟

كيف نحول A الى 0 هكذا 'A-'A حيث ان قيمة A=65 والحرف 'A' قيمته 65 , وهكذا

'B-'A تساوي 1 و 'C-'A تساوي 2 لأن قيمة C هي 67 ...

وهكذا كي نعد تكرار الحرف نويد الخلية الخاصة به:

++['LettetCount[str-'A

وهكذا عندما نعد في النهاية نقول:

[str[i تكرر[ 'LettetCount[str-'A مرات...

ارجو ان اكون واضحا!

انتبه ان المصفوفة'LettetCount تكون مصفوفة رقمية من نوع int

#10

السلام عليكم ,,,

نعم أخي إسماعيل هذا سيؤدي الغرض :)

و يمكن أيضاً عمل ذلك بإستخدام الدالة strtok و لكن

هذه الدالة ستؤدي إلى تشويه شكل الجملة لأنها

ستضع محل كل فراغ الحرف NULL و يمكن تلافي

هذه المشكلة عن طريقة إستخدام الدالة strcpy

حيث ننسخ الجملة الاصلية في جملة مؤقته

و نستخدم strtok على الجملة المؤقته :)

و لكنك حلك بالتأكيد أسهل :P و لكن طرحت طرقتي

لأبين أن البرمجة ممكن برامج مختلفة الطرق 100%

تؤدي نفس الشي :)

مع تحياتي .,,,طلال.

#11

السلام عليكم ,,,

هذا هو الكود للطريقة التي عملتها:

int print_no_of_word(char str [])

{

	int i = 0;

	char *p = strtok(str, " ");



	while(p != NULL)

	{

  i++;

     p = strtok(NULL, " ");

	}

	return i;

}

مع تحياتي ,,, طلال ;)

#12

طبعا يفضل ارجاع المسافة بعد استخدام strtok .. كالتالي /

int print_no_of_word(char str [])

{

	int i = 0;

	char *p = strtok(str, " ");



	while(p)

	{

                    *p = ' ';

     i++;

     p = strtok(NULL, " ");

	}

	return i;

}

Coding on the Cloud and for the Cloud!

My Blog

هذا الموضوع مغلق.

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