Kezdőoldal » Számítástechnika » Programozás » C# be hogyan tudok egy számot...

C# be hogyan tudok egy számot szét törni?

Figyelt kérdés

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?


2022. ápr. 6. 12:08
 1/8 anonim válasza:
87%

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

2022. ápr. 6. 12:21
Hasznos számodra ez a válasz?
 2/8 anonim válasza:
76%
Nem java nyelvet akartam írni, hanem C#-ot, de a lényeg ugyan az.
2022. ápr. 6. 12:23
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:
55%

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.

2022. ápr. 6. 12:24
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
55%

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);

}

2022. ápr. 6. 12:28
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:
number.ToString().ToArray().Select(ch => ch.ToString()).Select(Int32.Parse).Sum()
2022. ápr. 6. 14:04
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:

#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

2022. ápr. 6. 15:20
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:

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

2022. ápr. 6. 16:01
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:
Köszönöm ki próbálom őket. Erre a stringee bontásra majd vissza alakítására én is gondoltam de nem sikerült. Hogyan csinálnád azt 3-mas?
2022. ápr. 6. 17:55

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!