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

سؤال عن طريقه برمجه مصفوفه نصوص ؟

مغلق
بدأه TheKiLLeR في 25 أبريل 2005 · 7 رد · 824 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ..

احتجت ببرنامج معين ان اضع عده اسماء (تقريبا 20) داخل مصفوفه ... ومثل ما تدركون لا يجود بال ++C متغير من نوع String.

لكي اعرف مصفوفه من هذه النوع... فما الحل؟. هل اعرف مصفوفه بعد واحد(array[n]zzz) وبدور كل cell يؤشر على مؤشر من نوع Char?

اتنمى مساعدتكم وقرأءه اقتراحاتكم...

شكرا والى القاء ..

#2

نعم هنا إن كنت لاتعرف عدد الأسماء ولاتعرف حجم كل إسم مثلا , ستحتاج لفعل شيء يكون **char ,

لكن يمكن أن تسهل العملية بإفتراض طول أقصى للإسم ولامشكلة في ذلك وستكون الصيغة ,

char * x[30];

حيث هنا لديك عدد غير محدد من الأسماء وكل منها بطول 30 ,

وأفضل حل هو أن تضع حد أقصى لعدد الأسماء وليكن 100 مثلا , وبطول 30 , لترتاح من المؤشرات والجز بشكل نهائي لتصبح الصيغة :

char name[1000][30];

وبشكل طبيعي قم بالإدخال فيها هكذا :

for(int q=0;q<1000;q++)
cin name[q];

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#3

إذا كنت تستخدم C++

يمكنك استخدام Vector class

vector<string> v;

حيث يمكنك الإضافة عبر

v.push_back(line);
#4

تستطيع ان تعرف متغير من نوع string

واليك المثال

#include<iostream>
using namespace std;
#include<string>

void main()
{
	string a[20];

	for(int i=0;i<5;i++)
  cin>>a;


	for(int j=0;j<5;j++)
  cout<<a<<"  ";
	cout<<endl<<endl<<"good type"<<endl;

}
#5

السلام عليكم

ما عندي اضافة كبيرة ولكنمعلومه صغيرة اذا كانت الاسماء معلومه قبلا فيمكنك استخدام الطريقة التالية لتعريفها هي طريقة معممه ولكنها محدودة العناصر.

اذا اردت ان المستخدم يدخل الاسماء فلن تفيد هذه الطريقة بل استخدم ماكتبه اخي HGB أو الطرق الاخرى للاخوان.

المثال:

#include <iostream.h>


int main()
{
	char Name[][80] = { "Khaled","HGB","Jass" };

	for( int i = 0; i<3; i++)
  cout << Name << "\n";

	return 0;
}

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

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

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#6

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

اولا , اشكركم جميعا على ردودكم ومساعدتي واقدر هذا ,ااسف للانقطاع على الموضوع لمده وهذا يعود لظروف منعتي عن النت...

اخي ,HGB , اعتقد انك تقصد باستعمل حجز الذاكره الدينامي ,( Malloc) ,ولكن ما قصدك ب

"char * x[30]zzz"

"حيث هنا لديك عدد غير محدد من الأسماء وكل منها بطول 30 "

حسب ما افهمتوا انك عرفت متغير من نوع مؤشر ,وهو يؤشر على نص بطول 30 حرف (او byte) ,فما تقصد بعدد غير محدد من الاسماء؟ ولماذا استخدمت * بالتعريف ,فمتغير النص يعد بمؤشر بحد ذاته ..!؟ ما رايك ..؟

اخي ib_doom ,صراحه لم استخدم هذا ال Class من قبل...

اخي ,{عيسى} طريقتك اعتبرها ابسط طريقه هنا ,لسهوله التعريف والتعامل ,لكن اتمنى لم نجحت في استعملها فقط لم يتعرف على نوع string ..! ولقد استحدمت المكتبه String.h ,,

ملاحظه: لم استخدم

#include<iostream>

using namespace std;

اخي السهم الناري ,طريقتك هي الطريقه التي استخدمتها ,الاني اعرف مسبقا كم اسم سوف ادخل ,وبسيطه الاستعامل تناسب اسنخدامي البسيط :) ...

اشكركم جميعا مجداا والى النجاح والتفوق...

تحياتي ,,

تم تعديل هذه المشاركة بواسطة TheKiLLeR في 27 أبريل 2005 في 00:27

#7

اتذكر اني عانيت من نفس المشكله في أول الأمر

اكتب الدوال #include<string>

#include<iostream>

using namespace std;

بدلاً من الدوال السابقه ، ومايحتـاج انك تغير بباقي الكود .

لا أدري هل أفدتك أم لا ؟

#8

السلام عليكم ..

اولا اشكرك للتواصل ..

لقد حاولت تغير الكود لما كتبته لكنه لم يتعرف على Std :s ...

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

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

ملاحظه : احيانا ارى في بعض الاكواد استخدام CString لكي يعرف نص...

تحياتي ,,

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

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