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

تبعا لموضوعي بالأمس

بدأه روزة في 23 فبراير 2008 · 2 رد · 733 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

تبعا لموضوعي بالأمس اللي

/index.php?showtopic=152412

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

لكن حاولت في السؤال ويمكن قدرت فيه

حابة أشوف اذا فكرتي وحلي صحيح أو لا وياليت ألاقي منك مساعدة

وووووووووووووشكرا للجميع

#include<iostream>
#include<string>
using namespace std;
template <class T>
class Array {



private:
int size; // size of the array
T *ptr; // pointer to first element of array 
int subscript; //location of element 

public:
Array( int x = 10 ) // default constructor
{
size=x;
ptr=new T[x];
subscript=0;
}
~Array() // destructor 
{
delete []ptr;

}


void AppendLast(const T element) // Add element at end of array

{
if(subscript<size)
ptr[subscript]=element;
subscript++;
}


void DeleteLast() // Delete last element

{

if(subscript>=0)
ptr[subscript]=0;
subscript--;
}
struct A{

string name;
double id;
int level;


};

int main()
{
Array<int>a(20);
A var;
a.AppendLast(var);


var.name="ola";
return 0;
}

تم تعديل هذه المشاركة بواسطة GamingMasteR في 24 فبراير 2008 في 00:31 — السبب: CODE

#2

السلام عليكم

=======

طبعاً اختي عندك خطأ , نحوي, وتقني, ومنطقي. شو رايك نبدأ بالنحوي اولاً

ناسية اختي الكريمة تقفلي تعريف الصنف class بالقوس المجعّد وإضافة الفاصلة المنقوطة بعده

==========

الخطأ التقني,,هو الترتيب بعملية إنشاء المصفوفة مع إنشاء السجل The record تبع الطالب Student. وبعدينه عرفتي المصفوفة على انها رايحة تاخذ قيمة عدد صحيح int وتريدي بنفس الوقت تمرري قيمة Student var؟؟ :rolleyes: فصارت المصفوفة عندها تعارض بـ T مرة عدد صحيح ومرة var Student؟؟ :wacko:

==========

الخطأ المنطقي التالت هو بأنه محدا من استاتذتك قالوا لك اعملي الآي دي تبع الطالبة او الطالب بعدد حقيقي Double, وأيضاً حتى لو كتبوا تقدري تخليهم مخطئين,, دائما الآي دي ID اللي هو رقم تعريف الطالب او الطالبة او خاص بالموظفين,,وووو..دائما يكون حروف Characters أو سلسلة حرفية String بالضبط مثل أرقام الهواتف..برمجياً منا اعداد حسابية ابداً..

========

حلك مبديئاً اختي الكريمة انا معدلته لك كالتالي:

#include<iostream>
#include<string>

using namespace std;
template <class T>
class Array {
private:
	 int size; // size of the array
	 T *ptr; // pointer to first element of array 
	 int subscript; //location of element 

public:
	 Array( int x = 10 ) // default constructor
	{
	   size=x;
	   ptr=new T[x];
	   subscript=0;
	}
	~Array() // destructor 
	{
	   delete []ptr;
	}


 void AppendLast(const T element) // Add element at end of array

   {
	   if(subscript < size)
		  ptr[subscript]=element;
	   subscript++;
	}

	void DeleteLast() // Delete last element

	{

		if(subscript>=0)
		  ptr[subscript]=0;
		subscript--;
	}
};
struct A{

	string name;
	string id;
	int level;


};

int main()
{
	A var;
	var.name="ola";
	var.id = "3212";
	var.level = 1;

	Array <A> a(20);

	a.AppendLast(var);

	return 0;
}

شوفي اختي انا مني مهتمة كثير بحل المشكلة خوارزمياً بالضبط مثل ما حكيت لك با اليوم اللي طاف.. لكن الشيفرة المعدلة تعمل وتتجمع بدون اخطاء.

ملاحظة اختي روزة:

انتي الآن خلصتي من الشق الأول الفقرة الثانية (التعاريف اللي كتبتيهن امس الصباح) :happy: , حسب اللي عارفته ومتابعته من أمس ,واليوم انا شايفة انتي انتقلتي إلى الشق الثاني الفقرة الأولى a وتخطيتي الفقرة التي تليها b ورحتي على c. على فكرة انا شايفته ذكاء منك..طيب

يلله الآن باقي عليك (الله يعينك طبعاً) تكريس الجهد علشان تعملي الدالة التالية

friend ostream &operator<< ( ostream &, const Array<T> & );

عارفة لش؟ علشان تكوني قادرة من طباعة واخراج البيانات بواسطة الدالة

void PrintArray();

هذي البرمجة اختي,,,تابعي, كملي من جيهة, وارجعي كملي الجيهة الثانية, شوفي شو تحتاج الدالة قبل تعريفها وإنشائها؟ و هكذا.... :happy:

آسفة اختي مني قادرة ادخل بالموضوع خوارزمياً والله لأن راسي مليان من القراءة اليومين اللي طافن ومني مركزة كثير والله. :)

تمنياتي لك بالنجاح والتوفيق اختي روزة والجميع طبعاً :happy:

========

تم تعديل هذه المشاركة بواسطة رغـــــــــد في 24 فبراير 2008 في 05:13

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#3

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

أما بالنسبة لكود إضافة عنصر AppendElement(i), فهو بسيط إن شاء الله و خطواته ممكن تكون كدة>

1- تتأكدى إنه يوجد مكان لإدخال العنصر الجديد.

2- فى حالة وجود مكان, تقومى بإزاحة كل العناصر من i إلى subscript-1 لليمين بمقدار خانة واحدة.

3- تقومى بكتاية العنصر الجديد فى المكان i.

4- تزودى ال subscript بواحد.

void AppendElement(int i){
	if (i<size && subscript<size){
		T nu_element = 0;   // assuming the new element is 0
		if (i >= subscript){
			AppendLast(nu_element);
			return;
		}
		for (int j=subscript-1; j>=i; j--)
			ptr[j+1] = p[j];
		ptr = nu_element;	// the new value
		subscript++;
	}
}

ملاحظة: AppendElement المفروض تاخد قيمة ال element فى المدخلات.

أما ال Delete فا زيها بس حتنقلى العناصر من i+1 إلى subscript-1 لليسار بمقدار خانة, و حتقللى ال subscript بواحد.

تم تعديل هذه المشاركة بواسطة Blueteeth في 25 فبراير 2008 في 12:38

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