J'essaye d'écrire un programme qui peut trouver les racines d'une équation quadratique en utilisant Scala. L'entrée doit être une équation quadratique sous la forme ax^2 + bx + c (par exemple: 5x^2 + 2x + 3) sous la forme d'une chaîne.Les coefficients d'extrait de l'expression binomiale entré comme une chaîne dans Scala
J'ai réussi à coder le calcul des racines mais j'ai du mal à extraire les coefficients de l'entrée. Voici le code que j'ai écrit pour extraire les coefficients jusqu'à présent:
def getCoef(poly: String) = {
var aT: String = ""
var bT: String = ""
var cT: String = ""
var x: Int = 2
for (i <- poly.length - 1 to 0) {
val t: String = poly(i).toString
if (x == 2) {
if (t forall Character.isDigit) aT = aT + t(i)
else if (t == "^") {i = i + 1; x = 1}
}
else if (x == 1) {
if (t forall Character.isDigit) bT = bT + t(i)
else if (t == "+" || t == "-") x = 0
}
else if (x == 0) {
if (t forall Character.isDigit) cT = cT + t(i)
}
val a: Int = aT.toInt
val b: Int = bT.toInt
val c: Int = cT.toInt
(a, b, c)
}
}
Avez-vous pensé à utiliser regex? Vous ne savez pas à quel point vos chaînes d'entrée peuvent être complexes, mais votre problème est l'analyse syntaxique et il existe d'excellentes solutions, comme les combinateurs de regex ou peut-être les analyseurs Scala. – stholzm
str.split ('x'). Map (v => v.replace ("^ 2", "")). Map (_. ToDouble) – FatTail
si vous n'êtes pas si désireux de regex, et votre contribution est comme vous décrire. – FatTail