프로그래밍/③ JSP프로젝트

③ JSP프로젝트-10 m*n 사용자한테 숫자를 받아와서 행렬의곱 만들기 == M * n Get the number from the user and output Matrix multiplication

ronul 2017. 5. 11. 12:34
300x250

 사용자한테 m*n행렬과 a*b행렬을 받아와 현 페이지에 출력 시켜주는 프로그램입니다.

숫자 4자리를 받아오고 submit 버튼을 누르면 칸이 비었는지 확인, 숫자가 아닌지 확인, n과 a가 같은지 확인을 한 후에  곱셈을 출력해주는 프로그램입니다.

A행렬과 B행렬은 숫자 순서대로 +시켜 주었지만 필요하신다면 사용자한테 행렬 안의 값도 받아오게 만들면 좋을것 같습니다.

소스입니다.

 

 

 

 

 

first.jsp 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>행렬의 곱구하기</title>
</head>
<body>
<form name="inputNumber" method="post" action="first.jsp">
<table bordr=1 width=500 cellpadding=5>
<tr><td><input type="text" name="inpNum1">*<input type="text" name="inpNum2">행렬</td></tr>
<tr><td><input type="text" name="inpNum3">*<input type="text" name="inpNum4">행렬</td></tr>
<tr><td>m*n행렬과 i*j행렬을 곱하려면 n과 i가 같아야 합니다.</td></tr>
<tr><td><input type="submit" value="두행렬의 곱 구하기"></td></tr>
</table>
<%
int cnt=1;
try{ 
if(request.getParameter("inpNum1") != "" && request.getParameter("inpNum1") != null &&
   request.getParameter("inpNum2") != "" && request.getParameter("inpNum2") != null &&
   request.getParameter("inpNum3") != "" && request.getParameter("inpNum3") != null &&
   request.getParameter("inpNum4") != "" && request.getParameter("inpNum4") != null) {
   int a = Integer.parseInt(request.getParameter("inpNum1"));
   int b = Integer.parseInt(request.getParameter("inpNum2"));
   int c = Integer.parseInt(request.getParameter("inpNum3"));
   int d = Integer.parseInt(request.getParameter("inpNum4"));
  
   if(b != c){
    out.print("n과 i가 같지 않습니다.");
   }
   else{  
   out.print(a +"*"+a+"정사각 행렬은?<br>");
   int[][] hangA = new int[a][b];
   int[][] hangB = new int[c][d];
   int[][] hangC = new int[a][d];
  
   out.print("A행렬은?<br>");
   for ( int i = 0 ; i < a ; i++ ) {
    out.print("<br>");
    for ( int j = 0 ; j < a ; j++ ) {
     hangA[i][j]=cnt;
     out.print(hangA[i][j]+" ");
        cnt++;
     }
 }
  
   out.print("<br>");
   out.print("B행렬은?<br/>");
   for ( int i = 0 ; i < a ; i++ ) {
    out.print("<br>");
    for ( int j = 0 ; j < a ; j++ ) {
     hangB[i][j]=cnt;
     out.print(hangB[i][j]+" ");
        cnt++;
     }
 }
  
 for ( int i = 0 ; i < a ; i++ ) {
  for ( int j = 0 ; j < d ; j++ ) {
      for ( int k = 0 ; k < b ; k++ ) {
             hangC[i][j] += hangA[i][k]*hangB[k][j];
         }
     }
 }
 
 out.print("<br>");
  out.print("C행렬은?<br/>");
  for ( int i = 0 ; i < a ; i++ ) {
     out.print("<br>");
     for ( int j = 0 ; j < a ; j++ ) {
      out.print(hangC[i][j]+" ");
      }
  }
   }
 
 
}else{
 out.print("숫자를 입력하세요");
}
}catch(Exception e){
 out.print("숫자를 입력하지 않았습니다 다시입력하세요");
}
%>

</body>
</html>

300x250