AYUDA ERROR C#

Iniciado por gomezjuan, 17 Mayo 2020, 13:14 PM

0 Miembros y 1 Visitante están viendo este tema.

gomezjuan

Hola, tengo el siguiente código que lo que debería hacer es calcular los coeficientes que forman un polinomio, alguien me puede decir donde estan los errores?

public static void Main(){
        string ecuacion = "x^4 - x^3 - 5x^2 - x - 6";

        ecuacion = ecuacion.Replace(" ", string.Empty);
        char[] delimitadores = new char[] { '-', '+', '*', '/' };

        List<string> subEcuaciones = new List<string>();
        string subEcuacion = string.Empty;

        foreach (char caracter in ecuacion)
        {
            if (delimitadores.Contains(caracter))
            {
                subEcuaciones.Add(subEcuacion);
                subEcuacion = string.Empty;
            }
            subEcuacion += caracter;
        }

        subEcuaciones.Add(subEcuacion);
        foreach (string ecuaciones in subEcuaciones)
        {
            Console.Write(ecuaciones + ": ");

            if (ecuaciones[0] == '-' && char.IsDigit(ecuaciones[1]))
            {
                Console.WriteLine(ecuaciones[0].ToString() + ecuaciones[1].ToString());
            }
            else if (ecuaciones[0] == '+' && char.IsDigit(ecuaciones[1]))
            {
                Console.WriteLine(ecuaciones[0].ToString() + ecuaciones[1].ToString());
            }
            else if (ecuaciones[0] == '-' && !char.IsDigit(ecuaciones[1]))
            {
                Console.WriteLine(ecuaciones[0].ToString() + "1");
            }
            else if (ecuaciones[0] == '+' && !char.IsDigit(ecuaciones[1]))
            {
                Console.WriteLine(ecuaciones[0].ToString() + "1");
            }
            else if (char.IsDigit(ecuaciones[0]))
            {
                Console.WriteLine("+" + ecuaciones[0].ToString());
            }
            else if (ecuaciones[0]=='x')
            {
                Console.WriteLine("+ 1");
            }
        }
    }

EdePC

- Donde te da el error? supongo que cuando intentas usar el método .Contains() en el Char Array delimitadores, al menos en mi .NET 2 al 3.5 no existe ese método.

- Como veo que está utilizando un List pues has lo mismo para delimitadores este sí que tiene el método .Contains()

Código (csharp,9) [Seleccionar]
using System;
using System.Collections.Generic;

class Program {
  public static void Main() {
    string ecuacion = "x^4 - x^3 - 5x^2 - x - 6";

    ecuacion = ecuacion.Replace(" ", string.Empty);
    List<char> delimitadores = new List<char> { '-', '+', '*', '/' };

    List<string> subEcuaciones = new List<string>();
    string subEcuacion = string.Empty;

    foreach (char caracter in ecuacion) {
      if (delimitadores.Contains(caracter)) {
        subEcuaciones.Add(subEcuacion);
        subEcuacion = string.Empty;
      }
      subEcuacion += caracter;
    }

    subEcuaciones.Add(subEcuacion);
    foreach (string ecuaciones in subEcuaciones) {
      Console.Write(ecuaciones + ": ");

      if (ecuaciones[0] == '-' && char.IsDigit(ecuaciones[1])) {
        Console.WriteLine(ecuaciones[0].ToString() + ecuaciones[1].ToString());
      } else if (ecuaciones[0] == '+' && char.IsDigit(ecuaciones[1])) {
        Console.WriteLine(ecuaciones[0].ToString() + ecuaciones[1].ToString());
      } else if (ecuaciones[0] == '-' && !char.IsDigit(ecuaciones[1])) {
        Console.WriteLine(ecuaciones[0].ToString() + "1");
      } else if (ecuaciones[0] == '+' && !char.IsDigit(ecuaciones[1])) {
        Console.WriteLine(ecuaciones[0].ToString() + "1");
      } else if (char.IsDigit(ecuaciones[0])) {
        Console.WriteLine("+" + ecuaciones[0].ToString());
      } else if (ecuaciones[0] == 'x') {
        Console.WriteLine("+1");
      }
    }
    Console.ReadKey();
  }
}