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

الكود غير مفهوم ...من يفسر لي ارجوكم؟

بدأه jano في 11 أبريل 2009 · 2 رد · 358 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

واريد ان يفسر او يشرح لي الكود لان هناك اشياء اتوقفت عندها لم افهمها

#include<iostream.h>
#include<string.h>
char srev(char example);
{
char ch;
int n,f,i;
n=strlen(example)
f=0;
i=n-1;
while(f<=i)
{
ch=example[f];
example[f]=example;
example=ch;
f++;
i--;
}
cout<<example;
}
void main()
{
char str[50];
cout<<"enter string";
cin>>str;
srev(str);
cout<<str;
}
#2
 

[color= #0000ff;]void main[color= #000000;]([color= #000000;])

[color= #000000;]{

[color= #0000ff;]char str[color= #000000;][[color= #ff0000;]50[color= #000000;]];

cout[color= #000000;]<<[color= #A31515;]"enter string";

cin[color= #000000;]>>str;

srev[color= #000000;](str[color= #000000;]);

cout[color= #000000;]<<str;

[color= #000000;]}

كتلة البرنامج الرئيسية، تحجز مصفوفة طولها 50 حرف.

تظهر نص على الشاشة

تستقبل سلسلة من المحارف (حروف وأرقام ومحارف خاصة ربما) إلى متغير str

تقوم باستدعاء وظيفة srev وتمرر سلسلة المحارف بالوسيط str.

بعد انتهاء تنفيذ الوظيفة srev يتم إظهار قيمة str الأصلية.

 

[color= #0000ff;]char srev[color= #000000;]([color= #0000ff;]char example[color= #000000;]);

[color= #000000;]{

[color= #0000ff;]char ch;

[color= #0000ff;]int n,f,i;

n[color= #000000;]=strlen[color= #000000;](example[color= #000000;])

f[color= #000000;]=[color= #ff0000;]0;

i[color= #000000;]=n[color= #ff0000;]-1;

[color= #0000ff;]while[color= #000000;](f[color= #000000;]<=i[color= #000000;])

[color= #000000;]{

ch[color= #000000;]=example[color= #000000;][f[color= #000000;]];

example[color= #000000;][f[color= #000000;]][color= #000000;]=example[color= #000000;][i[color= #000000;]];

example[color= #000000;][i[color= #000000;]][color= #000000;]=ch;

f[color= #000000;]++;

i[color= #000000;]--;

[color= #000000;]}

cout[color= #000000;]<<example;

[color= #000000;]}

الوظيفة srev تعيد حرف أو سلسلة محارف من نوع char

تأخذ وسيط واحد هو example عبارة عن حرف أو سلسلة محارف من نوع char

تقوم بحجز مجموعة من المتغيرات، ch, m, f ,i

يتم حساب طول السلسلة الحرفية السابقة الذكر وحفظ الطول في المتغير n

يتم تهيئة المتغير f بالقيمة 0

يتم تهيئة المتغير i بطول السلسلة ناقص واحد

يتم الدخول في حلقة تكرارية شرطها أن تبقى قيمة f أصغر أو تساوي قيمة i (بالمناسبة يمكن كتابته بالشكل while (f < n وهذا يقلل من زمن تنفيذ عملية المقارنة ==)

يتم أخذ حرف من السلسلة التي دليلها (index) المتغير f وحفظ الحرف في المتغير ch الذي يكون متغير وسيط بحيث لا يتم فقد قيمة الحرف في العملية التالية.

يتم حفظ حرف من السلسلة التي دليلها المتغير i في السلسلة التي دليلها المتغير f

لاحظ أن f تبدأ من 0 وتنتهي بـ n-1

i تبدأ من n-1 وتنتهي بـ 0

بما معناه أنه يتم أخذ الحرف الأخير من السلسلة (مجازاً الأخير) ووضعه في المكان المقابل له في بداية السلسلة.

يتم نقل الحرف من المتغير الوسيط ch إلى مكانه في نهاية السلسلة (مجازاً نهايتها) في مكان الدليل i

يتم زيادة قيمة f بمقدار 1

يتم انقاص قيمة i بمقدار 1

عند الانتهاء من الحلقة التكرارية يتم إظهار السلسلة الجديدة بعد قلبها والعودة إلى كتلة البرنامج الرئيسية.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

ربي يجزاك الجنه

الف شكر

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