Witajcie,
zabawiam się czasami ze spojem i tak trafiłem na zadanie w zasadzie banalne.
Link:
Konwert liczby float na liczbe hex - w C# praktycznie dwie linijki kodu, następnie zamiana na małe litery i zapis pojedynczych zer.
Program poniżej idealnie wpisuje się w wyniki przykładowe, dodatkowo testowałem jeszcze na kilkudziesięciu wrażliwych liczbach i wydaje się, że wyniki są poprawne.
Sędzia jednak cały czas zwraca błąd i trochę jestem zdegustowany :P
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Reprezentacja_liczb_typu_float
{
class Program
{
static void printfloat(float x)
{
byte[] bytes = BitConverter.GetBytes(x);
int i = BitConverter.ToInt32(bytes, 0);
string s = Regex.Replace(i.ToString("X"), ".{2}", "$0 "); ;
Console.WriteLine(RefactorHex(s));
}
static void Main(string[] args)
{
int ile = int.Parse(Console.ReadLine());
List<float> wynikKoncowy = new List<float>();
for (int i = 0; i < ile; i++)
{
wynikKoncowy.Add(float.Parse(Console.ReadLine().Replace(',', '.')));
}
foreach (var item in wynikKoncowy)
{
printfloat(item);
}
Console.ReadLine();
}
private static string RefactorHex(string s)
{
string wynikKoncowy = "";
foreach (var item in s.Split(' '))
{
string b = item;
if (item == "00")
{
b = "0";
}
wynikKoncowy += b + " ";
}
if (s == "0")
wynikKoncowy = "0 0 0 0";
return wynikKoncowy.TrimEnd().ToLower();
}
}
}
Jakieś pomysły? obstawiam, że jest tu ukryta jakaś drobna pierdoła....