Calc
My small calc
by Sova
HTML
<div id="result"></div>
<div id="test"></div>
<form id="matrix">
<input type="number" id="0_0" class="inputi" oninput='check(0,0);'>
<input type="number" id="res0" class="inputi" oninput='kramm[0]=this.value;'>
<div id="cres0" class="cress"></div>
</form>
<div id="buts">
<div id="crbut" class="buttons" onclick="kram();">Kram</div>
<div id="E" onclick="napoln(matrix,1);" class="buttons">E</div>
<div id="zero" onclick="napoln(matrix,0);"class="buttons">ZERO</div>
<div id="plus" onclick="matadd(matrix);addnum();" class="buttons">+</div>
<div id="min" onclick="matrm(matrix);removenum();" class="buttons">-</div>
<div id="transp" onclick="paint(transp(matrix),'test');" class="buttons">T</div>
<div id="obr" onclick="paint(obrmatr(matrix),'test');" class="buttons">Obr</div>
<div id="pere" onclick="napoln(matrix,pmatr);" class="buttons">←</div>
</div>
CSS
#result {
position: absolute;
text-align: center;
color: #b33737;
font-size: 16vw;
left: 0;
top: 0;
width: 250px;
height: 450px;
border-radius: 20%;
background-color: #262626;
}
#transp {
left: 100px;
top: 50px;
width: 50px;
}
#crbut {
width: 50px;
left: 100px;
position: absolute;
font-size: 3vw;
text-align: center;
}
.cress{
position: absolute;
text-align: center;
color: red;
left: 280px;
top: 0;
background-color: gray;
width: 30px;
font-size: 3vw;
height: 20px;
border-radius: 20%;
}
#test {
position: absolute;
left: 250px;
top: 0;
border: solid;
border-width: 1px;
}
#area {
position: absolute;
border: solid;
left: 0;
top: 0;
color: red;
}
#matrix {
position: absolute;
left: 0;
top: 130px;
}
.inputi {
position: absolute;
height: 20px;
width: 30px;
}
#buts{
position: absolute;
top: 300px;
left: 75px;
}
.buttons{
position: absolute;
border-radius: 20%;
background-color: orange;
width: 50px;
height: 50px;
color: black;
font-size: 6vw;
text-align: center;
}
#min{
top: 100px;
}
#plus{
left: 50px;
top: 100px;
}
#zero{
top: 50px;
width: 100px;
font-size: 5vw;
}
#res0 {
left: 250px;
}
#E{
width: 100px;
}
.block {
position: absolute;
font-size: 2vw;
height: 20px;
width: 50px;
text-align: center;
color: red;
}
#obr {
left: 100px;
top: 100px;
font-size: 4vw;
}
#pere {
left: -50px;
}
JavaScript
var det = 0;
function matrix3(matr) {//Готово
var result = ((matr[0][0]*matr[1][1]*matr[2][2])+(matr[1][0]*matr[2][1]*matr[0][2])+(matr[0][1]*matr[1][2]*matr[2][0]))-((matr[0][2]*matr[1][1]*matr[2][0])+(matr[1][0]*matr[0][1]*matr[2][2])+(matr[0][0]*matr[2][1]*matr[1][2]));
return result;
}
function matrixmore (matr) {
var result;
if (matr.length ==1) {result = matr[0][0];}
else if (matr.length == 2) { result = matr[0][0]*matr[1][1]-matr[0][1]*matr[1][0];}
else if (matr.length == 3) {
result = matrix3(matr);
}
else {
result=0;
for (var i=0;i<matr.length;i++){
result += Math.pow(-1,i)*matr[0][i]*matrixmore(minor(matr,i,0));
}
}
return result;
}
function matcreate(r) {//Готово
var result = [r];
//var result = [[0]];
for (var i=0;i<r;i++) {
//result.push([r]);
result[i] = [r];
}
return result;
}
function minor(mat,x,y) { //Готово
var result = matcreate(mat.length-1);
var l = 0;
for (var i=0;i<mat.length;i++){
if (y!=i){
var m=0;
for(var im=0;im<mat.length;im++){
if (x!=im) {
result[l][m]=mat[i][im];
m++;
}
}
l++;
}
}
return result;
}
function testmatrix(m) {
var div = getId('result');
var l = m.length;
var state = 0;
for (var i=0;i<l;i++) {
if (m[i].length != l) {state = 1;}
}
if (state) {
div.innerHTML = 'Error matrix';
} else {
det = matrixmore(m);
div.innerHTML = det;
}
}
var lastm = 0;
function getVal(x,y) {
return getId(x+'_'+y).value;
}
function getId(id) {
return document.getElementById(id);
}
function napoln(m,s) { //Заполнение матрицы числом
if (typeof(s) == "number") {
for(var i = 0;i<m.length;i++) {
for(var l = 0;l<m.length;l++) {
getId(l+"_"+i).value = s;
m[i][l] = s;
}
}
}
else {
for(var i = 0;i<m.length;i++) {
for(var l = 0;l<m.length;l++) {
if (!(typeof(s[i][l]) == "object")) {
getId(l+"_"+i).value = s[i][l];
m[i][l] = s[i][l];
}
else {
getId(l+"_"+i).value = s[i][l].printnum();
m[i][l] = s[i][l].printnum();
}
}
}
}
testmatrix(m);
}
var matrix = [[0]];
function matadd(mat) {
for (var i=0;i<mat.length;i++)...