Brak wyświetlania tablicy float z funkcji string

0

Cześć!
Za zadanie mam napisać metodę która zwraca największą wartość float znalezioną w tekście z liczbami zmiennoprzecinkowymi. Tekst zawiera tylko liczby, oddzielone od siebie znakiem tabulacji '\t' Największa wartość jest wyszukiwana jedynie dla liczb mniejszych od -3,14 lub większych od 7,63.

Oto mój program który jest zawarty w "Class Library"

using System.IO;
namespace Biblioteka
{
    public class Operacje
    { public static float Najwieksza(string tekst)
        {
            string[] dane = tekst.Split(' ');
            float[] tablice = new float[dane.Length];
            for (int i = 0; i < dane.Length; i++)
            {
                tablice[i] = Convert.ToSingle(dane[i]);
            }
            float max = 0;
            for (int i = 0; i < tablice.Length; i++)
            {
                if (tablice[i] > 7.63 || tablice[i] < -3.14) max = tablice[i];
            }
            if (max == 0) return 0;
            for (int i = 0; i < tablice.Length; i++)
            {
                if ((tablice[i] > 7.63 || tablice[i] < -3.14) && max < tablice[i]) max = tablice[i];
            }
            return max;
        }
}
}

A tutaj już w Mainie w "Console Application"

float[] tab = { 1,22, 2,34, 3,05, 4,34, 5,18, 18,90 };
Console.WriteLine(Operacje.Najwieksza(tab));
Console.ReadKey();

Moje pytanie co robię źle? Wyskakuje mi błąd gdzie jest mowa że nie można skonwertować z float[] do string, i że "Error 1 The best overloaded method match for 'Biblioteka.Operacje.Najwieksza(string)' has some invalid arguments c:\users\seweryn\documents\visual studio 2012\Projects\Próbbna8domowa\ConsoleApplication1\Program.cs 18 33 ConsoleApplication1
"

2

Moje pytanie co robię źle? Wyskakuje mi błąd gdzie jest mowa że nie można skonwertować z float[] do string

public static float Najwieksza(string tekst)

vs

float[] tab = { 1,22, 2,34, 3,05, 4,34, 5,18, 18,90 };
Console.WriteLine(Operacje.Najwieksza(tab));

Metoda oczekuje stringa, a podajesz tablicę floatów.

W ogóle to kod strasznie słaby.

To można zrobić tak:

var input = "-5,15\t3,12\t7,12";
var floats = input.Split('\t').Select(float.Parse);
var max = floats.Where(x => x < -3.14 || x > 7.63).Max(); 
0

Wiem o tym że metoda oczekuje string a podaję tablicę float. Ale jak to obejść? Kod już wolałbym aby został taki jaki jest, bez względu na to czy jest on słaby czy też nie. Twojego zapisu nie rozumiem, nie wiem gdzie mam go wstawić/w jaki sposób zapisać i co on oznacza...

0

Jak to obejść? No najlepiej to podać mu stringa...

var x = "";
foreach (var t in tab)
{
x = x + t.ToString() + " "; //<---- Potem split jest po spacji, a nie po \t
}

Console.WriteLine(Operacje.Najwieksza(x));

0
aurel napisał(a):

Jak to obejść? No najlepiej to podać mu stringa...

var x = "";
foreach (var t in tab)
{
x = x + t.ToString() + " "; //<---- Potem split jest po spacji, a nie po \t
}

Console.WriteLine(Operacje.Najwieksza(x));



To nie działa. Program się wykrzacza

1 użytkowników online, w tym zalogowanych: 0, gości: 1