Kaynağa Gözat

added carry to check if result is correct

Bernadette Elena Hammerle 3 yıl önce
ebeveyn
işleme
d8b86db501
1 değiştirilmiş dosya ile 15 ekleme ve 12 silme
  1. 15 12
      src/App.js

+ 15 - 12
src/App.js

@@ -75,7 +75,7 @@ function App() {
   const addNumbersToDiv = (numbers, noOfDigits) => {
     for (let idx in numbers){
       let no = numbers[idx].join("")
-      if(idx == numbers.length-1){
+      if(idx===numbers.length-1){
         no = "+ " + no
       }
       let pNo = "<p>" + no + "</p>"
@@ -205,7 +205,7 @@ function App() {
         labelText += no;
 
         if (parseInt(n) === numbers.length - 1){
-          if(typeof carryArr[imdtResIdx+1] !== "undefind" && carryArr[imdtResIdx+1] > 0){
+          if(carryArr[imdtResIdx+1]!=="undefind" && carryArr[imdtResIdx+1] > 0){
             labelText += " + " + carryArr[imdtResIdx+1].toString();
           }
           labelText += " = ";
@@ -258,29 +258,31 @@ function App() {
 
     let carries = carryArr.map(x => x || "0")
     carries.push("0");
-    while(carries.length < carries.length){
+    while(carries.length < resArr.length){
       carries.unshift("0"); // add "0" before
     }
 
-    let noOfDigits = resArr.length - 1;
     let foundComma = false;
     for (let i=0; i<resArr.length-1; i++) {
       let text = "";
       let trueNumbers = false;
       let idxNumbers = resArr.length - i - 1;
       let idxCarry = carries.length - i - 1;
+      let realSum = 0;
       for (let j=0; j<numbers.length; j++) {
-        if (numbers[j][idxNumbers] != "." && numbers[j][idxNumbers] != "&nbsp;"){
+        let no = numbers[j][idxNumbers];
+        if (no!=="." && no!=="&nbsp;"){
           trueNumbers = true;
+          realSum += parseInt(no);
         }
-        text += numbers[j][idxNumbers]
+        text += no
         if (j<numbers.length-1){
           text += " + "
         }
       }
 
       // ignore indexes without real digits
-      if (resArr[idxNumbers] != "&nbsp;" || carries[idxCarry] != "&nbsp;"){
+      if (resArr[idxNumbers]!=="&nbsp;" || carries[idxCarry]!=="&nbsp;"){
         trueNumbers = true;
       }
 
@@ -294,18 +296,19 @@ function App() {
       }
 
       // add carry only if > 0
-      if (carries[idxCarry] != "0"){
+      if (carries[idxCarry]!=="0"){
+        realSum += parseInt(carries[idxCarry]);
         text += " + " + carries[idxCarry] + " Übertrag"
       }
 
+      let realCarry = parseInt(realSum/10).toString()
+      realSum = (realSum % 10).toString()
       text += " = "
 
-      if (!trueNumbers){
-        noOfDigits =- 1;
-      }else{
+      if (trueNumbers){
         text += resArr[idxNumbers]
         text = text.replace("&nbsp;", "0")
-        text += resArr[idxNumbers] === realResArr[idxNumbers] ? "\t\tRichtig" : "\t\tFalsch";
+        text += resArr[idxNumbers]===realSum && carries[idxCarry-1]===realCarry ? "\t\tRichtig" : "\t\tFalsch";
 
         let paragraph = document.createElement("p");
         paragraph.innerHTML = text