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

مساعدة في ضرب مصفوفتين

بدأه abuoof في 2 مايو 2008 · 5 رد · 833 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله

السلام عليكم

لو سمحتم ممكن حد يخبرني أين أخطأت في هذا البرنامج وهو برنامج صممته لضرب مصفوفتين تقوم بإدخال أبعاد المصفوفتين ثم تعين عناصر كل مصفوفة فيخرج لك حاصل ضربهماوقد جعلت إدخال عدد أعمدة الأولي هونفسه عدد صفوف الثانية حتي لا يحدث خطأ

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package array;

import javax.swing.*;

/**
 *
 * @author Abuoof
 */
public class Main {

	/**
	 * @param args the command line arguments
	 */
	public static void main(String[] args) {
		int x=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Number Of Raws In THe First Array","combinations",JOptionPane.QUESTION_MESSAGE));
		int y=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Number Of Columns In THe First Array And The Number Of Raws In Second Array","combinations",JOptionPane.QUESTION_MESSAGE)); 
		int w=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Number Of Columns In THe Second Array","combinations",JOptionPane.QUESTION_MESSAGE));
int result[][]=new int [x][w];
	 int A=0,B=0;  
	  int i,j,m,n;
		String output = "The Result Is \n";
	  int[][]first=new int[x][y];
	for(i=0;i<x;i++) {
		for(j=0;j<y;j++)
		{	   
  int p=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter("+i+","+j+")In The Frist Array" ,"combinations",JOptionPane.QUESTION_MESSAGE));
				 first[j]=p;
		}}
			int[][]second=new int [y][w];	  
		 for(n=0;n<y;n++) {
		for(m=0;m<w;m++){
	  int q=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter("+n+","+m+")In The Second Array","combinations",JOptionPane.QUESTION_MESSAGE));
	second[n][m]=q;
		}}
			for(A=0;A<x;A++){
	for(B=0;B<w;B++){	  
	 for(i=0;i<x;i++) {
		   for (n=i;n<w;n++){
		 for(j=B;j<=w;j++){
		   for (m=j;m<=j;m++){


			result[A]+=((first[j])*(second[n][m]));

			}

		}
			 output += result[A] + "   ";

		   }}

	}
			  output += "\n";}
JOptionPane.showMessageDialog(null, output);   
	}
}

وجزاكم الله خير

مدونتي

برمجة وما يتبعها

#2

ستة loops لحساب نتيجة ضرب مصفوفتين !!!!!!!!!!!!!!!!!

الأمر لا يحتاج سوى 3 loops فقط

سنفترض أن المصفوفة الأولى n*m والثانية m*l فيكون الحل كالتالي

for(A=0;A<n;A++)
	for(B=0;B<l;B++)
		for(C=0;c<m;C++)
			result[A]+=first[A][C]*second[C];

من أقوال الأئمة

الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".

الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".

الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".

الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".

علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".

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

#3

جزاك الله خير

ولا تنسانا من دعائك

ولا تستغرب فهو أثر ما شكى منه الشافعي رحمه الله

وبارك الله فيك

مدونتي

برمجة وما يتبعها

#4

أخي متأسف الكود بعد التعديل أصبح يضرب المصفوفتين من المربعتان فقط ولا يمكنه ضرب مثلاًمصفوفة 3*2مع مصفوفة 2*2رغم أنه صالح رياضياً

أرجو الأفادة

وجزاكم الله خير


int x=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Number Of Raws In THe First Array","combinations",JOptionPane.QUESTION_MESSAGE));
int y=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Number Of Columns In THe First Array And The Number Of Raws In Second Array","combinations",JOptionPane.QUESTION_MESSAGE));
int z=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Number Of Columns In THe Second Array","combinations",JOptionPane.QUESTION_MESSAGE));
String output= "The Result Is \n";
int first[][]=new int[x][y];
int second[][]=new int[y][z];
int result[][]=new int[x][z];
int i,j,m,n;
for(i=0;i<x;i++) {
for(j=0;j<y;j++)
{
int p=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter("+i+","+j+")In The Frist Array" ,"combinations",JOptionPane.QUESTION_MESSAGE));
first[j]=p;
}}

for(n=0;n<y;n++) {
for(m=0;m<z;m++){
int q=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter("+n+","+m+")In The Second Array","combinations",JOptionPane.QUESTION_MESSAGE));
second[n][m]=q;
}}


int A=0,B=0;
for( A=0;A<x;A++){
for( B=0;B<y;B++){
for(int C=0;C<z;C++){

result[A]+=first[A][C]*second[C];

}
output += result[A] + " ";
}
output += "\n";}
JOptionPane.showMessageDialog(null, output);

}
}
public static void main(String args[]) {

المشكلة أني لا أعرف سبب المشكلة

مدونتي

برمجة وما يتبعها

#5

تأكد من أبعاد المصفوفتين جيدا ينبغي أن يكون عدد الأعمدة في الأولى مساويا لعدد الصفوف في الثانية

من أقوال الأئمة

الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".

الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".

الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".

الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".

علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".

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

#6

:mellow:

باسم الموجي كتب:
تأكد من أبعاد المصفوفتين جيدا ينبغي أن يكون عدد الأعمدة في الأولى مساويا لعدد الصفوف في الثانية

لقد قمت بفعل هذا من البداية

اقتباس
وقد جعلت إدخال عدد أعمدة الأولي هونفسه عدد صفوف الثانية حتي لا يحدث خطأ

جزاك الله خير

الحمد لله قد انتهيت منه وكوده كالتالي

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package array;

import javax.swing.*;

/**
 *
 * @author Abuoof
 */
public class Main {

	/**
	 * @param args the command line arguments
	 */
	public static void main(String[] args) {

	 int x=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Number Of Raws In THe First Array","combinations",JOptionPane.QUESTION_MESSAGE));
		int y=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Number Of Columns In THe First Array And The Number Of Raws In Second Array","combinations",JOptionPane.QUESTION_MESSAGE)); 
		int w=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Number Of Columns In THe Second Array","combinations",JOptionPane.QUESTION_MESSAGE));
int result[][]=new int [x][w];
	 int A=0,B=0;  
	  int i,j,m,n;
		String output = "The Result Is \n";
	  int[][]first=new int[x][y];
	for(i=0;i<x;i++) {
		for(j=0;j<y;j++)
		{	   
  int p=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter("+i+","+j+")In The Frist Array" ,"combinations",JOptionPane.QUESTION_MESSAGE));
				 first[j]=p;
		}}
			int[][]second=new int [y][w];	  
		 for(n=0;n<y;n++) {
		for(m=0;m<w;m++){
	  int q=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter("+n+","+m+")In The Second Array","combinations",JOptionPane.QUESTION_MESSAGE));
	second[n][m]=q;
		}}

			for(A=0,i=0;A<x;i++,A++){
	for (m=0,B=0;m<w;B++,m++){
		 for(j=0,n=0;j<y;n++,j++){

			result[A]+=((first[j])*(second[n][m]));
			  }
 output += result[A] + "   ";
		   }

			  output += "\n";}
JOptionPane.showMessageDialog(null, output);	 


	}
}

مدونتي

برمجة وما يتبعها

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