sumowanie cyfr numeru PESEL c#

0

Witam mam taki problem. Mianowicie chciałem zsumować każdą cyfrę składającą się na 11 cyfrowy numer PESEL np. 12345678912 = 1+2+3+4+5+6+7+8+9+1+2 = 48.
Próbowałem to zrobić poprzez pobranie stringa i wpisanie jego indeksu do poszczególnych elementów tablicy. Jednak po konwersji do typu int liczby mają inne wartości. Pytanie brzmi jak to zrobić nie używając przy tym aż 11 zmiennych? Znalazłem coś podobnego dla języka C jak "itoa" czy istnieje coś takiego dla C#?

0

int suma = "12345678912".Sum(c => c - '0');

0
Rev napisał(a)

int suma = "12345678912".Sum(c => c - '0');

Dziękuję za odpowiedź.
Jakkolwiek źle zadałem pytanie, zależy mi też na tyn aby można było operować (*/+-) na każdej z cyfrze z podanego zbioru stąd też pomysł o umieszczeniu każdej cyfry oddzielnie w tablicy. Ponieważ w wersji finalnej program ma sprawdzić sumę kontrolną PESEL. Link do problemu http://pl.spoj.pl/problems/JPESEL/

0

Mniej więcej tak:

int whatever = "12345678912".Chars(2) - '0') * 10; //30
0

Dostęp do znaków w zmiennej typu string masz przez zwykły indekser, bo jest to tablica char. Czyli np. char znak = pesel[2] umieści w zmiennej znak trzecią cyfrę peselu (to nazwa zmiennej typu string).
A konwersję z char do int (czyli atoi, a nie itoa) można zrobić tak: int x = Convert.ToInt32(pesel[i] - '0'); albo tak: int x = int.Parse(pesel[i].ToString());.

1

hę? po co te konwersje..

int x = pesel[i]-'0';

char minus char i tak zwraca inta.

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