Files
webfejlesztes/javascript/matrixok/script.js
2022-05-30 16:53:05 +02:00

160 lines
5.2 KiB
JavaScript

let matrix1 = [];
let matrix1_meret = [];
let matrix2 = [];
let matrix2_meret = [];
function matrixBekeres(){
try {
let input = prompt("Adja meg az első mátrix méretét [AxB] formában");
input = input.trim();
if(input != null || input != ""){
let sp = input.split("x");
sp[0] = sp[0].replace("-", "");
sp[1] = sp[1].replace("-", "");
if(sp[0] == undefined || sp[1] == undefined) throw "Az adat rosszul lett megadva";
if(sp[0] == "0" || sp[1] == "0"){
do{
let input = prompt("Adja meg az első mátrix méretét [AxB] formában");
input = input.trim();
input = input.replace("-", "");
sp = input.split("x");
}while(sp[0] == "0" || sp[1] == "0");
}else{
matrix1_meret[0] = parseInt(sp[0]);
matrix1_meret[1] = parseInt(sp[1]);
}
//document.getElementById("matrix1").innerText = sp[0] + " " + sp[1];
}else{
throw "Nem adott meg adatot";
}
input = prompt("Adja meg a második mátrix méretét [AxB] formában");
input = input.trim();
if(input != null || input != ""){
let sp = input.split("x");
sp[0] = sp[0].replace("-", "");
sp[1] = sp[1].replace("-", "");
if(sp[1] == undefined) throw "Az adat rosszul lett megadva";
if(sp[0] == "0" || sp[1] == "0"){
do{
let input = prompt("Adja meg az első mátrix méretét [AxB] formában");
input = input.trim();
input = input.replace("-", "");
sp = input.split("x");
}while(sp[0] == "0" || sp[1] == "0");
}else{
matrix2_meret[0] = parseInt(sp[0]);
matrix2_meret[1] = parseInt(sp[1]);
}
//document.getElementById("matrix2").innerText = sp[0] + " " + sp[1];
}else{
throw "Nem adott meg adatot";
}
} catch (error) {
document.getElementById("matrix1").innerText = "a program hibaba futott";
matrixBekeres();
}
matrixElemekBekeres();
}
function matrixEgyezesVizsgalat(){
if(!(matrix1_meret[1] === matrix2_meret[0])){
console.log("A ket matrixban nem egyezik a ket legkozelebbi szam!");
return false;
}
return true;
}
function matrixElemekBekeres(){
if(!matrixEgyezesVizsgalat()) return;
let input;
let arr = [];
alert("Adja meg az elso matrix elemeit!");
//matrix1 bekerese
for (let i = 0; i < matrix1_meret[0]; i++) {
alert("Adja meg az " + (i+1) + ". sor elemeit");
for (let j = 0; j < matrix1_meret[1]; j++) {
input = prompt("Adja meg az matrix " + (j+1) + ". elemet");
arr[j] = parseInt(input);
}
matrix1[i] = arr;
console.log("Matrix1: " + matrix1[i]);
}
arr = [];
input = null; //ertekek lenullazasa, hogy ne maradjon adat az elozobol
alert("Adja meg a masodik matrix elemeit!");
//matrix2 bekerese
for (let i = 0; i < matrix2_meret[0]; i++) {
alert("Adja meg az " + (i+1) + ". sor elemeit");
for (let j = 0; j < matrix2_meret[1]; j++) {
input = prompt("Adja meg az matrix " + (j+1) + ". elemet");
arr[j] = parseInt(input);
}
matrix2[i] = arr;
console.log("Matrix2: " + matrix2[i]);
}
matrixSzamolas();
}
function matrixSzamolas(){
if(!matrixEgyezesVizsgalat()) return;
let eredmeny_matrix = [];
let arr = [];
let sum = 0;
for (let i = 0; i < matrix1_meret[1]; i++) {
for (let j = 0; j < matrix2_meret[0]; j++) {
for (let k = 0; k < matrix1_meret[0]; k++) {
sum += matrix1[0][k] * matrix2[k][0];
}
arr[j] = sum;
sum = 0;
}
eredmeny_matrix[i] = arr;
console.log(eredmeny_matrix[i]);
}
matrixKiiras();
}
function matrixKiiras(){
let matrix1_container = document.getElementById("matrix1");
let matrix2_container = document.getElementById("matrix2");
for (let i = 0; i < matrix1.length; i++) {
let sor = document.createElement("div");
sor.setAttribute("class", "sor");
for (let j = 0; j < matrix1[i].length; j++) {
console.log("Matrix elem: " + matrix1[i][j]);
let elem = document.createElement("div");
elem.setAttribute("class", "elem");
let text = document.createTextNode(matrix1[i][j]);
elem.appendChild(text);
sor.appendChild(elem);
}
matrix1_container.appendChild(sor);
}
for (let i = 0; i < matrix2.length; i++) {
let sor = document.createElement("div");
sor.setAttribute("class", "sor");
for (let j = 0; j < matrix2[i].length; j++) {
let elem = document.createElement("div");
elem.setAttribute("class", "elem");
let text = document.createTextNode(matrix2[i][j]);
elem.appendChild(text);
sor.appendChild(elem);
}
matrix2_container.appendChild(sor);
}
}