Každou svou co? Vaše zadání takto nedává žádný smysl a ani se nejedná o správně napsanou českou větu. Pokud by správné zadání mělo být: "Nalezněte všechna přirozená čísla menší než dané N, která jsou dělitelná každou svou cifrou." (Pokud ano tak nechápu proč to nemůžete napsat rovnou.) tak váš kód (druhá verze) zdánlivě připomíná, že by něco takového opravdu mohl dělat, ale je tam spoustu chyb (např. se do výsledku vrací i číslo 0, což je chybně, vnitřní cyklus jde ukončit už při nalezení první cifry, kterou testované číslo není dělitelné, u celočíselného dělení nemusíte odečítat dříve zjištěný zbytek po dělení, vaše proměnné mají nesmyslné názvy apod.) Pokud bych měl vyjít z vašeho kódu a měl udělat minimální úpravy, aby to bylo aspoň trochu dobře, asi by to bylo:
for (int i = 0; i < N; i++)
{
bool jeDelitelne = true;
int cislo = i;
do
{
int cifra = cislo % 10;
if (cifra == 0 || (i % cifra) != 0)
{
jeDelitelne = false;
break;
}
cislo = cislo / 10;
}
while (cislo > 0);
if (jeDelitelne)
{
Console.Write(i + ", ");
}
}
Ale samozřejmě by se to dalo napsat úplně jinak.
|