Hjälp med kod. Felsökning och kvalitetssäkring

Trädvy Permalänk
Medlem
Registrerad
Apr 2019

Hjälp med kod. Felsökning och kvalitetssäkring

Hej!

Jag läser just nu en onlinekurs i programmering 1 och är på min allra sista uppgift som ska lämnas in imorgon innan jag ska göra min slutliga muntliga examination. Den handlar bland annat om felsökning och kvalitetssäkring. Jag har redan debuggat koden och inte hittat något fel. Däremot så har jag hittat ett fel på egen hand när jag provade koden.

Meningen är att man ska kunna lägga ner 24 flaskor i backen, men jag kan inte för mitt liv se vart jag har gjort fel. Då jag ska lägga in den 24:e flaskan så får jag upp ett meddelande där det står att det inte får plats med mer flaskor i backen.. Däremot om jag lägger in 23 flaskor så står det att jag har 1 plats kvar.

Såhär ser min kod ut:

namespace läskback { 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); } } }

Tack på förhand för all hjälp!

Trädvy Permalänk
Medlem
Registrerad
Sep 2012
Skrivet av Nybörjareprogrammering:

Hej!

Jag läser just nu en onlinekurs i programmering 1 och är på min allra sista uppgift som ska lämnas in imorgon innan jag ska göra min slutliga muntliga examination. Den handlar bland annat om felsökning och kvalitetssäkring. Jag har redan debuggat koden och inte hittat något fel. Däremot så har jag hittat ett fel på egen hand när jag provade koden.

Meningen är att man ska kunna lägga ner 24 flaskor i backen, men jag kan inte för mitt liv se vart jag har gjort fel. Då jag ska lägga in den 24:e flaskan så får jag upp ett meddelande där det står att det inte får plats med mer flaskor i backen.. Däremot om jag lägger in 23 flaskor så står det att jag har 1 plats kvar.

Såhär ser min kod ut:

namespace läskback { 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); } } }

Tack på förhand för all hjälp!

if (antal_flaskor + antal < 24) { for (int i = 0; i < antal; i++) { flaskor[antal_flaskor] = flaska; antal_flaskor++; } }

Bör bytas till

if (antal_flaskor + antal <= 24) ...

Annars stannar du på 23 st flaskor i backen

OS: Manjaro i3 / Windows 10 Pro 64-bit MB: ASUS-Z97-A CPU: i7 4790k
NÄTAGG: EVGA SUPERNOVA G2
RAM: 8192 MB GPU: 1070 FTW Chassi: Fractal Design R4
MBP 13" i5 | 256GB | 16GB RAM | MID 2014

Trädvy Permalänk
Medlem
Registrerad
Apr 2019

@N0iZE: Tack så mycket! Det fixade problemet

Trädvy Permalänk
Medlem
Registrerad
Sep 2012
Skrivet av Nybörjareprogrammering:

@N0iZE: Tack så mycket! Det fixade problemet

Inga problem

OS: Manjaro i3 / Windows 10 Pro 64-bit MB: ASUS-Z97-A CPU: i7 4790k
NÄTAGG: EVGA SUPERNOVA G2
RAM: 8192 MB GPU: 1070 FTW Chassi: Fractal Design R4
MBP 13" i5 | 256GB | 16GB RAM | MID 2014