prowen Skrevet 10. november 2006 Del Skrevet 10. november 2006 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
GeirGrusom Skrevet 10. november 2006 Del Skrevet 10. november 2006 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
j000rn Skrevet 10. november 2006 Del Skrevet 10. november 2006 (endret) for(char c1 = 'a'; c1 <= 'z'; c1++) for(char c2 = 'a'; c2 <= 'z'; c2++) for(char c3 = 'a'; c3 <= 'z'; c3++) Console.WriteLine( "" + c1 + c2 + c3 ); Edit: skrivefeil + enda litt mer forkortet... Endret 10. november 2006 av jorn79 Lenke til kommentar
wolf5 Skrevet 23. november 2006 Del Skrevet 23. november 2006 (endret) 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 23. november 2006 av wolf5 Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå