C# be hogyan tudok egy számot szét törni?
Van egy listám benne 5db számmal 2001,2002,2003,2004,2005,
A feladat hogy a listába lévő számok számjegyeit össze adjam és ki írásam.
Például 2001=3,2002=4 stb
Hogy lehetne ezt megcsinálni?
Nem vagyok nagyon jártas a java nyelvben, így biztos van jobb megoldás, de....
Maradékos osztással és sima osztással.
Az adott számot maradékosan osztod 10-el(igy 2002-ből megkapod a 2-őt, majd a számot osztod 10-el)
Igy már van egy kettesed, a következő szám amit vizsgálnod kell az a 200 lesz. Ezt addig folytatod amíg van szám amit vizsgálhatnál.
2002%10 -> 2
2002/10 ->200
200%10 -> 0
200/10 -> 20
20%10 -> 0
20/10 -> 2
2%10 -> 2
2/10 -> 0// itt kell megállnod, amikor a 10-el osztás 0-át ad vissza. Utána összeadod a részeredményeket. 2+0+0+2=4
Nekünk most volt egy hasonló feladat, csak másik nyelvben. Katakter tömbé kellett alakítani, az egyes elemeket, majd egy for ciklussal vissza intbe az adott karaktert és hozzá adni egy előzőleg nullázott változóhoz.
Lehet van rá jobb módszer is. De nekünk alapból úgy volt a feladat, hogy meg kellett adni a felhasználónak számokat és már alapból szólt a tanár, hogy legegyszerűbb karakter tömbe beolvasni.
List<int> list = new List<int>() { 2001, 2002, 2003, 2004, 2005 };
foreach (int number in list)
{
int digitsSum = number.ToString().Select(digit => int.Parse(digit.ToString())).Sum();
Console.WriteLine(number + " -> " + digitsSum);
}
#1:
annyi, hogy a te javaslatodnál még ajánlatos lefele kerekíteni a számot, vagy castolni int-é, hogy egész számot kapjunk osztásnál
Ha már ilyen linq-s dolgokat ajánlotok, ne már ilyen ronda hosszút...
Egyszerűen:
number.ToString().Sum(ch => ch - '0')
Amúgy gondolom ez valami gyakorló feladat, akkor sztem jobban örül neki a tanár, ha #1-es alapján egész osztással és modulóval oldod meg... egyébként is ez hatékonyabb, nem kell stringet létrehozni.
int sum = 0;
for (int i = number; i > 0; i = i / 10)
{
sum = sum + i % 10;
}
Azért a stringgé alakítás és karakterekre bontás, majd a karakteres ismét stringgé alakítása és parszolása elég szörnyen néz ki:) remélem ilyet rendes programozó nem ír produktív kódban :D
További kérdések:
Minden jog fenntartva © 2025, 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!