Page 1 of 2 12 Last
  1. #1

    Registered
    23/12/06
    Location
    België
    Posts
    4,177
    iTrader
    24 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/33

    [PROG][C#] Door elkaar smijter

    Ik wil dus een prog schrijven waar ik een woord invoer en dat dan door elkaar wordt geschud. Ik programeer nog nie zo lang in C#.
    Maar we moesten met random r = new random werken en als ge een letter uithaald hem verwijderen/markeren zodat hij geen twee keer wordt gebruikt.
    Dus den input zal wel het woord zijn en in de class wordt hij door elkaar geschud en de output is dan het door elkaar geschudde woord.
    Maar ik heb geen idee hoe ik er aan moet beginnen.

    VB: thuis ==> sutih
    no votes  

  2. #2
    Tyfius's Avatar
    Registered
    01/09/02
    Location
    Peutie
    Posts
    7,664
    iTrader
    0
    Mentioned
    4 Post(s)
    Reputation
    13/105
    Ge genereert een random nummer tussen 0 en de lengte van uwe string. Dan hebt ge voor het String object in .NET een aantal functies. IndexOf haalt een character op op een opgegeven positie in de string (dus uw random getal), Remove(int, int) verwijderd een character op de opgegeven plaats. De string waarmee ge gestart zijt bevat 1 character minder en ge berekend opnieuw de lengte en een random getal tot de lengte van uwe string gelijk is aan 0.
    no votes  

  3. #3

    Registered
    23/12/06
    Location
    België
    Posts
    4,177
    iTrader
    24 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/33
    Als je thuis hebt dan is de positie van bv i 4 maar wat moet ge dan gebruiken als 2de int?
    no votes  

  4. #4
    SMa's Avatar
    Registered
    05/11/03
    Location
    ?
    Posts
    5,782
    iTrader
    12 (100%)
    Mentioned
    0 Post(s)
    http://search.msdn.microsoft.com/sea...ing.remove&sr=
    best zo snel mogelijk met MSDN leren werken
    searchen doe je door Klasse.methode of gewoon algemene termen

    de tweede int is in feite niet nodig als je maar 1 char wilt removen
    no votes  

  5. #5
    Tyfius's Avatar
    Registered
    01/09/02
    Location
    Peutie
    Posts
    7,664
    iTrader
    0
    Mentioned
    4 Post(s)
    Reputation
    13/105
    Quote Originally Posted by straatloper View Post
    This quote is hidden because you are ignoring this member. Show
    Als je thuis hebt dan is de positie van bv i 4 maar wat moet ge dan gebruiken als 2de int?
    Dat zou 1 moeten zijn.

    Quote Originally Posted by SMa View Post
    This quote is hidden because you are ignoring this member. Show
    de tweede int is in feite niet nodig als je maar 1 char wilt removen
    String.Remove (Int32)
    Deletes all the characters from this string beginning at a specified position and continuing through the last position.
    Daaruit maak ik op: van positie X tot en met het einde van de string.

    String.Remove (Int32, Int32)
    Deletes a specified number of characters from this instance beginning at a specified position.
    dus: m_string.Remove(random_number, 1); zou het uiteindelijke resultaat moeten worden.
    no votes  

  6. #6

    Registered
    23/12/06
    Location
    België
    Posts
    4,177
    iTrader
    24 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/33
    K bedankt nu zal het wel lukken.
    En we hebben nog niets over MSDN geleerd.
    kzal mss wa zelfstudie doen
    no votes  

  7. #7

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Code:
            private void shuffleStringList(List<String> list)
            {
                Random randomNumber = new Random();
                String temp;
                for ( int i = 0; i < list.Count; i++ )
                {
                    int j = randomNumber.Next( list.Count);
                    // Swap
                    temp = list[i];
                    list[i] = list[j];
                    list[j] = temp;
                }
            }
    Da is voor een lijst, voor een string is het analoog.
    no votes  

  8. #8

    Registered
    23/12/06
    Location
    België
    Posts
    4,177
    iTrader
    24 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/33
    k kzal dit dan ook eens proberen.
    no votes  

  9. #9

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by straatloper View Post
    This quote is hidden because you are ignoring this member. Show
    k kzal dit dan ook eens proberen.
    Ik lees juist dat het blijkbaar voor school was, normaal geef ik dan geen kant en klare code, ma soit, ge moet hem zelf toch al gaan omvormen en begrijpen, dus zo erg is het niet.

    Tis vrij straightforward eigenlijk & snel genoeg (lineaire tijd).
    no votes  

  10. #10
    Albireo's Avatar
    Registered
    21/10/05
    Location
    Herentals
    Posts
    1,515
    iTrader
    5 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/13
    Ik verveelde mij dus hier is mijn versie. Het principe: knip een letter op een willekeurige plaats uit de inputstring en plak die aan de outputstring (al moet je in de code wel eerst plakken en dan pas knippen).

    Code:
    using System;
    
    namespace TestApp {
        public class CharShuffler {
            public static void Main() {
                string input = "";
                while (input.ToLower() != "q") {
                    Console.Write("type a word or q to quit: ");
                    input = Console.ReadLine();
                    Console.WriteLine(Shuffle(input));
                    Console.WriteLine();
                }
            }
            public static string Shuffle(string input) {
                string output = "";
                Random rnd=new Random();
                while(input.Length>0) {
                    int copyfrom = rnd.Next(input.Length);
                    output+= input[copyfrom];
                    input=input.Remove(copyfrom, 1);
                }
                return output;
            }
        }
    }
    no votes  

  11. #11

    Registered
    23/12/06
    Location
    België
    Posts
    4,177
    iTrader
    24 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/33
    progje zojuist geschreven en het werkt perfect. Allemaal bedankt.
    Kheb dit geschreven in mijn class:

    Code:
     class Mixer
        {
            string woord = "";
    
            public Mixer (string woord)
            {
                this.woord = woord;
            }
    
            public string DoorElkaar
            {
                get
                {
                    string MixWoord = "";
                    Random rnd = new Random();
                    while (woord.Length > 0)
                    {
                        int letter = rnd.Next(woord.Length);
                        MixWoord += woord[letter];
                        woord = woord.Remove(letter, 1);
                    }
                    return MixWoord;
                }
            }
    no votes  

  12. #12
    SMa's Avatar
    Registered
    05/11/03
    Location
    ?
    Posts
    5,782
    iTrader
    12 (100%)
    Mentioned
    0 Post(s)
    Ben je wel zeker dat het de bedoeling is om het met een access modifier te doen?
    persoonlijk gebruik ik dat nooit voor zo'n doeleinden, kan natuurlijk wel zijn dat ik het mis heb (C# ken ik door zelfstudie)
    no votes  

  13. #13
    Albireo's Avatar
    Registered
    21/10/05
    Location
    Herentals
    Posts
    1,515
    iTrader
    5 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/13
    Quote Originally Posted by SMa View Post
    This quote is hidden because you are ignoring this member. Show
    Ben je wel zeker dat het de bedoeling is om het met een access modifier te doen?
    persoonlijk gebruik ik dat nooit voor zo'n doeleinden, kan natuurlijk wel zijn dat ik het mis heb (C# ken ik door zelfstudie)
    Access modifiers zijn private en public enzo en op dat gebied zie ik hier niets verkeerd aan. Bedoelde je misschien het gebruik van die property? Daar zet ik bijna nooit zo'n functie in. In dit geval zou ik van die propertie een gewone public method maken vooral omdat die functie om letters te verwisselen geen "eigenschap" van het object is maar iets dat het object kan doen.

    (eveneens C# zelfstudie)
    no votes  

  14. #14

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Je gaat zoiets enkel in een property zetten als het elke keer dat het moet opgehaald worden geshuffled worden. Anders maak je 1 shuffle functie & een property om die geshufflede versie op te halen. imho
    no votes  

  15. #15
    UniKorn's Avatar
    Registered
    20/09/02
    Location
    Leuven
    Posts
    460
    iTrader
    0
    Mentioned
    0 Post(s)
    yep, volledig mee eens. Je klasse Mixer zou eigenlijk alleen de functie DoorElkaar mogen bevatten. Een andere klasse zou die dan kunnen oproepen (eventueel static)

    woord = Mixer.DoorElkaar(woord);
    Uzghul, 70 Rogue; Tankghul, 70 Warrior; Uziuz, 70 Paladin; Skinny, 70 Priest; Darkrune, 70 Warlock; UniKorn, 60 Druid; Martinuz, 59 Hunter; Marceluz, 59 Mage; Flexy, 30 Rogue;
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in