Permalänk
Medlem

Programmering 1

Hej! jag sitter med min sista uppgift nu men har fastnat!
Jag ska programmera en buss som ska lagra passagerare med olika åldrar samt kön. Det jag har problem med är att jag vill att det ska vara gratis för barn från 0-7 år. Jag har fått allt annat i koden att fungera förutom detta, jag har försökt skapa en ny int men det verkar inte fungera när jag kör programmet så kostar det ändå 10 kr för barn oavsett om de är 0 eller 12. Så här ser min kod ut nu:
Tack i förhand!

class Bus { Passenger[] seats = new Passenger[25]; // Tillgängliga platser i bussen int maxAgeLimitPassenger = 90; // Ålders gräns på passagerare int adultPrice = 30; // Pris för en vuxen biljett int adolecentPrice = 20; // Pris för tonåringar int childPrice = 10; // Pris för barn 7+ int adultLimit = 20; // Vuxen gräns, de vill säga när man räknas som vuxen int childLimit = 12; // Barn gräns när man räknas som barn och kan ha en biljett för barn, jag valde 12 för att man slutar vabba när barnet är 12 public void Run() { while(true) { Console.Clear(); // Här suddas all text bort så det blir som en ny sida Console.WriteLine(" Welcome to the bus! "); Console.WriteLine("\nPlease choose your action\n" + // /n gör en ny linje programmet ber användaren välja en handling i menyn "in the menu below.\n" + "[A] Add Passenger\n" + // Lägg till passagerare "[S] Show prices\n" + // Visa priser "[R] Remove Passenger\n" + // Ta bort passagerare "[C] Current passengers\n" + // Visa nuvarande passagerare "[P] Passenger Interaction\n" + // Visa passagerares interaktioner "[Q] Quit"); // Avsluta menyn ConsoleKeyInfo inputFromUser = Console.ReadKey(true); // Beskriver tangenten som trycks in switch(inputFromUser.Key) { // Lägger till passagerare case ConsoleKey.A: { AddPassenger(); break; } // Priserna som vissas i menyn ovan case ConsoleKey.S: { Console.Clear(); // Rensar ny rad Console.WriteLine("==== Prices for the bus ====\n" + // Priserna för bussbiljetterna det kostar 0kr om passageraren är 3 eller yngre det läggs till en krona om passageraren är 4 och under 3 osv... "{0}kr for passengers of age {0} or older\n" + "{0}kr for passengers of age over {7} and under {6}\n" + "{0}kr for passengers of age {7} or under", adultPrice, adolecentPrice, childPrice , adultLimit, childLimit); Console.WriteLine("============================\n" + "Press any key to continue..."); Console.ReadKey(true); break; }

Lagt till [code]-taggar /mod
Permalänk
Medlem

Du visar inte din fullständiga kod. Vilken metod är det som felar, hur ser koden ut för den?

Permalänk
Medlem

Jag tror inte där är någon som kommer orka läsa igenom din kod om du inte ens försöker berätta vad problemet är.

Permalänk
Medlem

Jag har förklarat vad felet är, och sedan har jag kopierat ut koden som inte fungerar som den ska högst upp!
MEN det verkar inte ha framgått så jag får väll skriva det igen!
[Det jag har problem med är att jag vill att det ska vara gratis för barn från 0-7 år. Jag har fått allt annat i koden att fungera förutom detta, jag har försökt skapa en ny int men det verkar inte fungera när jag kör programmet så kostar det ändå 10 kr för barn oavsett om de är 0 eller 12.]
------------------------
HÄR ÄR KODEN SOM INTE FUNKAR SOM JAG VILL ATT DEN SKA!

Passenger[] seats = new Passenger[25]; int maxAgeLimitPassenger = 90; int adultPrice = 30; // int adolecentPrice = 20; int childPrice = 10; int adultLimit = 20; int childLimit = 12; public void Run() { while(true) { Console.Clear(); Console.WriteLine(" Welcome to the bus! "); Console.WriteLine("\nPlease choose your action\n" + "in the menu below.\n" + "[A] Add Passenger\n" + "[S] Show prices\n" + "[R] Remove Passenger\n" + "[C] Current passengers\n" + "[P] Passenger Interaction\n" + "[Q] Quit"); // Avsluta menyn ConsoleKeyInfo inputFromUser = Console.ReadKey(true); switch(inputFromUser.Key) { // Lägger till passagerare case ConsoleKey.A: { AddPassenger(); break; } // Priserna som vissas i menyn ovan case ConsoleKey.S: { Console.Clear(); // Rensar ny rad Console.WriteLine("==== Prices for the bus ====\n" + "{0}kr for passengers of age {0} or older\n" + "{0}kr for passengers of age over {7} and under {6}\n" + "{0}kr for passengers of age {7} or under", adultPrice, adolecentPrice, childPrice , adultLimit, childLimit); Console.WriteLine("============================\n" + "Press any key to continue..."); Console.ReadKey(true); break; }

Permalänk
Medlem
Skrivet av PogChamp:

Jag har förklarat vad felet är, och sedan har jag kopierat ut koden som inte fungerar som den ska högst upp!
MEN det verkar inte ha framgått så jag får väll skriva det igen!
[Det jag har problem med är att jag vill att det ska vara gratis för barn från 0-7 år. Jag har fått allt annat i koden att fungera förutom detta, jag har försökt skapa en ny int men det verkar inte fungera när jag kör programmet så kostar det ändå 10 kr för barn oavsett om de är 0 eller 12.]
------------------------
HÄR ÄR KODEN SOM INTE FUNKAR SOM JAG VILL ATT DEN SKA!
Passenger[] seats = new Passenger[25];
int maxAgeLimitPassenger = 90;

int adultPrice = 30; //
int adolecentPrice = 20;
int childPrice = 10;

int adultLimit = 20;
int childLimit = 12;
public void Run() {

while(true) {
Console.Clear();
Console.WriteLine(" Welcome to the bus! ");
Console.WriteLine("\nPlease choose your action\n" +
"in the menu below.\n" +
"[A] Add Passenger\n" +
"[S] Show prices\n" +
"[R] Remove Passenger\n" +
"[C] Current passengers\n" +
"[P] Passenger Interaction\n" +
"[Q] Quit"); // Avsluta menyn
ConsoleKeyInfo inputFromUser = Console.ReadKey(true);
switch(inputFromUser.Key) {
// Lägger till passagerare
case ConsoleKey.A: {
AddPassenger();
break;
}
// Priserna som vissas i menyn ovan
case ConsoleKey.S: {
Console.Clear(); // Rensar ny rad
Console.WriteLine("==== Prices for the bus ====\n" +
"{0}kr for passengers of age {0} or older\n" +
"{0}kr for passengers of age over {7} and under {6}\n" +
"{0}kr for passengers of age {7} or under", adultPrice, adolecentPrice, childPrice
, adultLimit, childLimit);
Console.WriteLine("============================\n" +
"Press any key to continue...");
Console.ReadKey(true);
break;
}

Console.WriteLine("==== Prices for the bus ====\n" + "{0}kr for passengers of age {0} or older\n" + "{0}kr for passengers of age over {7} and under {6}\n" + "{0}kr for passengers of age {7} or under", adultPrice, adolecentPrice, childPrice , adultLimit, childLimit);

Koden kompilerar inte ens när du har skrivit som du gjort. Vill du bara skriva ut vad priserna är för respektive åldersgrupp?

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB
LG C2 42" 4K@120Hz AOC Q27G2U 1440P@144Hz

Permalänk
Skrivet av Pamudas:

Console.WriteLine("==== Prices for the bus ====\n" + "{0}kr for passengers of age {0} or older\n" + "{0}kr for passengers of age over {7} and under {6}\n" + "{0}kr for passengers of age {7} or under", adultPrice, adolecentPrice, childPrice , adultLimit, childLimit);

Koden kompilerar inte ens när du har skrivit som du gjort. Vill du bara skriva ut vad priserna är för respektive åldersgrupp?

Precis,

något sånt här är nog vad du är ute efter:

Console.WriteLine($"==== Prices for the bus ====\n" + $"{adultPrice}kr for passengers of age {adultLimit} or older\n" + $"{adolecentPrice}kr for passengers of age over {childLimit} and under {adultLimit}\n" + $"{childPrice}kr for passengers of age {childLimit} or under");

Sen har du ju ingen logik som säger att det ska vara gratis om man är under 7? Orkar inte lusläsa allt men kunde inte hitta det när jag skrollade igenom. Du får sätta en till gräns precis som du gjort för ungdom. (en lägre åldersgräns för betalande passagerare)