programmering 1 . Buss projekt

Permalänk
Medlem

programmering 1 . Buss projekt

Hej , jag har löst den här projekten, men försöker få betyg A, men hittar inte nåt i boken eller i nätet som förklarar hur man kan lösa detta. Jag har gjort en klass för PRINT_SEX men ändå funkar inte bra .
är fast på hur man få de sista metoder att funka ,
tusen tack för hjälpen.

---------------------------------

namespace Project81 { class sex { public string kön; public string[] info = new string[25]; class Buss : sex { public int[] passagerare = new int[25]; public int antal_passagerare; public void Run() { int[] passagerare = new int[25]; int meny = 0; Console.WriteLine("Welcome to the awesome Buss-simulator"); do { Console.WriteLine("____________________________________________________________________"); Console.WriteLine("välj alternativ"); Console.WriteLine("___________________________________________________________"); Console.WriteLine("1. låt en man kliva i busssen "); Console.WriteLine("2. Skriv ut alla bussens passagerare"); Console.WriteLine("3. Beräkna den totala åldern"); Console.WriteLine("4. Beräkna medel åldern "); Console.WriteLine("5. Ta reda på den äldre man i bussen "); Console.WriteLine("6. Hitta åldern "); Console.WriteLine("7. Sortera bussen efter åldern "); Console.WriteLine("8. Ta reda på passagerarens kön"); Console.WriteLine("___________________________________________________________"); meny = int.Parse(Console.ReadLine()); switch (meny) { case 1: add_passenger(); break; case 2: print_buss(); break; case 3: calc_total_age(); break; case 4: calc_average_age(); break; case 5: max_age(); break; case 6: find_age(); break; case 7: sort_buss(); break; case 8: print_sex(); break; default: Console.WriteLine("felaktigt inmatining"); break; } } while (meny != 0); } public void add_passenger() { // Jag har laggt till ( Console.clear ) för att om man väljer val 1, då kommer en sida eller skärm, detta är bättre tycker jag, // jag har lärt mig detta av någon i studerande grupp i google. Console.WriteLine(""); Console.Clear(); Console.WriteLine("Ange talet för passagerare :"); // Här omvandlar jag det inmatatde talet som är deklarerat i början av koden, till intigar 32. antal_passagerare = Convert.ToInt32(Console.ReadLine()); // Här lägger startvärde, villkor och förändrings värde, för att skriva ut bara talet som användaren skriver in. for (int i = 0; i < antal_passagerare; i++) { if (antal_passagerare > 25) { Console.Write("slut bara 25 stolar"); string str = Console.ReadLine(); break; } Console.Write($"Hur många år vill du att passagerare vara[{i + 1}]:"); // Jag har laggt till här en ny intigar, eftersom den första intigar ( antal_passagerare ) funkade inte här, // då visste jag den funkar bara med passagerares antalet som användaren skriver in. int age = Convert.ToInt32(Console.ReadLine()); // Jag har satt fast här ett tag, sedan tog jag reda på att man måste sätta passagerares antal med passagerare värde som finns i vektorn. passagerare[i] = age; for (int k = 0; k < info.Length ; k++) { Console.WriteLine($" är passagerare man eller kvinna " + (k + 1)); kön = Console.ReadLine(); } /* (tal ==25 || tal > 25) { Console.WriteLine("Bussen är full"); break; } else if (i>25) { Console.WriteLine("hur många år vill du ha för passagerae"); tal = Convert.ToInt32(Console.ReadLine()); */ } } public void print_buss() { Console.WriteLine($"Åldern av passagerare som sitter i bussen är : \n"); // Här skapar jag en loop, så den körs 25 gånger. toma platser fick 0 för värde // Och sedan kommer skrivs ut åldern av passagerare som sitter i bussen. // Dessa personer sparat redan i vektorn som har värde PASSAGERARE. for (int i = 0; i < passagerare.Length; i++) { // Här skrivs ut lista av passagerare i bussen . Console.WriteLine(passagerare[i]); /* if (passagerare[i] <= 0) { Console.Write("ledig"); } */ } } public int calc_total_age() { // Jag har skapat en ny variable här för beräkna summan av total age int summan = 0; // en loop for (int i = 0; i < passagerare.Length; i++) { // den nya variablen plus eller lika med åldern av passagerare som vi mattat in . // Jag har satt fast lite för att förstå vad händer, eftersom variablen summan har värde 0 // Sedan uppfattat jag att det bara sätter som gör programmet beräknar totala åldern. summan += passagerare[i]; } Console.WriteLine("Den totala åldern av passagerare är " + summan); // Här man måste använda return för att retunera vädret av FOR parentasen . return summan; } public int calc_average_age() { // Skapat två nya variabler, en för summan av åldern och den andra för antal passagerare. // För att vi vill veta average age, så man måste dela passagerare ålden på antal passagerare. int summan = 0; int summan1 = 0; // loop for (int i = 0; i < passagerare.Length; i++) { summan += passagerare[i]; } // Delar värde eller passagerare åldern på antal passagerare. summan1 = summan / antal_passagerare; Console.WriteLine("Medel åldern är " + summan1); // Retunerar summan return summan1; } public int max_age() { // Här satt jag fast lite tills skapat en obejkt för att veta max age. // Sedan deklerarat variablen med passagerare och ett reserverad ord i C# Min. int maxValue = passagerare.Max(); Console.WriteLine("Den högsta åldern i bussen är " + maxValue); // Retunerar värde return maxValue; } public void find_age() { // Jag skapat här BOOL för att, om man hittar inte åldern som skrivit in, // då kommer utskrift visar att denn här åldern existerar inte. bool found = false; // Här skriver den inledande mening, sedan skapar variable och omvandlar den. Console.WriteLine("Vilken är den yngst åldern som du vill hitta ?"); int yngst = Convert.ToInt32(Console.ReadLine()); // Skapar variable och omvandlar den. Console.WriteLine("Vilken är det högst åldern som du vill hitta ?"); int högst = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Passagerarna som mellan åldern " + yngst + " - " + högst + " sitter i : "); // En loop som körs varv beroende på passagerare som sitter mellan de inmatade information. for (int i = 0; i < passagerare.Length; i++) { if (passagerare[i] > högst || passagerare[i] > yngst) { // Skriver ut stolen med åldern av personen som sitter på. // Här märkte jag att koden eller programmet tar bara de första stolarna, // så om man vill hitta åldern for example mellan 30 till 35. då kommer de sitta på de första 5 stolarna. // Detta eftersom vi laggt till [i] istället för passagerare [i]. // Det kommer skrivas ut alla stolen + åldern av passagerare. Console.WriteLine("stolen " + i); found = true; } } // Om den inmatade talen exsiterar inte i FOR, då kommer köras denna if . // Detta pekar på att den inmatade åldern finns inte. if (!found) { Console.WriteLine("OBS det finns inte sån ålder i bussen "); } } public void sort_buss() { // Jag har skapat en nyvariable för att jag kommer använda den sedan. int temp; // Om man vill sortera ålder i bussen, så måste man subtrahera 1 från passagerare. langth i loopen . for (int i = 0; i < passagerare.Length - 1; i++) { // Vi måste göra här en till loop, för att lagra värden eller elementen i listan som står i boken // Vi subtraherar en gång till här, för detta värde som är redan sorterade . for (int j = 0; j < passagerare.Length - 1 - i; j++) { // Jämför värden if (passagerare[j] > passagerare[j + 1]) { // Detta sätt är för ge båda värden samma värde temp = passagerare[j]; passagerare[j] = passagerare[j + 1]; passagerare[j + 1] = temp; } } } // Till slut här lägger vi till en till loop FOR och // skriver hur utskriften kommer se ut när man sorterar bussen efter åldern. for (int i = 0; i < passagerare.Length; i++) { Console.WriteLine("Passagerare " + (i + 1) + " är " + passagerare[i] + " år gammal "); } } public void print_sex() { for (int k = 0; k < info.Length +1; k++) { Console.WriteLine("Plats" + info[k] + kön); } //Betyg A //Denna metod är nödvändigtvis inte svårare än andra metoder men kräver att man skapar en klass för passagerare. //Skriv ut vilka positioner som har manliga respektive kvinnliga passagerare. } } } public void poke() { //Betyg A //Vilken passagerare ska vi peta på? //Denna metod är valfri om man vill skoja till det lite, men är också bra ur lärosynpunkt. //Denna metod ska anropa en passagerares metod för hur de reagerar om man petar på dom (eng: poke) //Som ni kan läsa i projektbeskrivningen så får detta beteende baseras på ålder och kön. } public void getting_off() { //Betyg A //En passagerare kan stiga av //Detta gör det svårare vid inmatning av nya passagerare (som sätter sig på första lediga plats) //Sortering blir också klurigare //Den mest lämpliga lösningen (men kanske inte mest realistisk) är att passagerare bakom den plats.. //.. som tillhörde den som lämnade bussen, får flytta fram en plats. //Då finns aldrig någon tom plats mellan passagerare. } } internal class Class1 { public static void Main(string[] args) { var minbuss = new Buss(); minbuss.Run(); minbuss.add_passenger(); var mysex = new sex(); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }

Fixat kodformat /mod
Permalänk
Medlem

För betyget A behöver du lösa problemet om en passagerare går av.

Säg att 5 passagerare har gått på bussen, då kan det se ut såhär:

passagerare = [19, 23, 76, 12, 45]

Om nu passageraren som är 76 år går av, hur ska du göra då?

Du vill ju t.ex. inte att passageraren ska räknas med i total ålder och om du frågar efter den maximala åldern på bussen så ska ju värdet istället för 76 blir 45.

Om en ny passagerare går på sedan, kommer du lagra hens ålder på platsen där 76 tidigare fanns, eller kommer du att lagra det efter 45? Om du lagrar det efter 45 så finns ju en risk att bussen har ett par tomma platser efter att några har gått av.

Den lösningen som föreslås i kommentarerna i koden är att efter att en person har gått av strukturera om passagerarna såhär:

[19, 23, 76, 12, 45]: 76 bort => [19, 23, tom, 12, 45] => (flytta 12): [19, 23, 12, tom, 45] => (flytta 45): [19, 23, 12, 45]

Edit: När du skriver in kod i formumet så kan du använda [code] [/ code] för att få koden presenterad på ett mer läsbart sätt.

Permalänk
Medlem
Skrivet av MickeBoy:

För betyget A behöver du lösa problemet om en passagerare går av.

Säg att 5 passagerare har gått på bussen, då kan det se ut såhär:

passagerare = [19, 23, 76, 12, 45]

Om nu passageraren som är 76 år går av, hur ska du göra då?

Du vill ju t.ex. inte att passageraren ska räknas med i total ålder och om du frågar efter den maximala åldern på bussen så ska ju värdet istället för 76 blir 45.

Om en ny passagerare går på sedan, kommer du lagra hens ålder på platsen där 76 tidigare fanns, eller kommer du att lagra det efter 45? Om du lagrar det efter 45 så finns ju en risk att bussen har ett par tomma platser efter att några har gått av.

Den lösningen som föreslås i kommentarerna i koden är att efter att en person har gått av strukturera om passagerarna såhär:

[19, 23, 76, 12, 45]: 76 bort => [19, 23, tom, 12, 45] => (flytta 12): [19, 23, 12, tom, 45] => (flytta 45): [19, 23, 12, 45]

Edit: När du skriver in kod i formumet så kan du använda [code] [/ code] för att få koden presenterad på ett mer läsbart sätt.

Kan du ge mig nån lektions namn eller nåt så jag söker på google efter den
Tack för hjälpen

Permalänk
Medlem

Du missade [ och ] på dina code-block.
Sen tvivlar jag på att man får A när man skapat en buss klass som ärver kön? Antar att det är passagerarna och inte bussen som ska ha kön

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Medlem
Skrivet av Ak94:

Kan du ge mig nån lektions namn eller nåt så jag söker på google efter den
Tack för hjälpen

Kolla på denna sida:

https://www.tutorialspoint.com/How-to-delete-remove-an-elemen...

Finns även ett par andra som kan vara användbara:
https://www.programiz.com/csharp-programming/arrays
https://stackoverflow.com/questions/496896/how-to-delete-an-e...