Avatar billede emil123 Juniormester
28. april 2022 - 19:52 Der er 7 kommentarer

Jeg har brug for hjælp med at finde fejlen

hej folkens, jeg har brug for hjælp. Jeg er relativt set allerede færdig med min kode (dog mangler jeg stadig at skrive til fil etc men tager jeg bagefter) men lige ved endemålet går lortet galt:

string adultTicketString;
            int adultTicket = 0, childTicket = 0, childTicketPrice = 30, adultTicketPrice = 65;
            int totalPrice = 0;
            string AnswerMember;
            int discountPrice = 0;
            int discount;
            string euroReply;
            int totalTicket = 500;
            int euroPrice = 0;

            Console.WriteLine("Welcome to TEC Ballerup Stadium!\n" +
                "Adult tickets are 65 DKK, children tickets are 30 DKK.\n" +
                "You can buy a maximum of 10 children tickets and 10 adult tickets.\n" +
                "A child can only enter with an adult, so the child ticket cannot be as big as the adult ticket.\n");

            do
            {
                //purchase of adult ticket
                Console.WriteLine("How many adult tickets do you want?\n ");
                adultTicket = Convert.ToInt32(Console.ReadLine());

                //if adult ticket is greater than 10 or less than 1 then the loop starts again
            } while (adultTicket > 10 || adultTicket < 1);


            if (adultTicket > 0)
            {
                do
                {
                    //if child ticket is greater than 10 or less than 1 then the loop starts again
                    Console.WriteLine("\nHow many child tickets do you want?\n ");
                    childTicket = Convert.ToInt32(Console.ReadLine());

                } while (childTicket > 10 || childTicket < 1);
            }
            totalPrice = (adultTicket * adultTicketPrice) + (childTicket * childTicketPrice);
            {
                Console.WriteLine("\nder is for "+ totalPrice+ " in dkk\n");

                //ask for membership
                Console.WriteLine("Are you a member? answer YES or NO");

                AnswerMember = Console.ReadLine();

                if (AnswerMember.ToUpper() == "YES")
                {
                    Console.WriteLine("\nYou get 10% discount\n ");
                    discount = totalPrice * 10 / 100;
                    discountPrice = totalPrice - discount;
                    Console.WriteLine("The price with discount included is now " + discountPrice + "\n");
                }
               

                if (AnswerMember.ToUpper() == "NO")
                {
                    Console.WriteLine("\nYou don't get any discount\n");
                    Console.WriteLine("the price without discount is" + totalPrice + "\n");
                }

               
                Console.WriteLine("Would you like to pay in Euro? answer YES or NO\n");
                euroResponse = Console.ReadLine();

                if (euroResponse == "YES")
                {
                    Console.WriteLine("\nYou have chosen to pay with Euro\n ");
                    euroPrice = Convert.ToInt32(totalPrice * 0.13);
                    Console.WriteLine($"You must pay {euroPrice} EUR! ");
                }
                else if (euroReply == "NO")
                {

                    Console.WriteLine($"You must pay {totalPrice * 0.13} DKK ");
                }

Det går flydende igennem but så når man når til at brugeren skal type om de gerne vil have rabat og de siger ja så tæller min program det ikke med i min sidste euro og dkk pris. Hvordan kan det være? Er der en måde jeg kan fikse det uden at udslette noget af min kode? please hjælp
Avatar billede arne_v Ekspert
28. april 2022 - 19:56 #1
Ikke sikker paa at jeg har forstaaet problemet.

Men du fratraekker rabat her:

discountPrice = totalPrice - discount;

men senere i programmet bruger du totalPrice ikke discountPrice!
Avatar billede arne_v Ekspert
28. april 2022 - 19:59 #2
Jeg kunne godt komme med nogle andre kommentarer til koden, men de relaterer sig ikke til dit problem men generel kodestil.
Avatar billede arne_v Ekspert
28. april 2022 - 20:00 #3
Jeg undrer mig over at du ganger med 0.13 naar du udskriver prisen i DKK.
Avatar billede Syska Mester
28. april 2022 - 20:22 #4
Har du prøvet med en debugger? Hvad er de forskellige værdier sat til? Er de det du forventer siden den ikke kommer ind i din "if"?

Du siger også "ja", men du tester på "yes" ... ( Du har husket case ), men du kan også gøre det sådan her:

var answer = "yes";
var result = string.Equals(answer, "YES", StringComparison.OrdinalIgnoreCase);

Udover det, så må du have redigeret i din kode, for `euroResponse` er ikke erklæret nogen steder. Det gør det meget svært for os at teste ... da min første tanke er ... hvad mon der mere er lavet om.

Den bedste måde at få hjælp på, er at poste din kode som den er. Lad være med at være skærmt over der er nogen der ser den ... vi kan alle blive bedre og det bliver vi kun hvis man får feedback på det.
Avatar billede emil123 Juniormester
28. april 2022 - 22:36 #5
Jeg har fundet ud af det, men tak folkens. Men et andet spørgsmål. Hvordan skriver jeg til fil osv? Det kan jeg ikke helt få mit hoved omkring
Avatar billede arne_v Ekspert
29. april 2022 - 01:05 #6
En typisk konstruktion er:

using(StreamWriter sw = new StreamWriter(fnm))
{
    // brug sw
}
Avatar billede Syska Mester
29. april 2022 - 13:02 #7
Normalt er det god praksis at skrive ind hvad fejlen var og hvad der løste det.

Det er også godt at kommentarer på det som folk skriver til dig.

Det virker desværre lidt som envejs kommunikation.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester