Permalänk
Medlem

C# fastnat

Jag vet inte vart jag ska börja. Men ett av mina problem är att få mina värden lagrade i min Array så jag kan utföra lite olika saker. Måste bli klar då sambon bara drog för någon timme sedan och vi ska på semester och vi åker till flyget måndag natt, och jag har inte börjat packa något ännu då jag inte greppat C# än. Plugga på distans var knepigare än jag trodde och jag har suttit framför datorn sedan i fredags med denna uppgift. Jag har kollat på alla möjliga lösningar och klipp och klistrat och ändrat hit och dit och har helt tappat bollen. Måste lämna in i morgon.

Min kod ser ut såhär.

using System; namespace Bussen { class Buss { public int[] platser = new int[25]; // En vektor med 25 element public int antal_passagerare; public int[] ålder = new int[25]; public int sum; // Totala värdet public void Run() { Console.WriteLine("Välkommen till denna buss!\n"); Console.WriteLine("Välj ett av följande alternativ.\n"); int meny = 0; do { Console.WriteLine("\nnr 1: Lägg till antal passagerare."); Console.WriteLine("nr 2: Skriv ut åldrarna på passagerarna."); Console.WriteLine("nr 3: Vad är den sammanlagda ålderna på passagerarna i bussen."); Console.WriteLine("nr 4: Avlsuta programmet och välkommen åter.\n"); meny = int.Parse(Console.ReadLine()); switch (meny) { case 1: LäggTill_passagerare(); break; case 2: ålder_passagerare(); break; case 3: Console.WriteLine(); break; case 4: Console.WriteLine("Programmet avslutas"); break; default: Console.WriteLine("\nFelakgtig inmatning, försök igen."); break; } } while (meny != 4); } public void LäggTill_passagerare() { Console.Write("Hur många vill du lägga till: "); int antal_nya = int.Parse(Console.ReadLine()); if (antal_passagerare + antal_nya < 25) // Om antalet nya understiger 25 { for (int i = 0; i < antal_nya; i++) { platser[antal_passagerare] = antal_nya; // Antal platser som fylls antal_passagerare++; } Console.WriteLine(platser.Length - antal_passagerare + " platser kvar på bussen"); // Antal platser kvar på bussen } else { Console.WriteLine("Det finns inte plats för " + antal_nya + " till, det finns endast plats för ytterligare " + (platser.Length - antal_passagerare) + ("pers")); // Hur många platser det finns kvar att fylla om man valt för många return; } for (int x = 0; x < antal_nya; x++) // loopa nypåstigna { for (int i = 0; i < ålder.Length; i++) // loopa ålderna på alla nypåstigna if (ålder[i] == 0) { Console.Write("Ange passagerares " + (x + 1) + " ålder: "); ålder[i]= int.Parse(Console.ReadLine()); break; } } } //Skriv ut alla värden ur vektorn. Alltså - skriv ut alla passagerare public void ålder_passagerare() { foreach (int ålder in platser) { Console.WriteLine(platser); break; } } public int calc_total_age(int ålder) { //Beräkna den totala åldern. //För att koden ska fungera att köra så måste denna metod justeras, alternativt att man temporärt sätter metoden med void int summa = ålder; return summa; } class Program { public static void Main(string[] args) { //Skapar ett objekt av klassen Buss som heter minbuss //Denna del av koden kan upplevas väldigt förvirrande. Men i sådana fall är det bara att "skriva av". var minbuss = new Buss(); minbuss.Run(); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } } }

Permalänk
Medlem

Komplettering

@sbozic:

Jag ska göra en meny med en switch case. Där kan man sedan välja olika alternativ. Man fyller i olika värden som ska lagras för att sedan kunna skriva ut hela array samt skriva ut det total summan av array, och jag håller fortfarande på med case 1.

Permalänk
Medlem

Hej,

Inte för att vara negativ men det är många väldigt grundläggande fel i din kod. Blir nog helt ärligt kämpigt att försöka få ordning på det innan semestern

Utan att ge dig för mycket gratis också men var, exakt, skiter det sig?
Börja använd debuggern!! Förstår inte varför det inte tas upp mer på utbildningar. Tryck F9 på en rad. Starta med F5 och stega genom koden med F10. Då kan du se vilka värden alla variabler har vid olika tillfällen i koden osv.

Skickades från m.sweclockers.com

Visa signatur

Outtröttlig, löpartokig besserwisser!

Bli vegan! För djuren, planeten, hälsan och våra barns skull!

Permalänk
Medlem
Skrivet av NisseG91:

Hej,

Inte för att vara negativ men det är många väldigt grundläggande fel i din kod. Blir nog helt ärligt kämpigt att försöka få ordning på det innan semestern

Utan att ge dig för mycket gratis också men var, exakt, skiter det sig?
Börja använd debuggern!! Förstår inte varför det inte tas upp mer på utbildningar. Tryck F9 på en rad. Starta med F5 och stega genom koden med F10. Då kan du se vilka värden alla variabler har vid olika tillfällen i koden osv.

Skickades från m.sweclockers.com

Hej! Ja det är väl det. Sitter på Mac och har faktiskt inte fått till den debugg funktionen riktigt. Jag kan stega mig igenom vissa delar men kan inte se vad det är som händer. Det omnämns i kursen jag går men jag får inte till det på min Mac.

Jag ska prova börja om lite snabbt från början och se om jag kan få till det. Tack i alla fall.

Jag tror det skiter sig vid

if (antal_passagerare + antal_nya < 25) // Om antalet nya understiger 25 { for (int i = 0; i < antal_nya; i++) { platser[antal_passagerare] = antal_nya; // Antal platser som fylls antal_passagerare++; } Console.WriteLine(platser.Length - antal_passagerare + " platser kvar på bussen"); // Antal platser kvar på bussen } else { Console.WriteLine("Det finns inte plats för " + antal_nya + " till, det finns endast plats för ytterligare " + (platser.Length - antal_passagerare) + ("pers")); // Hur många platser det finns kvar att fylla om man valt för många return; }

Permalänk
Medlem
Skrivet av NisseG91:

Hej,

Inte för att vara negativ men det är många väldigt grundläggande fel i din kod. Blir nog helt ärligt kämpigt att försöka få ordning på det innan semestern

Utan att ge dig för mycket gratis också men var, exakt, skiter det sig?
Börja använd debuggern!! Förstår inte varför det inte tas upp mer på utbildningar. Tryck F9 på en rad. Starta med F5 och stega genom koden med F10. Då kan du se vilka värden alla variabler har vid olika tillfällen i koden osv.

Skickades från m.sweclockers.com

Sorry att jag bombarderar så här. Men här är koden som jag vill få till. Allt ser ut att funka men jag upplever det som om inte värdena lagras i mina arrays.

using System; namespace Bussen_V2 { class Buss { public int[] platser = new int[25]; // En vektor med 25 element public int antal_passagerare; public int[] ålder = new int[25]; public void Run() { Console.WriteLine("Välkommen till denna buss!\n"); Console.WriteLine("Välj ett av följande alternativ.\n"); int meny = 0; do { Console.WriteLine("\nnr 1: Lägg till antal passagerare."); Console.WriteLine("nr 2: Skriv ut åldrarna på passagerarna."); Console.WriteLine("nr 3: Vad är den sammanlagda ålderna på passagerarna i bussen."); Console.WriteLine("nr 4: Avlsuta programmet och välkommen åter.\n"); meny = int.Parse(Console.ReadLine()); switch (meny) { case 1: LäggTill_passagerare(); break; case 2: Console.WriteLine(); break; case 3: Console.WriteLine(); break; case 4: Console.WriteLine("Programmet avslutas"); break; default: Console.WriteLine("\nFelakgtig inmatning, försök igen."); break; } } while (meny != 4); } public void LäggTill_passagerare() { Console.Write("Hur många vill du lägga till: "); int antal_nya = int.Parse(Console.ReadLine()); if (antal_passagerare + antal_nya < 25) // Om antalet nya understiger 25 { for (int i = 0; i < antal_nya; i++) { platser[i] = antal_nya; // Antal platser som fylls i++; } Console.WriteLine(platser.Length - antal_passagerare + " platser kvar på bussen"); // Antal platser kvar på bussen } else { Console.WriteLine("Det finns inte plats för " + antal_nya + " till, det finns endast plats för ytterligare " + (platser.Length - antal_passagerare) + ("pers")); // Hur många platser det finns kvar att fylla om man valt för många return; } for (int x = 0; x < antal_nya; x++) // loopa nypåstigna { for (int i = 0; i < ålder.Length; i++) // loopa ålderna på alla nypåstigna if (ålder[i] == 0) { Console.Write("Ange passagerares " + (x + 1) + " ålder: "); ålder[i] = int.Parse(Console.ReadLine()); break; } } } class Program { public static void Main(string[] args) { //Skapar ett objekt av klassen Buss som heter minbuss //Denna del av koden kan upplevas väldigt förvirrande. Men i sådana fall är det bara att "skriva av". var minbuss = new Buss(); minbuss.Run(); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }

Permalänk
Medlem

Okej, först och främst, vad fyller din array platser för funktion?

En fråga till, måste ni använda array eller är en list okej?
När man ska ta bort och lägga till saker så är inte en array helt fördelaktig. List hade t.ex. varit bättre i det här fallet.

Men om vi utgår från att en array är ett måste:

Om användaren matar in att den vill lägga till 25 platser så lagrar du värdet 25 på 25 platser i den arrayen, alltså får du i det fallet en array vid namn platser som har 25 stycken likadana värden? Varför inte skrota den helt och BARA köra på antal_passagare och ålder-arrayen?

Så när metoden läggTill_passagerare körs så lägger du till det värdet som användaren vill till värdet på antal_passagare. t.ex:

Console.Write("Hur många vill du lägga till: "); int antal_nya = int.Parse(Console.ReadLine()); //Vad händer om jag matar in någonting som inte är en integer här? if(antal_passagerare+antal_nya <= 25) { antal_passagerare += antal_nya; for (int x = 0; x < antal_nya; x++) // loopa nypåstigna { for (int i = 0; i < ålder.Length; i++) // loopa ålderna på alla nypåstigna { if (ålder[i] == 0)//Vad händer om jag matar in någon som har en ålder på 0? { Console.Write("Ange passagerares " + (x + 1) + " ålder: "); ålder[i] = int.Parse(Console.ReadLine()); break; } } } } else { Console.WriteLine("Kan inte lägga till " + antal_nya + " passagerare på bussen, då blir det överfullt."); }

Hoppas du blev klokare av min ytterst slarviga kod.

Visa signatur

Outtröttlig, löpartokig besserwisser!

Bli vegan! För djuren, planeten, hälsan och våra barns skull!

Permalänk
Medlem
Skrivet av NisseG91:

Okej, först och främst, vad fyller din array platser för funktion?

En fråga till, måste ni använda array eller är en list okej?
När man ska ta bort och lägga till saker så är inte en array helt fördelaktig. List hade t.ex. varit bättre i det här fallet.

Men om vi utgår från att en array är ett måste:

Om användaren matar in att den vill lägga till 25 platser så lagrar du värdet 25 på 25 platser i den arrayen, alltså får du i det fallet en array vid namn platser som har 25 stycken likadana värden? Varför inte skrota den helt och BARA köra på antal_passagare och ålder-arrayen?

Så när metoden läggTill_passagerare körs så lägger du till det värdet som användaren vill till värdet på antal_passagare. t.ex:

Console.Write("Hur många vill du lägga till: "); int antal_nya = int.Parse(Console.ReadLine()); //Vad händer om jag matar in någonting som inte är en integer här? if(antal_passagerare+antal_nya <= 25) { antal_passagerare += antal_nya; for (int x = 0; x < antal_nya; x++) // loopa nypåstigna { for (int i = 0; i < ålder.Length; i++) // loopa ålderna på alla nypåstigna { if (ålder[i] == 0)//Vad händer om jag matar in någon som har en ålder på 0? { Console.Write("Ange passagerares " + (x + 1) + " ålder: "); ålder[i] = int.Parse(Console.ReadLine()); break; } } } } else { Console.WriteLine("Kan inte lägga till " + antal_nya + " passagerare på bussen, då blir det överfullt."); }

Hoppas du blev klokare av min ytterst slarviga kod.

Hej! För det första så tack för at du tagit dig tid, uppskattas. Sen så tror jag att jag hänger med hyfsat. Vi måste göra det i en array. Jag visste inte att jag lagt värdet 25 i varje index "låda". Men behöver jag inte ha kvar den för att veta vilka som är tomma? Public int platser; typ

Permalänk
Medlem

@sbozic: det vet du ju i och med din ålder-array. om ålder är -1 (förslag, sätt det till -1 när den är tom.) så är platsen tom. är den inte det så är den upptagen

Visa signatur

Outtröttlig, löpartokig besserwisser!

Bli vegan! För djuren, planeten, hälsan och våra barns skull!

Permalänk
Medlem
Skrivet av sbozic:

Men behöver jag inte ha kvar den för att veta vilka som är tomma?

Så länge som du bara låter användaren lägga till passagerare så räcker det att du bara vet hur många platser som är fyllda, d.v.s. antal_passagerare. Om antal_passagerare är t.ex. 5 så vet du att index 0 till 4 i arrayen är fyllda och nästa lediga index är 5.

Om du däremot vill låta användaren ta bort eller lägga till passagerare på valfri plats i bussen så måste du hitta på någon mer komplicerad lösning, men vad jag sett av såna här uppgifter så brukar sån funktionalitet inte efterfrågas.

Permalänk
Medlem

Du vill nog skriva till index platser[antal_passagerare + i] för att inte radera alla tidigare passagerare när du lägger till nya.

Eller platser[(antal_passagerare-1) + i]

Visa signatur

The first ten million years were the worst, and the second ten million years, they were the worst too. The third ten million I didn't enjoy at all. After that I went into a bit of a decline