3 svar
119 visningar
Armend 303
Postad: 27 jan 2021 Redigerad: 27 jan 2021

Vektorer och sökning

Hej,

Här kommer min kod nedan som jag har skrivit till en ny övning, jag vill skriva en kod som matar ut Ryggsäcken är full! Jag testade med else {Console.WriteLine("Ryggsäcken är full!") men det funkar inte. Hur kan jag göra? 

  int menyVal;
            string[] rygga = new string[5]; // Här deklarerar jag en strängvariabel med 5 element (0 1 2 3 4 = 5 element)
            bool menyArray = true;

            // Här är mina vektorer (Arrays) och jag tilldelar värden till dem
            // Index börjar alltid på 0!
            rygga[0] = "Tangentbord";
            rygga[1] = "";
            rygga[2] = "";
            rygga[3] = "";
            rygga[4] = "";


            // Här ville jag hälsa användaren välkommen genom att skapa en strängvektor och lagra två element
            // istället för att deklarera många olika strängvariabler 
            string[] namn = new string[2];
            Console.WriteLine("\tVälkommen till ryggsäcken!");

            Console.Write("\n\tVar god skriv in ditt förnamn: ");
            namn[0] = Console.ReadLine();
            Console.Write("\tVar god skriv in ditt efternamn: ");
            namn[1] = Console.ReadLine();


            Console.WriteLine("\tVälkommen," + " " + namn[0] + " " + namn[1] + "!");

            while (menyArray) // Här loopar menyn om och om igen såkallad iteration
            {

                Console.Write("\n\tVälj ett följande val: ");
                Console.WriteLine("\n\t[1]Lägg till ett föremål");
                Console.WriteLine("\t[2]Skriv ut alla föremål");
                Console.WriteLine("\t[3]Sök i ryggsäcken");
                Console.WriteLine("\t[4]Rensa innehåll");
                Console.WriteLine("\t[5]Avsluta");


                if (Int32.TryParse(Console.ReadLine(), out menyVal)) { }

                else
                {         // Jag har lagt till \t eftersom jag vill ha indrag, \n hoppar ner till en ny rad
                    Console.WriteLine("\tVar vänlig ange en siffra mellan 1 och 4");
                }

                switch (menyVal)
                {
                    case 1:
                        Console.WriteLine("\tDu kan max lägga in 5 föremål i ryggsäcken, vilket föremål vill du lägga in här? Du kan välja mellan 0-4");

                        int Val;
                        int.TryParse(Console.ReadLine(), out Val);


                        if (Val == 0)
                        {
                            // Det här värdet "tom textsträng" alltså "" anropas när användaren trycker ner 0
                            // Om värdet för 0 inte är lika med "" skrivs den första ConsoleWriteLine under IF(rygga[0] != "") ut
                            if (rygga[0] != "")
                            {
                                Console.WriteLine("\tDu har redan ett föremål i det här facket, försök igen med ett annat fack!");
                            }
                            else
                            {
                                Console.Write("\tFöremål: ");
                                rygga[0] = Console.ReadLine();
                                Console.WriteLine("\n\tDu har lagt till" + " " + rygga[0] + " i fack 0!");
                            }


                        }
                        if (Val == 1)
                        {

                            if (rygga[1] != "")
                            {
                                Console.WriteLine("\tDu har redan ett föremål i det här facket, försök igen med ett annat fack!");
                            }
                            else
                            {
                                Console.Write("\tFöremål: ");
                                rygga[1] = Console.ReadLine();
                                Console.WriteLine("\n\tDu har lagt till" + " " + rygga[1] + " i fack 1!");

                            }
                        }
                        if (Val == 2)
                        {
                            if (rygga[2] != "")
                            {
                                Console.WriteLine("\tDu har redan ett föremål i det här facket, försök igen med ett annat fack!");
                            }
                            else
                            {
                                Console.Write("\tFöremål: ");
                                rygga[2] = Console.ReadLine();
                                Console.WriteLine("\n\tDu har lagt till" + " " + rygga[2] + " i fack 2!");
                            }
                        }
                        if (Val == 3)
                        {
                            if (rygga[3] != "")
                            {
                                Console.WriteLine("\tDu har redan ett föremål i det här facket, försök igen med ett annat fack!");
                            }
                            else
                            {
                                Console.Write("\tFöremål: ");
                                rygga[3] = Console.ReadLine();
                                Console.WriteLine("\n\tDu har lagt till" + " " + rygga[3] + " i fack 3!");
                            }
                        }
                        if (Val == 4)
                        {
                            if (rygga[4] != "")
                            {
                                Console.WriteLine("\tDu har redan ett föremål i det här facket, försök igen med ett annat fack!");
                            }
                            else
                            {
                                Console.Write("\tFöremål: ");
                                rygga[4] = Console.ReadLine();
                                Console.WriteLine("\n\tDu har lagt till" + " " + rygga[4] + " i fack 4!");
                            }
                        }
                         break;
                        //IF och ELSE gör så att användaren bara 
                        // kan tilldela ett värde till vardera objekt med hjälp av en ReadLine                          

                    case 2:
                        // Foreach skriver ut alla item för varje värde i rygga
                        foreach (string item in rygga)
                        {
                            Console.WriteLine(item);
                        }
                        break;

                    case 3:
                        // Ordsökning
                        Console.Write("\tSkriv in ett sökord: ");
                        string sökord = Console.ReadLine();

                        // for-loop är en loop där man har initieringsvärde, vilkor och ökningsvärde
                        // .Length är en egenskap i klassen Array och berättar hur många element som finns i vektorn
                        // i++ är tekniskt sett bara ett annat skrivsätt för i = i + 1, vi ökar med ett i loopen
                        // Användaren ska inte behöva kämpa med felaktigta stora/små bokstavsinmatning därav ToLower
                        for (int i = 0; i < rygga.Length; i++)
                        {
                            if (rygga[i].ToLower() == sökord.ToLower())
                                Console.WriteLine("\tDu har en " + rygga[i] + " i din ryggsäck");
                        }

                        break;

                    case 4:
                        for (int i = 0; i < 4; i++)
                        {
                            rygga[i] = "";
                        }

                        Console.WriteLine("\tDin ryggsäck är nu tom");
                        // Ryggsäckens ""; värden töms på dess innnehåll och nu kan man mata in nya föremål
                        break;
                    case 5:
                        Console.ReadLine();

                        // menyArray false; gör så att loopen slutar
                        // break gör så att if och for satserna avbryts
                        menyArray = false;
                        break;
                }
            } 
        }   
    }
}

         
Laguna 13481
Postad: 27 jan 2021

Du kan införa en variabel som håller reda på hur många fack som är upptagna. 

Armend 303
Postad: 27 jan 2021
Laguna skrev:

Du kan införa en variabel som håller reda på hur många fack som är upptagna. 

Tack men jag skulle antagligen skriva en SWITCH-sats så fick radera hela skiten -.-

Laguna 13481
Postad: 28 jan 2021

De fem fallen med Val under "case 1" är nästan identiska, så då vill man slå ihop dem. Du kan lätt ordna så att Val används i stället för respektive siffra, och sedan ha kvar bara ett exemplar av den koden.

Svara Avbryt
Close