تفضلو صفحة المكتبة على موقعي ، طبعا المكتبة تضيف نوع جديد من نوع Matrix ، حيث انك تقدر بسهولة تجمع و تطرح و تضرب مصفوفات :) و مزايا عديدة :)
الصفحة بالإنجليزي و تحتوي على شرح مصور لكيفية ربط المكتبة ، بس طبعا بالإنجليزي :)
تفضلو صفحة المكتبة على موقعي ، طبعا المكتبة تضيف نوع جديد من نوع Matrix ، حيث انك تقدر بسهولة تجمع و تطرح و تضرب مصفوفات :) و مزايا عديدة :)
الصفحة بالإنجليزي و تحتوي على شرح مصور لكيفية ربط المكتبة ، بس طبعا بالإنجليزي :)
IDE : Microsoft Visual Studio 2005 Pro
انا ارفقت الملف المظغوط ، فيه الصفحة (الـ documentation) و فيه الملف المضغوط اللي يحتوي على الهيدر و المكتبة :)
IDE : Microsoft Visual Studio 2005 Pro
هل الكود مهم لهذه الدرجة حتى يكون مخفي ؟ :) رأيت العديد من البرامج التي تتعامل مع المصفوفات مفتوحة المصدر . وطبعاً هذا من حقك ولا اعترض عليه نهائياً لكن هناك احتمال ان تجد النصح و التنبيه على الاخطاء من قبل الاعضاء هنا . بالتوفيق اخي Ferrum وان شاء الله نشوفك من أفضل البرمجين باذن الله :)
السلام عليكم
شكرا أخي على الموضوع ولي بعض الملاحظات إذا سمحت
1. إضافة مكتبة .hو.lib لا يكون بتلك الطريقة
هل هي ثغرت في الفيزوال ستوديو من إكتشافك!!! :DاقتباسNote: if you get warning message about adding new type, don't worry, cancel it for now.
إذا أردت إضافة مكتباتك إذهب إلى
اقتباسproject properties-> C/C++->General->Additional Include Directories
ثم حدد المجلد الذي فيه الملف .h
ثم إذهب إلى
اقتباسproject properties-> Linker ->General->Additional library Directories
ثم حدد المجلد الذي يحتوي الملف .lib
2. هناك دالة إسمها GetLastError موجودة فيwindows.h لتحديد الإستثناآت وبذلك مكتبتك لن ترجع الخطأ التالي عند جمع مصفوفتين بحجمين مختلفين
اقتباسError with dimensions . The matrice is
is what????????
3. ماذا لو أردت جمع مصفوفتين 100*100
4. ماذا لو أرت قسمة مصفوفة على أخرى أو البحث على eighenvalues ....
أما المحتاجين لكود هذه المكتبة فهذه لمحة سريعة عن محتواها ومستعد لأوفر الكود كامل لمن يحتاجه
build
void build()
{/* populate the matrix*/
for (i = 0; i < NbrLines; i++)
{
for (j = 0; j < NbrColumns; j++)
{ printf("please write the element[%d][%d]",i,j);
scanf("%d",&matrix[j]);
}
}
}void print()
{
for (i = 0; i < NbrLines; i++)
{ for (j = 0; j < NbrColumns; j++)
{printf("matrice[%d][%d]=%d\n",i,j,matrix[j]);}
}
}Addition
void addition(int matrix1[l1][c1],int matrix2[l2][c2])
{
if((l1==l2)||(c1 ==2))
{
//-polpulate matrix1-----------
for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
{ printf("please write the element[%d][%d]",i,j);
scanf("%d",&matrix1[j]);
}
}
//--- Populate matrix2----------
for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
{ printf("please write the element[%d][%d]",i,j);
scanf("%d",&matrix2[j]);
}
}
//------ compute and show the sum ---------
for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
{printf("matrice[%d][%d]=%d\n",i,j,matrix1[j]+matrix2[j]);}
}
}
else {printf("Matrixes should have the same dimensions");}
}تذكر يا أخي Ferrumأنك في منتدى الفريق العربي للبرمجة وليست عند البقال إضافة إلى ذلك نحن مستعدين لتعليمك قبل أن تفكر في أن تبيعنا مكتباتك.
وقبل أن أختم. رجاأ أبلغ سلامي ل Frank Luna :D
هل تم استخدام الـ Dynamic Programming algorithms لضرب المصفوفات ؟
وبالنسبة للجمع ما هي انواع الخوارزميات المستعملة في المكتبة يعني فيه خوارزميات تكون optimal هل تم استخدامها ؟
شاكر لك....
بصراحة اخر حاجة أي حد يفكر فيها هي كتابة مكتبة للرياضيات الخطية linear algebra بوجه عام. أنا لم أختبر مكتبتك بعد لكن بمجرد البحث في الملف المرفق لم أجد أي ذكر للمصفوفات الكثيفة و المخلخلة sparse, dense
و بمنتهى الصراحة لا يمكنك أت تطلق عليها مكتبة ما لم تدعم هاذين النوعين- ثم أين مصفوفة الصفر و الوحدة لا يعقل أن يتم تكوينهما كل مرة هذا سيحدث بطء رهيب الافضل أن يكونوا static members
المكتبة بوجه عام تفتقر الى اساسيات العمليات فى علم الرياضيات الخطية linear algebra
اقرأ GNU Scientific Library
http://www.math.utah.edu/software/gsl/gsl-ref_toc.html
و كذلك الكتاب الرائع Numerical Recipes لو أنت في القاهرة أعتقد أني عندي النسخة من الكتاب بال Fortran
Ben_Laiid كتب:السلام عليكمشكرا أخي على الموضوع ولي بعض الملاحظات إذا سمحت
1. إضافة مكتبة .hو.lib لا يكون بتلك الطريقة
هل هي ثغرت في الفيزوال ستوديو من إكتشافك!!! :D
إذا أردت إضافة مكتباتك إذهب إلى
ثم حدد المجلد الذي فيه الملف .h
ثم إذهب إلى
ثم حدد المجلد الذي يحتوي الملف .lib
2. هناك دالة إسمها GetLastError موجودة فيwindows.h لتحديد الإستثناآت وبذلك مكتبتك لن ترجع الخطأ التالي عند جمع مصفوفتين بحجمين مختلفين
is what????????
3. ماذا لو أردت جمع مصفوفتين 100*100
4. ماذا لو أرت قسمة مصفوفة على أخرى أو البحث على eighenvalues ....
أما المحتاجين لكود هذه المكتبة فهذه لمحة سريعة عن محتواها ومستعد لأوفر الكود كامل لمن يحتاجه
build
void build() {/* populate the matrix*/ for (i = 0; i < NbrLines; i++) { for (j = 0; j < NbrColumns; j++) { printf("please write the element[%d][%d]",i,j); scanf("%d",&matrix[j]); } } }void print() { for (i = 0; i < NbrLines; i++) { for (j = 0; j < NbrColumns; j++) {printf("matrice[%d][%d]=%d\n",i,j,matrix[j]);} } }Addition
void addition(int matrix1[l1][c1],int matrix2[l2][c2]) { if((l1==l2)||(c1 ==2)) { //-polpulate matrix1----------- for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { printf("please write the element[%d][%d]",i,j); scanf("%d",&matrix1[j]); } } //--- Populate matrix2---------- for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { printf("please write the element[%d][%d]",i,j); scanf("%d",&matrix2[j]); } } //------ compute and show the sum --------- for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) {printf("matrice[%d][%d]=%d\n",i,j,matrix1[j]+matrix2[j]);} } } else {printf("Matrixes should have the same dimensions");} }تذكر يا أخي Ferrumأنك في منتدى الفريق العربي للبرمجة وليست عند البقال إضافة إلى ذلك نحن مستعدين لتعليمك قبل أن تفكر في أن تبيعنا مكتباتك.
وقبل أن أختم. رجاأ أبلغ سلامي ل Frank Luna :D
اخوي الخطوات اللي انا حاطها تشتغل و انا مجربها :)
و بعدين مو قال اني بايع المكتبة :s انا اصلا قلت حق كل ربعي ، بعد ما اخلص من النسخة بحط السورس الكود بس الله يهداك كليتني اكال بكلامك :)
و بعدين الكود اللي حاطه "مع ان انا مو خبير C" ما اشوفه يسأل المستخدم لإدخال ابعاد المصفوفة و جعلها مصفوفة ثنائية الأبعاد ديناميكية ، و ما شفتك تحط فنكشن الـ Multiplication (ما تعرفه؟؟)
على العموم مشكورين على ردودكم
تم تعديل هذه المشاركة بواسطة Ferrum في 7 مايو 2007 في 00:29
IDE : Microsoft Visual Studio 2005 Pro
NullFlag كتب:هل تم استخدام الـ Dynamic Programming algorithms لضرب المصفوفات ؟وبالنسبة للجمع ما هي انواع الخوارزميات المستعملة في المكتبة يعني فيه خوارزميات تكون optimal هل تم استخدامها ؟
شاكر لك....
نعم تم استخدام Dynamic Programming و انا جربت البرنامج على Profiler و مافيه memory leaks :)
و لم استخدم اي خوارزميات من اي مكتبات ، انا كتبته بمساعدة المدرس :)
IDE : Microsoft Visual Studio 2005 Pro
Dynamic Programming algorithms != Dynamic Allocation
:)
فيه فرق اخوي يوم تقول memory leaks الداينمك بروقرامينق هي approach معينه زي مثلا الـ Divide and Conquer algorithms :)
http://en.wikipedia.org/wiki/Chain_matrix_multiplication
فمان الله ...
السلام عليكم
اقتباسو بعدين الكود اللي حاطه "مع ان انا مو خبير C" ما اشوفه يسأل المستخدم لإدخال ابعاد المصفوفة و جعلها مصفوفة ثنائية الأبعاد ديناميكية ، و ما شفتك تحط فنكشن الـ Multiplication (ما تعرفه؟؟)
لقد قلت أني مستعد لتوفير الكود كامل لمن يريده. وما كتبته كان عبارة على لمحة سريعة لبعض محتويات الكود
اقتباساخوي الخطوات اللي انا حاطها تشتغل و انا مجربها
ليس هناك أي مانع في تقبل ملاحظات الآخرين والأخذ بها بل هي ميزة جيدة
اقتباساخوي الخطوات اللي انا حاطها تشتغل و انا مجربها
لا تعاند يا أخي وأتبع الطريقة الصحيحة ثم أضف الى الكود
#pragma comment(lib, "matrix.lib")
من حقك يا أخي أن تفكر بأسلوب تجاري وتبيع مكتبتك وأضن أن ردود نا قد بينت لك نقائص مكتبتك لا أكثر.
لا تأخذ ملاحظاتنا و ردوودنا بشكل سلبي بل هي لفائدتك ووضعك في المسار الصحيح أكثر من كونها إستنقاص لعملك.
والسلام عليكم
في إنتظار مشاركاتك يا أخي Ferrum ومرحبا بك بيننا :)
اخوي انت ليش ماسك علي "تبيع تبيع" ، بالله عليك انا قلت ببيعها :s انا رفعتها عشان الناس تجربها و تعطيني رايهم فيها. و انت ذابحنا بالبيع
على العموم مشكور على ردك، و على يوم راح اشرح الكود :)
IDE : Microsoft Visual Studio 2005 Pro
هذا الموضوع مغلق.