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

كيف نحسن هيئة الإدخال !؟

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

السلام عليكم

قمت بكتابة هذا الكود الذي يقوم بضرب مصفوفتين ثنائيتي البعد, المستخدم هو من يُدخل العناصر :

#include<iostream>
using namespace std;
int main()
{
    int i,j,k,s = 0,a[4][3],b[3][4],c[3][3] = {0};

    cout<<" --------------------------------"<<endl;
    cout<<"|    Elements of first array     |"<<endl;
    cout<<" --------------------------------"<<endl;
    for(i = 0;i < 4;i++)
    for(j = 0;j < 3;j++)
    cin>>a[j];

    cout<<" --------------------------------"<<endl;
    cout<<"|    Elements of first array     |"<<endl;
    cout<<" --------------------------------"<<endl;
    for(i = 0;i < 3;i++)
    for(j = 0;j < 4;j++)
    cin>>b[j];

    for(i = 0;i <= 3;i++)
    for(j = 0;j < 3;j++)
    for(k = 0;k <= 3;k++)
    c[j] += (b[k] * a[k][j]);

    cout<<" -----------------------------------------------"<<endl;
    cout<<"|    Elements of resulting array of addition     |"<<endl;
    cout<<" -----------------------------------------------"<<endl;
    for(i = 0;i < 3;i++)
    {
    for(j = 0;j < 3;j++)
    cout<<c[j]<<" ";
    cout<<endl;
    }

    cout<<endl;
    system("pause");
    return 0;
}

كيف أجعل طريقة الإدخال كما في الصورة ؟

012qnire27.jpg

بانتظاركم :)

#2
اقتباس
السلام عليكم

و علیکم السلام...

کان هناک بعض أخطاء صغیرة فی الکود ... فی ضرب المصفوفة مثلا...

#include<iostream>
using namespace std;
int main()
{
	int i,j,k,s=0 ,a[4][3],b[3][4],c[4][4] = {0};

	cout<<" --------------------------------"<<endl;
	cout<<"|	Elements of first array 	|"<<endl;
	cout<<" --------------------------------"<<endl;
	cout<<"   X0 X1 X2"<<endl;
	for(i = 0;i < 4;i++)
	{
		cout<<"Y"<<i<<" ";
		for(j = 0;j < 3;j++)
			cin>>a[j];
	}

	cout<<" --------------------------------"<<endl;
	cout<<"|	Elements of second array 	|"<<endl;
	cout<<" --------------------------------"<<endl;
	cout<<"   X0 X1 X2 X3"<<endl;
	for(i = 0;i < 3;i++)
	{
		cout<<"Y"<<i<<" ";
		for(j = 0;j < 4;j++)
		cin>>b[j];
	}


	for(i=0; i<4;i++)
		for(k = 0; k<4; k++)
			for(j = 0;j < 3;j++)
				c[k] += (b[j][k] * a[j]);

	cout<<" -----------------------------------------------"<<endl;
	cout<<"|	Elements of resulting array of addition 	|"<<endl;
	cout<<" -----------------------------------------------"<<endl;
	for(i = 0; i<4; i++)
	{
		for(j = 0;j < 4;j++)
			cout<<c[j]<<" ";
		cout<<endl;
	}

	cout<<endl;
	system("pause");
	return 0;
}

فی الحقیقة لا أعلم إن هناک طریقة أخری ولکن، أظن یجب علی من یدخل الأرقام ،یدخل بذلک الشکل... کما فی الصورة:

post-232933-058413800 1293470486_thumb.p

المرفقات
debug.png

تم تعديل هذه المشاركة بواسطة C77431 في 27 ديسمبر 2010 في 20:21

1 −1
#3

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

يشكر الاستاذ C77431 على المساعدة :happy: ..

اقتباس

كيف أجعل طريقة الإدخال كما في الصورة ؟

ادخل عناصر الصف الواحد بإستخدام الـ Space , وعند إدخال عناصر الصف الأخر أستخدم الـ Enter .

اتمنى يكون المطلوب و بالتوفيق ,

1

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

#4

@C77431

عند تنفيذ الكود الذي أعطيتني إياه, لا يكون الإدخال كما في الصورة !!!!!

اقتباس
ادخل عناصر الصف الواحد بإستخدام الـ Space , وعند إدخال عناصر الصف الأخر أستخدم الـ Enter .

ممكن مثال لو سمحت ؟

#5
اقتباس
عند تنفيذ الكود الذي أعطيتني إياه, لا يكون الإدخال كما في الصورة !!!!

کما قالت الأستاذة إشراقة فجر، فی الصف الأولی یجب إدخال الأرقام هکذا مثلا:

1 2 3

و بعد هذا أضغط علی enter.

مع هذا الطریق یظهر کما فی الصورة.

حین أنت تکتب 1 2 3 لا تضغط علی enter.

بالتوفیق...

تم تعديل هذه المشاركة بواسطة C77431 في 27 ديسمبر 2010 في 22:36

2
#6

بافتراض اني فهمت قصدك... يمكنك عمل ذلك بمزيد من الجهد

يجب عليك ان تعرف كم مرة قام المستخدم بالضغط على space

لتعرف كم عدد الادخالات في صفوف الماتريكس وبناء على هذا العدد تستطيع اخراج سطر جديد للمستخدم لادخال مدخلات الصف الثاني وهكذا...

استخدم دالة API هذه..

GetAsyncKeyState(VK_MENU);

http://msdn.microsof...28VS.85%29.aspx

http://msdn.microsof...v=VS.85%29.aspx

وربما ستحتاج لاستخدام Clear للشاشة فترة بعد فترة...

تم تعديل هذه المشاركة بواسطة A.S Hack في 28 ديسمبر 2010 في 12:04

" إن الله كتب الإحسان على كل شيء"

::

الإرادة ... تحقق السيادة.

#7

عودا على بدء:

اقتباس
کان هناک بعض أخطاء صغیرة فی الکود ... فی ضرب المصفوفة

عندما راجعت الكود الذي كتبتُه و دققت النظر, وجدت أن الخطأ من عندك !, يمكنن التحقق عن طريق إدخال المصفوفتين التاليتين :

a[4][3] = {{1,2,-1},{2,0,3},{3,1,2},{4,2,1}}
b[3][4] = {{1,2,3,0},{5,-2,0,1},{0,3,2,-1}}

عندها ستكون :

c={{14,5,11},{5,12,-10},{8,0,12}}

اقتباس
بافتراض اني فهمت قصدك... يمكنك عمل ذلك بمزيد من الجهد

يجب عليك ان تعرف كم مرة قام المستخدم بالضغط على space

لتعرف كم عدد الادخالات في صفوف الماتريكس وبناء على هذا العدد تستطيع اخراج سطر جديد للمستخدم لادخال مدخلات الصف الثاني وهكذا...

استخدم دالة API هذه..

GetAsyncKeyState(VK_MENU);

http://msdn.microsof...28VS.85%29.aspx

http://msdn.microsof...v=VS.85%29.aspx

وربما ستحتاج لاستخدام Clear للشاشة فترة بعد فترة...

أشكرك على المساعدة و لكن مستواي الحالي لا يسمح لي بفهم دوال الـ API لأنني ما زلت مسجونا في زنزانة الكونصول ! :blush:

#8
A.S Hack كتب:

بافتراض اني فهمت قصدك... يمكنك عمل ذلك بمزيد من الجهد

يجب عليك ان تعرف كم مرة قام المستخدم بالضغط على space

لتعرف كم عدد الادخالات في صفوف الماتريكس وبناء على هذا العدد تستطيع اخراج سطر جديد للمستخدم لادخال مدخلات الصف الثاني وهكذا...

استخدم دالة API هذه..

GetAsyncKeyState(VK_MENU);

http://msdn.microsof...28VS.85%29.aspx

http://msdn.microsof...v=VS.85%29.aspx

وربما ستحتاج لاستخدام Clear للشاشة فترة بعد فترة...

طریقة رائعة.... أحسنت..

khaled_prg كتب:

عودا على بدء:

عندما راجعت الكود الذي كتبتُه و دققت النظر, وجدت أن الخطأ من عندك !, يمكنن التحقق عن طريق إدخال المصفوفتين التاليتين :

a[4][3] = {{1,2,-1},{2,0,3},{3,1,2},{4,2,1}}
b[3][4] = {{1,2,3,0},{5,-2,0,1},{0,3,2,-1}}

عندها ستكون :

c={{14,5,11},{5,12,-10},{8,0,12}}

أشكرك على المساعدة و لكن مستواي الحالي لا يسمح لي بفهم دوال الـ API لأنني ما زلت مسجونا في زنزانة الكونصول ! :blush:

حسنا...

یا أخی خالد.. فی ضرب المصفوفتین إن کان الأولی هکذا:

a[m][n]

و الثانی هکذا:

b[n][o]

فالنتیجة ستکون هکذا:

c[m][o]

کما أعلم من الریاضیات، فالنتیجة ستکون کما قلتُ و فی مثالک النتیجة ستکون بهذا الشکل:

c[4][4]

و لا

c[3][3]

الآن نضرب ماذا قلت أنت. الجواب هو:

c{{11,-5,1,3},{2,13,12,-3},{8,10,13,-1},{14,7,14,1}}

و فی النهایة أنظر إلی الصورة..

والله أعلم

post-232933-056064600 1293533545_thumb.p

المرفقات
mat.png

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