C# - Dělitelnost čísel   zodpovězená otázka

C#

Dobrý den

Chci se zeptat zda to jde či nikoliv a kdyžtak pokud byste mohli pomoc

Nalezněte všechna přirozená čísla menší než dané N, která jsou dělitelná každou svou.

             int N = Convert.ToInt32(Console.ReadLine());
             int zbytek;
             int cislo;
             for (int i = 0; i < N; i++)
             {
                bool jeDelitelne = true;
                 cislo = i;
                 while (cislo > 0)
                 {
                     zbytek = cislo % 10;
                     cislo = (cislo - zbytek) / 10;
                    if (zbytek == 0)
                     {
                         jeDelitelne = false;
                     }                     
                 }
                 if (jeDelitelne==true)
                 {
                     Console.Write(i + " , ");
                 }
             }
nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Nechápu, co vlastně nalézáte (ta poslední věta je nějak nedokončená ne?) a s čím chcete vůbec pomoct? Zkontrolovat kód? Navrhnout? Analytické řešení?

Eh?

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

zkontrolovani kodu zda je to dobre ci nikoliv

Zde poupravene.

int N = Convert.ToInt32(Console.ReadLine());
             int zbytek;
             int cislo;
             for (int i = 0; i < N; i++)
             {
                bool jeDelitelne = true;
                 cislo = i;
                 while (cislo > 0)
                 {
                     zbytek = cislo % 10;
                     cislo = (cislo - zbytek) / 10;
                    if (zbytek == 0)
                     {
                         jeDelitelne = false;
                     }
                     else
                     {
                         if ((i % zbytek) != 0)
                         {
                             jeDelitelne = false;
                         }
                     }
                 }
                 if (jeDelitelne==true)
                 {
                     Console.Write(i + " , ");
                 }
             }
nahlásit spamnahlásit spam 0 odpovědětodpovědět

A co ten kód měl dělat?

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

Toto zadaní

Nalezněte všechna přirozená čísla menší než dané N, která jsou dělitelná každou svou.

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

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.

nahlásit spamnahlásit spam 1 / 1 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