Hjälp med projekt arbete läskbacken! Nybörjare inom programmering!

Permalänk
Skrivet av perost:

@Bananeripyamas: Du har ju redan en utskriftsfunktion som skriver ut flaskorna. Så du behöver bara göra samma sak, fast istället för att skriva ut varje flaska får du addera dess värde till en variabel som du sedan skriver ut i slutet av funktionen. Det som gör det lite klurigt är väl att du bara lagrar flaskorna som strängar utan någon information om deras värde, så du får skriva lite kod som översätter en flaskas namn till ett värde om du vill fortsätta lagra flaskor på det sättet.

Skrivet av e1m1:

Vad du vill göra är väl något i stil med en for/foreach/while-loop som summerar alla upptagna platser.

Vet inte riktigt vad du tänker dig att tal1 och tal2 är i din funktion, med tanke på hur den anropas borde där väl inte vara några argument

Initiera summan till 0 istället, loopa igenom vektorn och addera priset för eventuell flaska på varje plats.

public int calc_total(int tal1, int tal2) //Beräkna backens värde
{
int summa = tal1 * tal2;
return summa;
//Tänk på att inte räkna med tomma positioner i vektorn
}

Skrivet av gaminggirl:

Om jag minns rätt så kostade samtliga sorters läsk lika mycket? I så fall har du bara ett anrop till din beräkningsfuktion kvar att göra. Hur många flaskor läsk har du och hur mycket kostar en läsk...:

public int calc_total(int tal1, int tal2) //Beräkna backens värde { int summa = tal1 * tal2; return summa; //Tänk på att inte räkna med tomma positioner i vektorn }

Nu kan man skriva ut priset!! Men nu har jag en till del som måste fungera: Är backen full ska man få meddelande om detta och då får man välja en position och den gamla läsken försvinner, här används då med fördel variabeln amount_bottles (se figuren) som kan hålla reda på antal flaskor. Det är den sista kriterie som behöver uppnås

Kod:

namespace laskback { class Sodacrate { // Spara våra valda flaskor private string[] flaskor = new string[24]; // Antalet flaskor private int antal_flaskor = 0; // Summa av kostand för alla flaskor, räknas ut med calc_total funktionen public int sum = 0; public void Run() { // Vårt första meny val int meny = 0; // Köra meny tills val 4 = avsluta väljs do { Console.WriteLine(""); Console.WriteLine("Välj ett alternativ"); Console.WriteLine("1. Lägg till en dryck"); Console.WriteLine("2. Visa innehåll"); Console.WriteLine("3. Beräkna värde"); Console.WriteLine("4. Avsluta program"); // Läs vår sträng till en integer meny = int.Parse(Console.ReadLine()); switch (meny) { // Om vi ska lägga till en dryck case 1: add_soda(); break; // Om vi ska skriva ut innehåll case 2: print_crate(); break; // Om vi ska räkna ut värdet case 3: sum = calc_total(); Console.WriteLine("Totalt värde: {0} kr", sum); break; // Om avsluta program väljs case 4: Console.WriteLine("Programmet avslutas!"); break; // Om inget av valen matchar default: Console.WriteLine("Felaktig inmatning"); break; } } while (meny != 4); // Börja om menyn om valet inte är 4 } // För att lägga till en dryck public void add_soda() { // Vi kan inte lägga till om den är full if (antal_flaskor == 24) { Console.WriteLine("Backen är full, du kan inte lägga till flera flaskor!"); return; } Console.WriteLine("Vilken dryck vill du lägga till i backen?: "); Console.WriteLine("1. Coca Cola 5 kr"); Console.WriteLine("2. Fanta 5 kr"); Console.WriteLine("3. Julmust 5 kr"); Console.WriteLine("4. Lättöl 5 kr"); Console.WriteLine("5. Ramlösa 5 kr"); // Läs in val av dryck och gör strängen till en integer int val = int.Parse(Console.ReadLine()); // Namnet på den flaska som väljs string flaska = ""; // Om menyn ska visas eller inte bool visa_meny = true; do { switch (val) { // Om vi ska lägga till en coca cola case 1: flaska = "Coca Cola"; Console.WriteLine("Du valde att lägga till Coca Cola"); visa_meny = false; break; // Om vi ska lägga till en fanta case 2: flaska = "Fanta"; Console.WriteLine("Du valde att lägga till Fanta"); visa_meny = false; break; // Om vi ska lägga till en julmust case 3: flaska = "Julmust"; Console.WriteLine("Du valde att lägga till Julmust"); visa_meny = false; break; // Om vi ska lägga till en lättöl case 4: flaska = "Lättöl"; Console.WriteLine("Du valde att lägga till Lättöl"); visa_meny = false; break; // Om vi ska lägga till en ramlösa case 5: flaska = "Ramlösa"; Console.WriteLine("Du valde att lägga till Ramlösa"); visa_meny = false; break; // Om en ogiltig dryck väljs så vill vi visa menyn igen default: flaska = ""; Console.WriteLine("Felaktig inmatning, mata in ett tal mellan 1-5"); visa_meny = true; break; } } while (visa_meny); // Visa menyn sålänge visa_meny är sant Console.Write("Hur många {0} vill du lägga till: ", flaska); // Läs in hur många av drycken som ska läggas till, gör om sträng till integer. int antal = int.Parse(Console.ReadLine()); // Kolla så vi har plats för drycken i vår back if (antal_flaskor + antal < 24) { for (int i = 0; i < antal; i++) { flaskor[antal_flaskor] = flaska; antal_flaskor++; } // Räkna ut antalet platser kvar så vi kan visa det int kvar = flaskor.Length - antal_flaskor; Console.WriteLine("Du valde att lägga till {0} styck {1}", antal, flaska); Console.WriteLine("{0} platser kvar i läskbacken", kvar); } else { Console.WriteLine("Det finns inte plats för att lägga till {0} styck {1}, det finns bara {2} platser kvar. Försök igen ", antal, flaska, flaskor.Length - antal_flaskor); } } public void print_crate() { // Gå igenom alla flaskor, om platsen är fylld skriv ut drycken // annars skriv bara ut tom plats. foreach (var dryck in flaskor) { if (dryck != null) Console.WriteLine(dryck); else Console.WriteLine("Tom plats"); } } // Räkna ut totala värdet på backen private int calc_total() { int total = 0; foreach (var dryck in flaskor) { // Kolla så att platsen inte är tom if (dryck != null) total += 5; // Varje dryck kostar 5 kr så vi behöver inte kolla vad det är för dryck } return total; // Returnera totalen } } class Program { public static void Main(string[] args) { // Kör vårt program Console.WriteLine("Välkommen till läskbacken!"); // Skapa ett Sodacrate objekt var sodacrate = new Sodacrate(); sodacrate.Run(); // Kör vår run funktion för att börja Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }

Permalänk
Medlem

Istället för att returnera under där du skriver att det är fullt skulle du kunna sätta en annan flagga och sedan ändra utskrifter och hantering efter detta. Alternativt skapa det under en ny funktion som anropas om det är fullt. Är väl inget nytt du vill göra egentligen, bara till att skriva

Visa signatur

Redbox: Asrock B650 Lightning ATX, 7800x3D -20CCO, XFX 6950XT, 2x32GB Corsair Vengence 6400 CL32, WD SN770 2TB, Corsair RMe 1000, Lian Li Lancool 216, Peerless Assassin 120 SE
Purpbox: Z87-Pro, I5 4670K@4.2, Sapphire 290 TRI-X, 2x8GB Crucial Tactical@stock, Deep Silence 1
Samsung Evo 250+500GB + QVO 1TB, 2x1TB 7200RPM backup/lagring
Det var bättre förr: E5300 2600MHz -> 3640MHz, Celeron 300A -> 450MHz