Läskbacken slutprojekt programmering 1 C#

Trädvy Permalänk
Medlem
Registrerad
Apr 2019

Läskbacken slutprojekt programmering 1 C#

Halloj!
Håller nu på med mitt slutprojekt i programmering 1 och har fastnat på hur man räknar ut det totala värdet utav alla drycker man valt i läskbacken...
alla drycker har samma pris = 5kr så jag tycker inte att det borde vara för svårt att räka ut detta... (Jag siktar inte på ett superhögt betyg utan vill klara kursen men ändå förstå vad som händer:) )

Här är min kod:

namespace sodacrate { class Sodacrate { private string [] flaskor = new string[24]; private int antal_flaskor = 0; public void Run() { int meny = 0; do { Console.WriteLine("Välkommen till läskbacks-simulatorn!"); Console.WriteLine("Välj ett alternativ nedan!"); Console.WriteLine("1: Lägg till läsk"); Console.WriteLine("2: Visa innehållet i läskbacken"); Console.WriteLine("3: Totala kostnaden för backen"); Console.WriteLine("0: Avsluta"); meny = int.Parse(Console.ReadLine()); switch (meny) { case 1: add_soda(); break; case 2: print_crate(); break; /*case 3: calc_total(); break;*/ case 0: Console.WriteLine("Avslutar programmet..."); break; } }while ( meny != 0); } public void add_soda() { do { Console.WriteLine("Du får nu skriva in vilka drycker du vill ha i backen tills den är full:"); flaskor[antal_flaskor] = Console.ReadLine(); antal_flaskor++; }while (antal_flaskor != 24); if (antal_flaskor == 24) { Console.WriteLine("Backen är nu full med läsk!"); } } public void print_crate() { foreach (string back in flaskor) { Console.WriteLine(back); } } public int calc_total() { //HÄR } } class Program { public static void Main(string[] args) { //Skapar ett objekt av klassen Sodacrate som heter sodacrate var sodacrate = new Sodacrate(); sodacrate.Run(); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } }

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Nov 2011

Du har ju en int med antalet flaskor. antal_flaskor * 5 = svaret

Trädvy Permalänk
Medlem
Registrerad
Aug 2011

Console.WriteLine("Totala kostnaden är nu "+antal_flaskor*5);

Citera för svar :)

Intel 3770k / Msi Mpower / Msi 7970 Lightning / 16gb 1600mhz Corsair Vengeance / H100i / Silverstone Strider 1000w Gold / Samsung 830 128gb / Fractal Design Arc

Trädvy Permalänk
Medlem
Registrerad
Apr 2006

Får nästan känslan av att koden i övrigt är kopierad för detta borde vara rätt lätt i förhållande till den övriga koden

Trädvy Permalänk
Medlem
Registrerad
Apr 2019

@Najsisen:

public int calc_total() { int total = antal_flaskor*5; Console.WriteLine("totala kostnaden är nu"+total); return total; }

Såhär gjorde jag nu, och när jag väljer "totala kostnaden för backen" Så hände absolut inget. Varför?

Trädvy Permalänk
Medlem
Plats
Bôgda
Registrerad
Mar 2012
Skrivet av littymcnitty:

@improwise: Koden är inte kopierad... Försökte med denna metoden ett tag men man måste returnera ett värde? vilket?

Det måste du inte, ändra "public int calc_total()" till "public void calc_total()"

Desktop: | Win10 | InWin 303 | ASUS X99-A | Intel i7-5820K | Gamerstorm Captain 240 | Intel 600p 256GB | MSI R9 380 Gaming 4GB | 32GB DDR4 2400Mhz | Corsair RM650x | 3x 1080 Screens |
Datacenter: | 1x Physical | 7x Virtual |
Laptop: | Yes |

Trädvy Permalänk
Medlem
Plats
Varberg/Göteborg
Registrerad
Nov 2011
Skrivet av littymcnitty:

@Najsisen:

public int calc_total() { int total = antal_flaskor*5; Console.WriteLine("totala kostnaden är nu"+total); return total; }

Såhär gjorde jag nu, och när jag väljer "totala kostnaden för backen" Så hände absolut inget. Varför?

Är case 3 fortfarande utkommenterad?

switch (meny) { case 1: add_soda(); break; case 2: print_crate(); break; /*case 3: calc_total(); break;*/ case 0: Console.WriteLine("Avslutar programmet..."); break; }

| EVGA Z170 FTW | i7 6700k | EVGA GTX 1060 | 16GB DDR4 2400MHz | Cooler Master V850 | Samsung 840 Evo 250GB + 2x WD Black 500GB + Seagate 2TB SSHD |

Laptop: ThinkPad X1 Extreme

Trädvy Permalänk
Medlem
Registrerad
Apr 2019

@BrutalSwede: Herregud jag är fan hjärndöd... hahaha här har jag suttit i timmar och försökt olika metoder.
Ska se om det funkar nu, tack!

Trädvy Permalänk
Medlem
Registrerad
Apr 2019

Nu har jag en sista sak att göra klart. Instruktioner nedan.

Man ska inte kunna stoppa in fler än 25
drycker i backen, eventuellt kan man få välja
att ersätta en flaska i en full back med en
annan. Här används då med fördel variabeln
amount_bottles som kan hålla
reda på antal flaskor.
Ä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.

Hur kan man ersätta en flaska med en annan om backen är full? Ge mig gärna vägledning och inte färdiga svar för vill lära mig själv.
Tack!

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Apr 2009

@littymcnitty:

Du kan komma åt vilket objekt som helst i din Array du kallar "flaskor" med ett index.

För att komma åt flaska #1 används alltså index 0 osv.

Detta bör vara hjälp på traven för att fundera på en eventuell lösning. glhf!

Edit: Jag menar alltså såhär: flaskor[0] (Detta är det första objektet i din array).

Chassi: Fractal Design Define R3, Titanium CPU: Intel Core i7 7700K 4.8 GHz
MoBo: Gigabyte GA-Z270-Gaming K3 GPU: Sapphire RX Vega 64 8GB
RAM: Corsair LPX 16GB CL15 3000Mhz VENGEANCE SSD: Samsung 750 EVO 500GB
HDD: 500GB Seagate Barracuda 7200rpm PSU: LEPA B1000-MB

Trädvy Permalänk
Medlem
Registrerad
Apr 2019

@L.Forsgren: Tack! skall försöka imorgon, uppdaterar.

Trädvy Permalänk
Medlem
Registrerad
Apr 2006

@L.Forsgren: Eller ännu bättre, använd en List. Men det kanske kommer senare i utbildningen. Array fungerar så klart också men känns lite osmidigt i jämförelse tycker jag, speciellt om man är nybörjare kan jag tänka mig men det var rätt länge sen jag själv gick en introkurs i programmering

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Apr 2009
Skrivet av improwise:

@L.Forsgren: Eller ännu bättre, använd en List. Men det kanske kommer senare i utbildningen. Array fungerar så klart också men känns lite osmidigt i jämförelse tycker jag, speciellt om man är nybörjare kan jag tänka mig men det var rätt länge sen jag själv gick en introkurs i programmering

Ja, kommer knappt ihåg sist jag använde en array i princip. Men tror, som du säger, att det kommer lite senare. Har för mig att man alltid börjar med Array i alla typer av introkurser till programmering av någon anledning (Kanske finns en bra anledning som jag inte kan komma på just nu?).

Chassi: Fractal Design Define R3, Titanium CPU: Intel Core i7 7700K 4.8 GHz
MoBo: Gigabyte GA-Z270-Gaming K3 GPU: Sapphire RX Vega 64 8GB
RAM: Corsair LPX 16GB CL15 3000Mhz VENGEANCE SSD: Samsung 750 EVO 500GB
HDD: 500GB Seagate Barracuda 7200rpm PSU: LEPA B1000-MB

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007

@littymcnitty: Värt att tänka på är att din array alltid har 24 element (som den är deklarerad nu, du kanske ska ändra till 25?). När den skapas i början av programmet så fylls den med default-konstruerade värden för typen som den innehåller, i det här fallet strängar där default-värdet är en tom sträng. Det är t.ex. därför du måste ha variabeln antal_flaskor för att hålla reda på hur många flaskor du har, eftersom flaskor.Length alltid kommer returnera 24.

Vart jag vill komma med detta är att när du "lägger till" en flaska i arrayen så lägger du inte till ett nytt element, du ändrar bara värdet på ett av elementen. D.v.s. om användaren väljer att lägga till t.ex. "läskeblask" i backen så ändras flaskor[0] från "" till "läskeblask". Du vet alltså redan hur man ersätter en flaska eftersom det är precis det du egentligen gör i add_soda.

Trädvy Permalänk
Medlem
Plats
Skåneland
Registrerad
Mar 2005

do { Console.WriteLine("Du får nu skriva in vilka drycker du vill ha i backen tills den är full:"); flaskor[antal_flaskor] = Console.ReadLine(); antal_flaskor++; }while (antal_flaskor != 24);

Denna gör att totalsumman är en konstant. (24*5)kr.

"Om man arbetar tillräckligt länge med att förbättra ett föremål går det sönder. "

Hjälp oss göra världen lite snällare! www.upphittat.nu

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007
Skrivet av ZecretW:

Denna gör att totalsumman är en konstant. (24*5)kr.

Inte riktigt, den kan även vara 0. Men bra poäng, backen är alltid tom eller full eftersom användaren tvingas fylla hela backen.

Trädvy Permalänk
Medlem
Plats
Skåneland
Registrerad
Mar 2005
Skrivet av perost:

Inte riktigt, den kan även vara 0. Men bra poäng, backen är alltid tom eller full eftersom användaren tvingas fylla hela backen.

Korrekt. man kan fråga efter summan innan man matat in läskedrycker.

De säger att romarriket gick under för att de inte hade något sätt att beskriva noll.

"Om man arbetar tillräckligt länge med att förbättra ett föremål går det sönder. "

Hjälp oss göra världen lite snällare! www.upphittat.nu

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Aug 2013
Skrivet av L.Forsgren:

Ja, kommer knappt ihåg sist jag använde en array i princip. Men tror, som du säger, att det kommer lite senare. Har för mig att man alltid börjar med Array i alla typer av introkurser till programmering av någon anledning (Kanske finns en bra anledning som jag inte kan komma på just nu?).

Arrayer är lite mer svårjobbade då de kräver en längd vid instansiering och inte har lika simpla add/remove metoder som en List. Därför är det bra att börja med det för att förstå hur arrayer och index fungerar. För en List är i grunden en typ av array också.
Handlar om att lära sig den svåra vägen så att man uppskattar det enklare efteråt 😁

Arrayer är också något snabbare att loopa igenom, jag brukar skapa en array om jag vet att jag bara ska ha det till att visa någon data (inte lägga till / ta bort). Men skillnaden är rätt marginell, så om du inte sitter med bitshifting eller dylikt så lär du för det mesta använda List eller Dictionary.

Sen om du behöver flera dimensioner så får du använda arrays.

Skickades från m.sweclockers.com