Ennek a C#-os feladatnak mi a megoldása? (A feladat lentebb található)
Írjon programot, amely a bemenetre bekért öt darab legfeljebb tizenkét számjegyből álló hexadecimális sorozatot átalakítja decimális formába, majd tabulátorral elválasztva a párokat soronként kiírja.
Eddig jutottam: using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace hexToDec
{
class Program
{
static void Main(string[] args)
{
Console.Write("8. Feladat!");
Console.WriteLine();
Console.WriteLine("Kérek ÖT darab legfeljebb TIZENKÉT számjegyből álló hexadecimális sorozatot:");
string hexNumbers = "";
int Convert = 0;
for (int i = 0; i < 5; i++)
{
Console.Write("IDE: ");
hexNumbers = Console.ReadLine();
Convert = System.Convert.ToInt32(hexNumbers, 16);
if ()
{
}
}
Console.WriteLine("A bekért hexadecimális számok és a decimális formájuk: ");
for (int j = 0; j < 5; j++)
{
Console.WriteLine("{0}\t {1}", hexNumbers, Convert);
}
Console.ReadKey();
}
}
}
Van egy-két dolog a kódodban, ami nekem személy szerint nem tetszik, ezeket elmesélem, hátha végül össze tudod rakni magad is működőképesre. Egy részük komolyabb, a többi meg csak fölösleges, de megemlítem.
Először is, mi szükséged van a következő sorokra?:
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
Semmi gondot nem okoznak, de azt a kínos látszatot keltik, mintha nem tudnád, mi kell a programodhoz, meg aztán nem is ránk tartozik, hogy te máskor lezserül benne hagyod-e őket a kódban, vagy sem.
Mit csinál a main()-nek átadott argumentum? Mert szerintem semmit, szükségtelen.
Nagybetűs kiírással hangsúlyozod, hogy ÖT értéket fogsz beolvasni. Ezután a tárolásukra létrehozol EGY változót, amelynek az értékét ötször felülírod a beolvasáskor -- ehhez igazodva a decimális számnak is egyetlen változó dukál. Később, a kiíratáskor is következetesen ezt a két értéket írod ki ötször. Miért nem tömböket használsz, a for-ciklus változójával indexelve?
Apróság, de ha már hexNumbers néven tárolod a hexakódo(ka)t, a decimális számot miért a hasonló metódusnév miatt kissé zavaró Convert névre keresztelted, például a logikusabbnak tűnő decNumbers helyett?
A decimális érték(ek) tárolására közönséges int-et hozol létre, hogy még véletlenül se férhessen bele egy 12 jegyű hexadecimális szám. Biztos, ami biztos, konvertáláskor is gondosan ügyelsz rá, hogy az értéket 32 bitre csonkold. Long típussal és Convert.ToInt64() metódussal akár még helyes eredményt is kaphatnál.
Az üres if() rejtélyét nem sikerült megfejtenem, egyelőre az az egyetlen funkciója, hogy megakassza a fordítást. Egy előző TryParse esetén éppenséggel hasznos is lehetne, de szerintem a hexakód(ok) helyességének ellenőrzését már a bevitelkor, stringként lenne érdemes elintézni, ha esetleg ilyesféle szándék rejtőzik a bokor mögött.
Noha teljesen mindegy, de a második for ciklusváltozóját is nevezhetted volna i-nek, nem egészen világos miért lett j.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!