Gå til innhold

Anbefalte innlegg

Holder på å lære meg C# og jobber meg sakte men sikkert gjennom Wrox sin "Beginning Visual C#".. h3t... :)

 

Tenkte jeg skulle prøve å lage en console app. som skriver ut alle mulige kombinasjoner av alfabetet, innenfør 3 bokstaver som:

 

aaa

aab

..

..

xyz

 

Er dette mulig å gjøre på en enkel måte f.eks gjennom iterasjon?

Evt. hvordan vil koden for dette bli?

 

 

håper noen kan hjelpe da jeg er ganske dårlig i dette!

Lenke til kommentar
Videoannonse
Annonse

for

Denne funksjonen gjentar et visst antall ganger.

Den fungerer slik:

for([Første gang for blir startet], [Test for om den skal kjøre igjen], [plusspluss])

 

Den er ganske simpel, vanlig eksempel ser slik ut:

 

for(int i = 0 /* Sett i lik null første gang*/; i < 26 /* Sjekk hver gang den kjører at i < 26 hvis den er det, fortsett*/ ; i++ /* legg til en for hver gang */)

{

...

}

 

Flett disse for å få til det du vil ha:

 

 

 

for(int c1 = 0; c1 < 26; c1++)
 for(int c2 = 0; c2 < 26; c2++)
   for(int c3 = 0; c3 < 26; c3++)
     Console.WriteLine(((char)(c1 + (int)'a')).ToString() + ((char)(c2 + (int)'a')).ToString() + ((char)(c3 + (int)'a')).ToString());

 

Dette skulle gi det resultatet du var ute etter.

 

Console.WriteLine linjen ser litt komplisert ut, men den er ikke det.

Det den gjør, er å legge til tallrekkeposisjonen til 'a'(c3 + (int)'a') (derfor gjør den det om til et integer) og gjør det om til én bokstav igjen(char), for så å lage det om til en tekststreng(.ToString()), og gjentar dette på alle de tre bokstavene, og legger dem sammen til én tekststreng.

Lenke til kommentar
  • 2 uker senere...

Eller rekursivt kall som er enda mer lekkert og dermed lett å utvide til mange bokstaver:

       static void Main() {
           permute("", 3);
       }

       public static void permute(string txt, int chars) {
           for (char c = 'a'; c < 'z'; c++) {
               string s = txt + c;
               if (chars == 1) {
                   Console.WriteLine(s);
               }
               else {
                   permute(s, chars - 1);
               }
           }
       }

Endret av wolf5
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...