Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: gomezjuan en 17 Mayo 2020, 13:14 PM

Título: AYUDA ERROR C#
Publicado por: gomezjuan en 17 Mayo 2020, 13:14 PM
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");
            }
        }
    }
Título: Re: AYUDA ERROR C#
Publicado por: EdePC en 17 Mayo 2020, 14:52 PM
- 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();
  }
}