Otočení číšel, sčítání   zodpovězená otázka

C#

Zdravím,

jde nějak otočit int (123 > 321) bez toho, aby jej byla potřeba konvertovat do stringu?

A mám třídu, kde mám spousty proměných typu property (int) a metodu, která mi má dát součet všech čísel. Jde to udělat jinak než this.p1 + this.p2 + ....? Těch proměných je tam opravdu mnoho

Díky

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Určitě to jde. Kód tu generovat nebudu, ale zkusím Vás trochu nakopnout.

Nekonvertujte číslo na string, ale vždycky ho vydělte deseti a zjistěte zbytek po dělení. Tak můžete postupně získat jednotlivé číslice.

Pokud ty jednotlivá čísla (byte jako datový typ bude stačit - číslo v rozsahu 0-9) nacpete do vhodné kolekce, stačí si je pak pouze vybrat a rovnou je získáte v obráceném pořadí.

Viz něco o FILO kolekci v .NETu:

http://www.vbnet.cz/blog-clanek--177-net...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji.

A co můj druhý problém?

mám třídu, kde mám spousty proměných typu property (int) a metodu, která mi má dát součet všech čísel. Jde to udělat jinak než this.p1 + this.p2 + ....? Těch proměných je tam opravdu mnoho

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Udělejte si jednu property ve které bude pole nebo kolekce a pak už nebude problém data sečíst např. pomocí cyklu bez ohledu na to, kolik čísel tam bude.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Přítomnost více proměných je nutná.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V 90% případů je tento postup špatný. Pokud chcete něco sčítat, mělo by to být v rámci nějakého seznamu.

Pokud to potřebujete ale udělat takto, lze pomocí reflexe získat seznam všech vlastností a kódem hodnoty vlastností přečíst.

Zjednodušeně například:

var type = objekt_k_precteni.GetType();
int result = type.GetProperties()
	.Where(p => p.CanRead && p.PropertyType == typeof(int))
	.Sum(p => (int)p.GetValue(objekt_k_precteni));
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Proč, když kliknu na .NET Tips, tak se mi nezobrazí všechny, ale jen každý x-tý, docela rád bych se je (a věřím že i někteří další užvatelé) pročetl všechny.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To otáčení čísel pomocí Stringu bude asi rychlejší a hlavně 100x jednodušší.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jednodušší rozhodně, ale o rychlosti dost pochybuju. Ačkoliv rozdíl bude samozřejmně nepatrný.

Použití matematických operací jako modulo nebo dělení integerů je velmi rychlé. Celé to pak nacpat do pole bude rychlejší než inicializace stringu a textové operace + parsování čísel.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback