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

سؤال ضروري يا جماعه !( امتحاني بكره ! )

بدأه ::محمد:: في 9 مايو 2010 · 6 رد · 860 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

يعطيكم العافية إخواني

بكرة عندي امتحان هيلكية بيانات ! وحالتي حالة بسبب ترك بسيط !

لاحظوا الكود التالي

#include<iostream>
using namespace std;
int main()
{

char name[25]="hi";
char name1[25]="hi";

if(name==name1)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;



	return 0;
}

لماذا المخرج يكون NO

رغم تساويهما !

علماً انني لا استطيع عمل جملة مساواة بينهما مثل name1=name أو العكس

وأضيف تصحيح بسيط لما جاء به الأخ الشمري

انه عند عمل cout لكل من name و name1 يكون المخرج hi وليس الـ أدريس !

أطيب الأمانِي ..

تم تعديل هذه المشاركة بواسطة ::محمد:: في 9 مايو 2010 في 00:56

1
#2

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

أنت تقارن بين عناوين .. ولا تقارن بين محتوى كل كائن ، اذا أردت المقارنة بين نصين فعليك استخدام دالة مثل strcmp - لعلّي كتبت اسمها الصحيح - ، أو اكتب دالة لمقارنة كل حرف بنفسك ، أو استخدم كائن stl::string الذي يدعم الـ operator الخاص بالمقارنة وهو == .

كل متغير له عنوان في الذاكرة وله قيمة ، فمثلاً :

x = 10

القيمة تساوي 10 ، لكن العنوان قد يكون 7134762 أو أي قيمة ، حسب موقعه في الذاكرة ، فمثلاً لو كتبت شيء كهذا :

#include<iostream>
using namespace std;
int main()
{

char name[25]="hi";
char name1[25]="hi";

cout<<name<<endl;

cout<<name1<<endl;



 	return 0;
}

فستجد أنه يطبع قيم ما مختلفة عن الأخرى .. وهي عناوين هذه الكائنات في الذاكرة ، ولهذا السبب عندما تقارن تلك العناوين ، يكون الناتج false لاختلاف العنوان .

المتغيرات البسيطة primitive تقارنها باستخدام == .

المتغيرات المعقدة مثل المصفوفات و الكائنات ، يجب أن تقارن كل عنصر primitive موجود داخلها .. فمثلاً في مصفوفة char ، يجب أن تعمل loop على كل عنصر وتقارنه بالآخر عن طريق (==) .

2

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

الله يسعدك يالغالي .. وصلت فكرتك

بس لكن لما اعمل cout>>name

يطبع لي hi وليس الادريس

لو كان يطبع الادرس كنت عرفت الحل من زمان

تم تعديل هذه المشاركة بواسطة ::محمد:: في 9 مايو 2010 في 00:50

#4

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

عدل جملة الشرط إلى ,

if (strcmp (name,name1) == 0)

بالتوفيق :happy: ..

تم تعديل هذه المشاركة بواسطة إشراقــه فجــر في 9 مايو 2010 في 00:59

2 −1

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#5

إشراقـة فجر

تسلم الأيادِي يا رب ..

والآن ذاهب أتفقد آلية عملة الدالة strcmp ..

وما قصر الغالي الشمرِي ..

#6

شوف يا كبير انا اول مشاركة الي بالمنتدى الرائع يسعدني انها تكون الك >>>>>>>>>

اول اشي رح أعلق على الكود اللي انت كتبته

انت حجزت بالميموري 25 خانة من نوع chae عملت هيك مرتين الأول سميتها name والثانية سميتها name1 طيب حلو لهون ما عندك مشاكل بس شو عملت بعد هيك ؟؟؟ انت عملت (if(name==name1 وهون عندك صار الخطأ ما بصير تسأل array== array لازم تاخذ كل حرق من name مع الحرف اللي بقابله من name1 وتقارنهم مع بعض !!! فهمت يعني الحرف الأول هل يساوي الحرف الأول ,,, الحرف الثاني هل يسواي الحرف الثاني وهكاذا شوف انت يمكن ما تكون فهمت منيح ؟

انا رح اريحك واكتبلك الكود . :)

#include<iostream>

using namespace std;

void main()

{

char name[25]={'a','h','m','a','d'};

char name1[25]={'a','h','m','a','d'};

for(int i=0 ; i<5 ; i++)

cout<<name;

cout<<endl;

for(int x=0 ; x<5 ; x++)

cout<<name1[x];

cout<<endl;

for( int t=0 ;t<5 ;t++)

{ const int a=t;

if(name[a]==name1[a])

{

cout<<"char number : "<<(t+1);

cout<<": yes "<<endl;

}

else

{

cout<<"char number : "<<(t+1);

cout<<": no "<<endl;

}

}

}

char.txt

#7

يعطيك العافية أخي احمد .. وحياك الله معنا في فريق البرمجة العربي ..

كلامك صحيح .. وأنا لدي علم بفكرة المساواة حرف بحرف .. ولكنها ليست عملية كثيراً .. وتقريباً تحتاج لأن أقوم ببرمجة فنكشن متكامل .. فمثل هذه العملية في الامتحان تستغرق وقت طويل .. أنا أولى فِيه أن أقوم بمراجعة بقية الامتحان أو محاولة تطوير الكود ليكون أشمل وضد الأخطاء .. ولكن ما قصرت معانا الاخت اشراقة فجر .. وجابت لنا فنكشن كامل وجاهز..

عموماً ربي يسلم أياديكم .. أمس كان امتحاني .. والحمدلله قدمت إمتحان ممتاز .. وجربت البرنامج واشتغل بدون أي أخطاء ..

ما قصرتم جميعاً ..

تم تعديل هذه المشاركة بواسطة ::محمد:: في 10 مايو 2010 في 11:34

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…