@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.
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
}
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);
}
}
}