Guest User

Untitled

a guest
Jul 18th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. package hausaufgabe5.la;
  2.  
  3. import java.io.IOException;
  4. import java.util.NoSuchElementException;
  5. import java.util.Scanner;
  6.  
  7. public final class Matrix {
  8.  
  9. private double[][] m;
  10. private int zeilenZahl;
  11. private int spaltenZahl;
  12. private double determinante;
  13.  
  14. public Matrix(int zeilenZahl, int spaltenZahl){
  15. m = new double[zeilenZahl][spaltenZahl];
  16. }
  17. public Matrix(Scanner scan) throws IOException {
  18. String inputLine;
  19. try {
  20. inputLine = scan.nextLine();
  21. zeilenZahl = Integer.parseInt(inputLine);
  22. inputLine = scan.nextLine();
  23. spaltenZahl = Integer.parseInt(inputLine);
  24. m = new double[zeilenZahl][spaltenZahl];
  25.  
  26. for (int i = 0; i < zeilenZahl; i++) {
  27. inputLine = scan.nextLine();
  28. String[] lineTokens = inputLine.split("\\s+");
  29. for (int j = 0; j < spaltenZahl; j++){
  30. m[i][j] = Double.parseDouble(lineTokens[j]);
  31. }
  32. }
  33. } catch (NumberFormatException e) {
  34. throw new IOException("Ungueltiger Dateiinhalt");
  35. } catch (NoSuchElementException e) {
  36. throw new IOException("Ungueltiger Dateiinhalt");
  37. }
  38. }
  39. public double determinante() throws IllegalStateException{
  40. zeilenZahl = getZeilenZahl();
  41. spaltenZahl = getSpaltenZahl();
  42. if(zeilenZahl == 1 && spaltenZahl == 1){
  43. determinante = m[0][0];
  44. return determinante;
  45. } else {
  46. int pot = -1;
  47. for(int i = 0; i < zeilenZahl; i++){
  48. pot *= -1;
  49. determinante += coMatrix(i).determinante()*m[i][0]*pot;
  50. }
  51. return determinante;
  52. }
  53. }
  54. private Matrix coMatrix(int x) throws IllegalArgumentException {
  55. zeilenZahl = getZeilenZahl();
  56. spaltenZahl = getSpaltenZahl();
  57. Matrix coMatrix = new Matrix(zeilenZahl-1, spaltenZahl-1);
  58. int f = -1;
  59. for(int g = 0; g < zeilenZahl; g++){
  60. if(g==x){
  61. continue;
  62. }
  63. f++;
  64. for(int h = 0; h < spaltenZahl-1; h++){
  65. coMatrix.m[f][h] = m[g][h+1];
  66. }
  67. }
  68. return coMatrix;
  69. }
  70. public int getZeilenZahl() {
  71. int zeilenZahl=m.length;
  72. return zeilenZahl;
  73. }
  74. public int getSpaltenZahl() {
  75. int spaltenZahl=m[0].length;
  76. return spaltenZahl;
  77. }
  78. }
Add Comment
Please, Sign In to add comment