public bool Calculate() { int DividendQua = 0; int DivisorQua = 0; if (!Serviсe.CheckNumber(Dividend, Divisor)) { return(false); } return(false); }
public bool Calculate() { Stage Stage1; bool MinuendNegative = false; bool SuBtractionNegative = false; bool NegativeTemp; int MinuendQua = 0; int MinuendQuaBefComma = 0; int MinuendQuaAftComma = 0; int SuBtractionQua = 0; int SuBtractionQuaBefComma = 0; int SuBtractionQuaAftComma = 0; int MaxBefComma = 0; int MaxAftComma = 0; int index = 0; if (!Logic) { if (!Serviсe.CheckNumber(Minuend, SuBtraction)) { return(false); } MinuendQua = Serviсe.StringNumberQua(Minuend); SuBtractionQua = Serviсe.StringNumberQua(SuBtraction); if (MinuendQua > SuBtractionQua) { MinuendM = new double[MinuendQua]; SuBtractionM = new double[MinuendQua]; } else { MinuendM = new double[SuBtractionQua]; SuBtractionM = new double[SuBtractionQua]; } Serviсe.StringToMass(Minuend, MinuendM, MinuendQua, MinuendNegative); Serviсe.StringToMass(SuBtraction, SuBtractionM, SuBtractionQua, SuBtractionNegative); } MinuendQuaBefComma = Serviсe.NumberQuaBeforeComma(MinuendM); MinuendQuaAftComma = Serviсe.NumberQuaAfterComma(MinuendM); SuBtractionQuaBefComma = Serviсe.NumberQuaBeforeComma(SuBtractionM); SuBtractionQuaAftComma = Serviсe.NumberQuaAfterComma(SuBtractionM); if (Logic) { MinuendQua = MinuendQuaBefComma + MinuendQuaAftComma; if (MinuendQuaAftComma > 0) { MinuendQua++; } SuBtractionQua = SuBtractionQuaBefComma + SuBtractionQuaAftComma; if (SuBtractionQuaAftComma > 0) { SuBtractionQua++; } } MaxBefComma = Serviсe.MaxNumber(MinuendQuaBefComma, SuBtractionQuaBefComma); MaxAftComma = Serviсe.MaxNumber(MinuendQuaAftComma, SuBtractionQuaAftComma); index = MaxAftComma + MaxBefComma; if (MaxAftComma > 0) { index++; } if (index > MinuendM.Length) { MinuendMtemp = new double[index]; SuBtractionMtemp = new double[index]; if (MaxAftComma > MinuendQuaAftComma) { MinuendM.CopyTo(MinuendMtemp, 0); SuBtractionM.CopyTo(SuBtractionMtemp, index - SuBtractionM.Length); } else { SuBtractionM.CopyTo(SuBtractionMtemp, 0); MinuendM.CopyTo(MinuendMtemp, index - MinuendM.Length); } MinuendM = new double[index]; SuBtractionM = new double[index]; MinuendMtemp.CopyTo(MinuendM, 0); SuBtractionMtemp.CopyTo(SuBtractionM, 0); } MinuendMtemp = new double[index]; SuBtractionMtemp = new double[index]; if (Serviсe.NumberCorrect(MinuendM, SuBtractionM, MinuendMtemp, SuBtractionMtemp, MinuendQua, SuBtractionQua)) { MinuendM = MinuendMtemp; SuBtractionM = SuBtractionMtemp; } Stage1 = new Stage(index); if (Serviсe.NumberCompare(MinuendM, SuBtractionM, MinuendNegative, SuBtractionNegative) == 2) { SuBtractionMtemp = new double[index]; MinuendMtemp = new double[index]; MinuendM.CopyTo(SuBtractionMtemp, 0); SuBtractionM.CopyTo(MinuendMtemp, 0); MinuendM = MinuendMtemp; SuBtractionM = SuBtractionMtemp; NegativeTemp = MinuendNegative; MinuendNegative = SuBtractionNegative; SuBtractionNegative = NegativeTemp; Stage1.AnswerNegative = true; } MinuendM.CopyTo(Stage1.NumberOne, 0); SuBtractionM.CopyTo(Stage1.NumberTwo, 0); Stage1.NumberOneNegative = MinuendNegative; Stage1.NumberTwoNegative = SuBtractionNegative; for (int i = index - 1; i >= 0; i--) { if (MinuendM[i] == 0.5 || SuBtractionM[i] == 0.5) { Stage1.Answer[i] = 0.5; continue; } if (MinuendM[i] - SuBtractionM[i] < 0) { Stage1.Answer[i] = 10 + MinuendM[i] - SuBtractionM[i]; if (MinuendM[i - 1] != 0.5 && SuBtractionM[i - 1] != 0.5) { MinuendM[i - 1]--; } else { MinuendM[i - 2]--; } continue; } Stage1.Answer[i] = MinuendM[i] - SuBtractionM[i]; } StageSubtraction.Add(Stage1); return(true); }
public bool Calculate() { Stage Stage1; bool AddendOneNegative = false; bool AddendTwoNegative = false; int AddendOneQua = 0; int AddendOneQuaBefComma = 0; int AddendOneQuaAftComma = 0; int AddendTwoQua = 0; int AddendTwoQuaBefComma = 0; int AddendTwoQuaAftComma = 0; int MaxBefComma = 0; int MaxAftComma = 0; int index = 0; if (!Logic) { if (!Serviсe.CheckNumber(AddendOne, AddendTwo)) { return(false); } AddendOneQua = Serviсe.StringNumberQua(AddendOne); AddendTwoQua = Serviсe.StringNumberQua(AddendTwo); if (AddendOneQua > AddendTwoQua) { AddendOneM = new double[AddendOneQua]; AddendTwoM = new double[AddendOneQua]; } else { AddendOneM = new double[AddendTwoQua]; AddendTwoM = new double[AddendTwoQua]; } Serviсe.StringToMass(AddendOne, AddendOneM, AddendOneQua, AddendOneNegative); Serviсe.StringToMass(AddendTwo, AddendTwoM, AddendTwoQua, AddendTwoNegative); } AddendOneQuaBefComma = Serviсe.NumberQuaBeforeComma(AddendOneM); AddendOneQuaAftComma = Serviсe.NumberQuaAfterComma(AddendOneM); AddendTwoQuaBefComma = Serviсe.NumberQuaBeforeComma(AddendTwoM); AddendTwoQuaAftComma = Serviсe.NumberQuaAfterComma(AddendTwoM); if (Logic) { AddendOneQua = AddendOneQuaBefComma + AddendOneQuaAftComma; if (AddendOneQuaAftComma > 0) { AddendOneQua++; } AddendTwoQua = AddendTwoQuaBefComma + AddendTwoQuaAftComma; if (AddendTwoQuaAftComma > 0) { AddendTwoQua++; } } MaxBefComma = Serviсe.MaxNumber(AddendOneQuaBefComma, AddendTwoQuaBefComma); MaxAftComma = Serviсe.MaxNumber(AddendOneQuaAftComma, AddendTwoQuaAftComma); index = MaxAftComma + MaxBefComma; if (MaxAftComma > 0) { index++; } if (index > AddendOneM.Length) { AddendOneMtemp = new double[index]; AddendTwoMtemp = new double[index]; if (MaxAftComma > AddendOneQuaAftComma) { AddendOneM.CopyTo(AddendOneMtemp, 0); AddendTwoM.CopyTo(AddendTwoMtemp, index - AddendTwoM.Length); } else { AddendTwoM.CopyTo(AddendTwoMtemp, 0); AddendOneM.CopyTo(AddendOneMtemp, index - AddendOneM.Length); } AddendOneM = new double[index]; AddendTwoM = new double[index]; AddendOneMtemp.CopyTo(AddendOneM, 0); AddendTwoMtemp.CopyTo(AddendTwoM, 0); } AddendOneMtemp = new double[index]; AddendTwoMtemp = new double[index]; if (Serviсe.NumberCorrect(AddendOneM, AddendTwoM, AddendOneMtemp, AddendTwoMtemp, AddendOneQua, AddendTwoQua)) { AddendOneM = AddendOneMtemp; AddendTwoM = AddendTwoMtemp; } if (index < AddendOneM.Length) { index = AddendOneM.Length; } Stage1 = new Stage(index); AddendOneM.CopyTo(Stage1.NumberOne, 0); AddendTwoM.CopyTo(Stage1.NumberTwo, 0); for (int i = index - 1; i >= 0; i--) { if (AddendOneM[i] == 0.5 || AddendTwoM[i] == 0.5) { Stage1.Answer[i] = 0.5; continue; } if (AddendTwoM[i] + AddendOneM[i] > 9) { Stage1.Answer[i] = 0; if (i == 0) { AddendOneM = new double[index + 1]; Stage1.Answer.CopyTo(AddendOneM, 1); AddendOneM[0] = 1; Stage1.Answer = AddendOneM; break; } if (AddendOneM[i - 1] != 0.5 && AddendTwoM[i - 1] != 0.5) { AddendOneM[i - 1]++; } else { AddendOneM[i - 2]++; } continue; } Stage1.Answer[i] = AddendTwoM[i] + AddendOneM[i]; } StageAdd.Add(Stage1); return(true); }
public bool Calculate() { Stage Stage1; bool MultiplierOneNegative = false; bool MultiplierTwoNegative = false; int MultiplierOneQua = 0; int MultiplierOneQuaBefComma = 0; int MultiplierOneQuaAftComma = 0; int MultiplierTwoQua = 0; int MultiplierTwoQuaBefComma = 0; int MultiplierTwoQuaAftComma = 0; int MaxBefComma = 0; int MaxAftComma = 0; int index = 0; if (!Logic) { if (!Serviсe.CheckNumber(MultiplierOne, MultiplierTwo)) { return(false); } MultiplierOneQua = Serviсe.StringNumberQua(MultiplierOne); MultiplierTwoQua = Serviсe.StringNumberQua(MultiplierTwo); MultiplierOneM = new double[MultiplierOneQua]; MultiplierTwoM = new double[MultiplierTwoQua]; Serviсe.StringToMass(MultiplierOne, MultiplierOneM, MultiplierOneQua, MultiplierOneNegative); Serviсe.StringToMass(MultiplierTwo, MultiplierTwoM, MultiplierTwoQua, MultiplierTwoNegative); } MultiplierOneQuaBefComma = Serviсe.NumberQuaBeforeComma(MultiplierOneM); MultiplierOneQuaAftComma = Serviсe.NumberQuaAfterComma(MultiplierOneM); MultiplierTwoQuaBefComma = Serviсe.NumberQuaBeforeComma(MultiplierTwoM); MultiplierTwoQuaAftComma = Serviсe.NumberQuaAfterComma(MultiplierTwoM); if (Logic) { MultiplierOneQua = MultiplierOneQuaBefComma + MultiplierOneQuaAftComma; if (MultiplierOneQuaAftComma > 0) { MultiplierOneQua++; } MultiplierTwoQua = MultiplierTwoQuaBefComma + MultiplierTwoQuaAftComma; if (MultiplierTwoQuaAftComma > 0) { MultiplierTwoQua++; } } MaxBefComma = Serviсe.MaxNumber(MultiplierOneQuaBefComma, MultiplierTwoQuaBefComma); MaxAftComma = Serviсe.MaxNumber(MultiplierOneQuaAftComma, MultiplierTwoQuaAftComma); index = MaxAftComma + MaxBefComma; if (MultiplierTwoQua > MultiplierOneQua) { MultiplierOneMtemp = new double[MultiplierTwoQua]; MultiplierTwoMtemp = new double[MultiplierOneQua]; MultiplierOneM.CopyTo(MultiplierTwoMtemp, 0); MultiplierTwoM.CopyTo(MultiplierOneMtemp, 0); MultiplierOneM = MultiplierOneMtemp; MultiplierTwoM = MultiplierTwoMtemp; TempInt = MultiplierOneQua; MultiplierOneQua = MultiplierTwoQua; MultiplierTwoQua = TempInt; } for (int i = MultiplierTwoM.Length - 1; i >= 0; i--) { memory = 0; Stage1 = new Stage(MultiplierOneQua, MultiplierTwoQua, MultiplierOneQua); if (MultiplierTwoM[i] == 0.5) { continue; } for (int u = MultiplierOneM.Length - 1, y = MultiplierOneM.Length - 1; u >= 0; u--) { if (MultiplierOneM[u] == 0.5) { continue; } if (MultiplierTwoM[i] != 0 || MultiplierOneM[u] != 0) { TempInt = (int)(MultiplierTwoM[i] * MultiplierOneM[u] + memory); memory = 0; } else { TempInt = 0; memory = 0; } if (TempInt > 9) { memory = TempInt / 10; Stage1.Answer[y] = TempInt % 10; if (y == 0 && u == 0) { MultiplierOneMtemp = new double[MultiplierOneQua + 1]; Stage1.Answer.CopyTo(MultiplierOneMtemp, 1); MultiplierOneMtemp[0] = TempInt / 10; Stage1.Answer = MultiplierOneMtemp; break; } y--; continue; } Stage1.Answer[y] = TempInt; y--; } StageMultiplication.Add(Stage1); } if (StageMultiplication.Count > 1) { TempInt = StageMultiplication.Count - 1; counter = TempInt; LogicSw = 0; Stage1 = new Stage(MultiplierOneQua, MultiplierTwoQua, MultiplierOneQua); Stage1.Answer = StageMultiplication[0].Answer; for (int i = 0; i < TempInt; i++) { if (LogicSw == 0) { if (StageMultiplication[i].Answer.Length != StageMultiplication[i + 1].Answer.Length) { counter++; } LogicSw = 1; MultiplierOneMtemp = new double[MultiplierOneQua + counter]; MultiplierTwoMtemp = new double[MultiplierOneQua + counter]; StageMultiplication[i].Answer.CopyTo(MultiplierOneMtemp, MultiplierOneQua + counter - StageMultiplication[i].Answer.Length); StageMultiplication[i + 1].Answer.CopyTo(MultiplierTwoMtemp, MultiplierOneQua + counter - StageMultiplication[i + 1].Answer.Length - (i + 1)); Add = new Addition(MultiplierOneMtemp, MultiplierTwoMtemp); if (Add.Calculate()) { Stage1.Answer = Add.StageAdd[0].Answer; } continue; } if (LogicSw == 1) { if (Stage1.Answer.Length != MultiplierOneQua + counter) { counter++; } MultiplierOneMtemp = new double[MultiplierOneQua + counter]; MultiplierTwoMtemp = new double[MultiplierOneQua + counter]; Stage1.Answer.CopyTo(MultiplierOneMtemp, MultiplierOneQua + counter - Stage1.Answer.Length); StageMultiplication[i + 1].Answer.CopyTo(MultiplierTwoMtemp, MultiplierOneQua + counter - StageMultiplication[i + 1].Answer.Length - (i + 1)); Add = new Addition(Stage1.Answer, MultiplierTwoMtemp); if (Add.Calculate()) { Stage1.Answer = Add.StageAdd[0].Answer; } continue; } } if (MultiplierOneNegative && !MultiplierTwoNegative || !MultiplierOneNegative && MultiplierTwoNegative) { Stage1.AnswerNegative = true; } StageMultiplication.Add(Stage1); StageMultiplication[0].NumberOne = MultiplierOneM; StageMultiplication[0].NumberTwo = MultiplierTwoM; } return(true); }