Citera om du vill ha svar!
Tycker du om sidospår? :D Besök The Wiki Game
Har du fråga angående modereringen? PM till Moderatorerna eller Kontaktformulär
Soda crate
Senast redigerat
Visa signatur
do
{
Console.WriteLine("\n Menu");
Console.WriteLine(" 1: Add a drink");
Console.WriteLine(" 2: Show your drinks");
Console.WriteLine(" 3: Total price");
Console.WriteLine(" 4: Terminate the program");
try
{
choice = int.Parse(Console.ReadLine());
}
catch(Exception)
{
Console.WriteLine("Sorry you can only enter varibales not words");
break;
}
har gjort så här men om jag skriver in hello skrivs alla meny alternativ ut typ empty space och att det kostar 0 kr
Det är för att du skriver ut allt i Main efter du anropat Run
sodacrate.Run();
drinkholder.print_crate();
drinkholder.calc_total();
drinkholder.add_soda();
Det är för att du skriver ut allt i Main efter du anropat Run
sodacrate.Run();
drinkholder.print_crate();
drinkholder.calc_total();
drinkholder.add_soda();
okey vad ska jag göra åt att svar från menyn skrivs ut ovanför menyn?
okey vad ska jag göra åt att svar från menyn skrivs ut ovanför menyn?
Vad händer om du inte anropar några metoder efter run();
??
.Hej försöker få till att min kod ska sortera läsken efter namn och pris men får inte till det.Det känns som jag har uppfyllt kraven för betyget C men vill även få till sista delen för betyget A.Ta hänsyn till att mina priser inte är samma så har gjort att man kan hitta en specifik dryck så skriver programmet ut vart i läskbacken den befinner sig.
För betyget c skulle man göra detta:
1. En metod som anropas för att söka efter en flaska baserat på namn. Detta beskrivs i
läroboken och kapitel 13 (kodexempel för sökning på sidan 149). I denna metod kan man
också ha en inparameter som då är den sträng som du ska söka efter.
2. En metod som ska anropas för att sortera vektorn med läskflaskor utifrån namnet. Eftersom
alla flaskor har samma pris (för betyget C) får vi istället sortera efter hur många tecken det
finns i namnet – dvs hur långt namnet är. Själva sorteringen beskrivs i läroboken och kapitel
13 (kodexempel för sortering på sidan 159). Gör man uppgiften enligt A kan man sortera
efter pris också vilket är roligare kanske.
kraven för betyg A är.
Istället för att vektorn lagrar namn så ska nu vektorn lagra objekt som representerar flaskorna. Du
ska alltså skapa en ny klass som förslagsvis heter bottle, flaska eller något liknande.
Den nya klassen kan nu hantera fler värden för en flaska och följande värden ska finnas:
1. Namn
2. Kostnad (kostnad för flaskan i kronor)
3. Typ (Läsk, vatten eller lättöl)
Den nya klassen kan nu hantera fler värden för en flaska och följande variabler ska finnas:
4. Namn
5. Kostnad (kostnad för flaskan i kronor)
6. Typ (Läsk, vatten eller lättöl)
Notera nu också att förutsättningarna för
beräkning av genomsnittligt pris förändras
eftersom flaskorna kan ha olika pris.
Konstruktor (svår)
För en guldstjärna i uppgiften ska du sätta
variablerna i klassen soda och sodacrate som
privata och skapa en korrekt konstruktor (för
klassen soda) samt andra nödvändiga metoder som för att exempelvis returnera pris.
namespace SodaCrateFinal
{
class MainClass
{
public class Soda
{
private string name;
private int price;
public string Name { get { return name; } set { name = value; } }
public int Price { get { return price; } set { price = value; } }
public Soda(string _name, int _price)
{
name = _name;
price = _price;
}
}
class Sodacrate
{
private Soda[] Bottles;
private int Amount_Drinks = 0;
public Sodacrate()
{
Bottles = new Soda[24];
}
public void Run()
{
Console.WriteLine("Hello and welcome to soda crate!");
Console.WriteLine("In this program you will assemble your own soda crate with all your favourite drinks");
Console.WriteLine("What would you like to do first?");
int choice = 0;
do
{
Console.WriteLine("\n Menu");
Console.WriteLine(" 1: Add a drink");
Console.WriteLine(" 2: Show your drinks");
Console.WriteLine(" 3: Total price");
Console.WriteLine(" 4: Find soda by name");
Console.WriteLine(" 5: Sort sodas");
Console.WriteLine(" 6: Terminate the program");
choice = int.Parse(Console.ReadLine());
switch (choice)
{
case 1:
add_soda();
break;
case 2:
print_crate();
break;
case 3:
calc_total();
break;
case 4:
Find_SodaName();
break;
case 5:
Sort_Sodabyprice();
break;
case 6:
Sort_SodabyName();
break;
case 7:
Console.WriteLine("Program terminated");
Environment.Exit(0);
break;
default:
Console.WriteLine("Sorry this choice is not available");
break;
}
} while (choice != 0);
}
public void add_soda()
{
Console.WriteLine("Choose a drink to add to your trolley");
Console.WriteLine("1. Redbull,", "Energy drink");
Console.WriteLine("2. Coca cola,", "Energy drink");
Console.WriteLine("3. Ramlösa,", "Mineral Water");
Console.WriteLine("4. Peroni,", "Beer");
Console.WriteLine("5. Guiness,", "Beer");
Console.WriteLine("6. Pepsi Max,", "Energy drink");
Console.WriteLine("7. Monster drink,", "Energy drink");
Console.WriteLine("8. Powerking,", "Energy drink");
Console.WriteLine("9. Fanta,", "Energy drink");
Console.WriteLine("10. 7-up,", "Energy drink");
int input = 0;
for (int i = 0; i < Bottles.Length; i++)
{
while (!int.TryParse(Console.ReadLine(), out input) || !(input <= 10 && input >= 1))
{
Console.WriteLine("Sorry invalid choice");
}
switch (input)
{
case 1:
Console.WriteLine("Red bull has been added");
Bottles[Amount_Drinks] = new Soda("Redbull", 10);
Amount_Drinks++;
break;
case 2:
Console.WriteLine("Coca cola has been added");
Bottles[Amount_Drinks] = new Soda("Coca cola", 15);
Amount_Drinks++;
break;
case 3:
Console.WriteLine("water has been added");
Bottles[Amount_Drinks] = new Soda("water", 8);
Amount_Drinks++;
break;
case 4:
Console.WriteLine("Peroni has been added");
Bottles[Amount_Drinks] = new Soda("Peroni", 10);
Amount_Drinks++;
break;
case 5:
Console.WriteLine("Guiness has been added");
Bottles[Amount_Drinks] = new Soda("Guiness", 18);
Amount_Drinks++;
break;
case 6:
Console.WriteLine("Pepsi Max has been added");
Bottles[Amount_Drinks] = new Soda("Pepsi Max", 16);
Amount_Drinks++;
break;
case 7:
Console.WriteLine("Monster has been added");
Bottles[Amount_Drinks] = new Soda("Monster", 25);
Amount_Drinks++;
break;
case 8:
Console.WriteLine("Powerking has been added");
Bottles[Amount_Drinks] = new Soda("Powerking", 15);
Amount_Drinks++;
break;
case 9:
Console.WriteLine("Fanta has been added");
Bottles[Amount_Drinks] = new Soda("Fanta", 6);
Amount_Drinks++;
break;
case 10:
Console.WriteLine("7-Up has been added");
Bottles[Amount_Drinks] = new Soda("7-Up", 15);
Amount_Drinks++;
break;
default:
Console.WriteLine("Sorry your desired drink may not be on the list");
break;
}
}
}
public void print_crate()
{
for (int i = 0; i < Bottles.Length; i++)
{
if (Bottles[i] != null)
{
Console.WriteLine("Index: {0}. Name: {1}, Price: {2}", i, Bottles[i].Name, Bottles[i].Price);
}
else
{
Console.WriteLine("Empty space");
}
}
}
public int calc_total()
{
int total_price = 0;
foreach (var soda in Bottles)
if (soda != null)
total_price += soda.Price;
Console.WriteLine("the total price is " + total_price + " swedish kronor");
return total_price;
}
public void Find_SodaName()
{
Console.WriteLine("PLease enter the name of the bottle you wanna find");
string Search = Console.ReadLine();
for (int i = 0; i < Bottles.Length; i++)
{
if (Bottles[i].Name == Search)
{
Console.WriteLine("'{0}' Has been placed in slot {1} in your soda crate ", Search, (i++));
break;
}
}
}
public void Sort_Sodabyprice()
{
int limit = Bottles.Length - 1;
for (int i = 0; i < limit; i++)
{
}
}
public void Sort_SodabyName()
{
int limit = Bottles.Length - 1;
for (int z = 0; z < Bottles.Length; z++)
{
}
}
public static void Main(string[] args)
{
Sodacrate drinkholder = new Sodacrate();
var sodacrate = new Sodacrate();
sodacrate.Run();
Console.Clear();
drinkholder.print_crate();
drinkholder.calc_total();
drinkholder.add_soda();
drinkholder.Find_SodaName();
drinkholder.Sort_Sodabyprice();
drinkholder.Sort_SodabyName();
Console.ReadKey();
Console.BackgroundColor = ConsoleColor.White;
Console.ForegroundColor = ConsoleColor.Black;
}
}
}
}
Jag vill också få till en try och catch undantag om användaren matar in fel typ av input men vet inte inte vart den ska vara.
Du kan inte förvänta dig att få någon hjälp om du bara klistrar in hela skoluppgiften, sen bara en stor blob med kod utan att specificera vad som inte fungerar. Finns inte någon som orkar läsa det där. Ingen kommer att göra skoluppgiften åt dig. Vill du ha ett A så ser du ju i kraven vad du behöver göra, bara att sätta igång.
okey det är denna koden som inte funkar nu.När man sortera efter namn så skrivs listan ut flera gånger.
public void Sort_SodabyName()
{
for (int z = 0; z < Bottles.Length; z++)
{
int limit = Bottles.Length - 1;
for (int i = 0; i < limit; i++)
{
int RemainingSodas = limit - i;
for (int j = 0; j < RemainingSodas; j++ )
{
if (Bottles[j].Name.Length > Bottles[j + 1].Name.Length)
{
var temp = Bottles[j];
Bottles[j] = Bottles[j + 1];
Bottles[j + 1] = temp;
}
}
}
for (int i = 0; i < Bottles.Length; i++)
{
Console.WriteLine("[{0,2}]: {1} innehåller {2} bokstäver.", (i + 1), Bottles[i].Name, Bottles[i].Name.Length);
}
}
}
public void Sort_Sodabyprice()//namn,kostnad,typ
{
int Limit = Bottles.Length - 1;
for (int i = 0; i < Limit; i++)
{
int RemainingSodas = Limit - i;
for (int j = 0; j < RemainingSodas; j++)
{
if (Bottles[j].Price > Bottles[j + 1].Price || Bottles[j + 1] == null)
break;
// Når inre loopen ett tomt värde ska den avslutas, annars blir det NullReferenceException
{
var temp = Bottles[j];
Bottles[j] = Bottles[j+ 1];
Bottles[j + 1] = temp;
}
}
}
for (int i = 0; i< Bottles.Length;i++)
{
Console.WriteLine("{0}-flaskan kostar {1} kr.", Bottles[i].Name, Bottles[i].Price);
}
}
Ska du sortera på bokstavsordning eller längden på namnet?
När du ska sortera en lista finns det flera sätt. Ett enkelt sätt är att du först skapar en ny lista med samma längd och sedan stoppar in flaskorna en efter en. Välj därefter rätt flaska och stoppa in i din nya lista. När du nått slutet är din nya lista sorterad. För denna lösning behöver du bara tänka på hur du ska hitta rätt flaska. Om du ritar på papper så kommer du nog inse hur du ska gå igenom den fyllda listan för att alltid sluta med en sorterad lista.
Lite allmänna tips är att du borde försöka undvika att ha flera nästlade for-loopar och minska på tomma rader.
@Will Sheza C: Du gör det svårare för dig själv genom att använda Bottles.Length
överallt, du behöver bara bry dig om hur lång arrayen faktiskt är när du lägger till nya flaskor. På alla andra ställen bör du använda Amount_Drinks
-variabeln istället för att bara loopa över de fyllda platserna.
Orsaken till att du får flera utskrifter är för övrigt p.g.a. att du formaterat din kod slarvigt och missat var dina for-loopar slutar, så din utskrift ligger inne i en av sorterings-looparna. Försök att vara mer noggrann med hur du indenterar din kod så att { och matchande } hamnar på samma indentering, att skriva "snygg" kod är faktiskt väldigt viktigt för att undvika onödiga misstag.
@Will Sheza C: Du gör det svårare för dig själv genom att använda Bottles.Length
överallt, du behöver bara bry dig om hur lång arrayen faktiskt är när du lägger till nya flaskor. På alla andra ställen bör du använda Amount_Drinks
-variabeln istället för att bara loopa över de fyllda platserna.
Orsaken till att du får flera utskrifter är för övrigt p.g.a. att du formaterat din kod slarvigt och missat var dina for-loopar slutar, så din utskrift ligger inne i en av sorterings-looparna. Försök att vara mer noggrann med hur du indenterar din kod så att { och matchande } hamnar på samma indentering, att skriva "snygg" kod är faktiskt väldigt viktigt för att undvika onödiga misstag.
okey tack ska kolla på det.ska använda amountdrink istället och försöka snygga till koden och kolla över min indentering på mina loopar.Fick till det nu att den bara skriver ut 2 gånger
Citera om du vill ha svar!
Tycker du om sidospår? :D Besök The Wiki Game
Har du fråga angående modereringen? PM till Moderatorerna eller Kontaktformulär
Spelnyheter från FZ
Copyright © 1999–2025 Geeks AB. Allt innehåll tillhör Geeks AB.
Citering är tillåten om källan anges.