مشاهدة النسخة كاملة : اريد اعرف ما هي المتغير التي يجب ان استخدمها في هذه المساله


مبدع
22-06-2006, 02:23 AM
السلام عليكم

هذا اول مشاركة لي في المنتدى

عندي مشكلة صغيرة

قمت بعمل برميج صغير باستخدام لغة c++

فكرة البرنامج انه يطلب منك اسمك الاول ثم يطلب منك القبيله ثم يطبع لك النتجية في جملة

المشكلة التي تواجهني في استخدام المتغير حيث انني استخدم المتغير int التي تقبل فقط

الاعداد الصحيحة واعتقد انه من الخطأ استخدام المتغير int لان البرنامج يطلب منك كتابه الاسم

وليس الارقام

ارجوا من اصحاب اخباري المتغير المناسب حتى يعمل البرنامج بشكل صحيح

كووووود البرنامج

// file name: program.cpp
// coder: Al Maqdad
// for test only
// 22/6/2006

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int main()

**

int first_name;

int second_name;

int full_name;


cout << "Welcome this is my fist program\n";

cout << "I hope all one like it !!!!!!\n";

cout << "What is your first name ????:";

cin >> first_name;

cout << "What is your second name ????:";

cin >> second_name;

full_name = first_name , second_name;

cout << " You Are " << full_name << endl;

return 0;

}

اتمنى ن ارى ردكم في اسرع وقت

اجمل التحايا

مبدع
22-06-2006, 04:45 PM
في انتظار ردوكم

منطلق بطموحي
22-06-2006, 06:34 PM
السلام عليكم:

حياك الله اخي مبدع بيننا في المنتدى و ان شاء الله تقضي الوقت النافع و المفيد halatkn

بالنسبة لسؤالك فانت اجبت على سؤالك بان المتغير int لا يقبل الحروف

انواع المتغيرات في لغة السي بلس بلس كثيرة فمنها:

int تقبل الاعداد الصحيحة بدون كسور فمثلا 4 عدد صحيح بينما 4.2 عدد عشري غير صحيح
double و float تقبلان الاعداد الكسرية مثل 4.2 على اختلاف ان double دقتها اكثر من float بالنسبة لعدد المنازل العشرية
char هو المتغير الذي يقبل الحروف

بالنسبة لسؤالك فيحل بطريقتين :

1. استعمال المتغير char و المشكلة هنا انه لطباعة الاسم بشكل كامل يجب استعمال تقنية المصفوفات arrays و هنا التعديل

// file name: program.cpp
// coder: Al Maqdad
// for test only
// 22/6/2006

#include <iostream>


using namespace std;

int main()

**

char first_name[20];

char second_name[20];




cout << "Welcome this is my fist program\n";

cout << "I hope all one like it !!!!!!\n";

cout << "What is your first name ????:";

cin >> first_name;

cout << "What is your second name ????:";

cin >> second_name;



cout << " You Are " << first_name<<" "<<second_name<< endl;

return 0;

}

2. الحل الاخر باضافة المكتبة string و استعمال النوع string كمتغير يتيح لنا التعامل مع الجمل و هذا الحل اذا كنت مبتدئ باللغة اسهل لك من التعامل مع المصفوفات
و هنا التعديل:

#include <iostream>
#include<string>

using namespace std;

int main()

**

string first_name;

string second_name;




cout << "Welcome this is my fist program\n";

cout << "I hope all one like it !!!!!!\n";

cout << "What is your first name ????:";

cin >> first_name;

cout << "What is your second name ????:";

cin >> second_name;



cout << " You Are " << first_name<<" "<<second_name<< endl;

return 0;

}

ملاحظة : بالنسبة ل using namespace std; فهي تغنيك عن كتابة جمل كثيرة لكل ما تريد ان تستعمله من cout و غيره

و هناك حلول اخرى باستعمال المؤشرات

و اذا لديك اي سؤال فلا تتردد في طرحه

wafk

مبدع
22-06-2006, 06:56 PM
السلام عليكم

مشكور اخوي منطلق بطموحي على مساعدتي فلقد قمت بحل مشكلتي فعلا

بما اني مبتدى واريد ان اتعلم المزيد فلدي اسئلة

- هل ممكن ان تشرح لي تقنية arrays ؟

- انا قمت باستخدام متغير char بحيث كان الكود

char first_name;

char second_name;

ولم تفد معي وكان المشكلة موجود ولكن انت استخدم المتغير نفسه وضفت القيمة 20

char first_name[20];

char second_name[20];

فنحلت المشكلة ... فما فائدة اضافتك قيمة 20

- ملاحظة : بالنسبة ل using namespace std; فهي تغنيك عن كتابة جمل كثيرة لكل ما تريد ان تستعمله من cout و غيره

ما الفرق بين

using std::cout وبين using namespace std

هل هناك الفرق بينهم او انهم نفس الوظيفة

- عندما اشغل البرنامج واقوم بكتابة الاسم بالاول مع وجود فراغ مثلا ( AL MAQDAD ) فانه لا يذهب الى الخطوة الثانية ويطلب مني الاسم الثاني لماذا ؟

واكرر شكري لك اخي العزيز

ودمت في راعية الله

منطلق بطموحي
23-06-2006, 02:12 PM
و عليكم السلام :

بالنسبة لتقنية ال arrays فيصعب شرحها هنا و لكني اقوم حاليا بشرحها في الموضوع المثبت بعنوان مسائل في السي بلس بلس حيث وصلت لهذا الدرس في الوقت الحالي

بالنسبة لاستخدامك ل char first_name; فهي فعلا لا تفي بالغرض و السبب ان المتغير char يقبل حرف واحد فقط لا مجموعة حروف و لذا اعطيتك الحالي الثاني باستخدام النوع string الذي يتعامل مع الجمل و الكلمات

بالنسبة للاستعمال التالي char first_name[20]; فهذا يعني باني انشئ مصفوفة تتكون من 20 عنصر عبارة عن حروف

و 20 اي ان الحد الاقصى لعدد حروف الاسم الواحد = 20 حرف
و يمكنك تغيير الرقم بما تتناسب حاجتك اما ال string فلا داعي لتحديد عدد الحروف على سبيل المثال

بالنسبة لعبارة Al Maqdad فالمترجم لا يتقبلها ذلك لانه يتوقع منك كلمة واحدة و عندما فصلت الكلمتين حينما طلب الاسم الاول توقع منك ان تدخل كلمة واحدة و اعتبر الفراغ كلمة اخرى جديدة

بالنسبة ل using namespace std; فهي تغنيك عن استعمال using std::cout و using std::cin و الخ مما تريد استخدامك ...فنعم يمكنك استبدال جميع ما تريد استخدامه من المكتبات كمكتبة iostream بجملة using namespace std; دون كتابة اكثر من جملة using



greet

مبدع
23-06-2006, 02:46 PM
السلام عليكم

مشكور اخوي على التوضيح

:
بالنسبة لعبارة Al Maqdad فالمترجم لا يتقبلها ذلك لانه يتوقع منك كلمة واحدة و عندما فصلت الكلمتين حينما طلب الاسم الاول توقع منك ان تدخل كلمة واحدة و اعتبر الفراغ كلمة اخرى جديدة
greet

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

ولك مني جزيل الشكر