3
svar
119
visningar
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;
}
}
}
}
}
Du kan införa en variabel som håller reda på hur många fack som är upptagna.
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 -.-
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.