Avatar billede needit Nybegynder
27. september 2013 - 18:13 Der er 11 kommentarer og
1 løsning

C# - Luft under vingerne

Jeg vil høre om der er nogle der kan hjælpe med dette ?


Til at foretage bookningen af pladser i Luft Under Vingernes fly er du blevet bedt om i C# at udvikle et program, der kan foretage denne proces automatisk.
Programmet skal kunne tage imod 2 parametre: Flyets antal sæder og antal passagerer til flyet. Herefter skal programmet automatisk tildele et tilfældigt sæde per passager og vise det i en liste. Eventuelle tomme sædenumre vises i en anden liste ved siden af.
Flyselskabets krav til programmet:

- Det skal ikke være muligt at forsøge at booke pladser til flere passagerer, end der er sæder i flyet.
- Et sæde må kun tildeles til én passager per fly.
- Flyets fordeling af sæder skal foregå tilfældigt.
Avatar billede janus_007 Nybegynder
27. september 2013 - 19:12 #1
Jeg formoder det skal holdes så banalt som muligt da det er en opgave.


Du skal lave en trådsikker singleton klasse som styrer tildelingen af sæder.
I den klasse laver du en liste af sæder og vælger tilfældigt et sæde når der bookes.
Avatar billede needit Nybegynder
27. september 2013 - 19:21 #2
OKay ja, Lyder meget lækkert :)

Ved du evt. hvordan en kode ser ud til det ? :D
Avatar billede MadsHaupt Juniormester
29. september 2013 - 16:49 #3
Du kan bruge denne klasse til det.
class Fly
    {

        List<int> ledigeSæder = new List<int>();
        List<Person> optagetSæder = new List<Person>();
        Random random = new Random();

        public Fly(int sæder) {
            for (int i = 1; i < sæder + 1; i++)
            {
                ledigeSæder.Add(i);
            }
        }

        private int GetSæde()
        {
            int ran = random.Next(0, ledigeSæder.Count - 1);
            int getsædevalue = ledigeSæder[ran];
            ledigeSæder.RemoveAt(ran);
            return getsædevalue;
        }

        public void AddPerson(string navn)
        {
            optagetSæder.Add(new Person(GetSæde(), navn));
        }

        public int[] LedigeSæder
        {
            get
            {
                return ledigeSæder.ToArray();
            }
        }

        public Person[] OptagetSæder
        {
            get
            {
                return optagetSæder.ToArray();
            }
        }

    }
    class Person
    {
        public int sæde;
        public string navn;
       
        public Person(int sæde, string navn)
        {
            this.sæde = sæde;
            this.navn = navn;
        }
    }
Avatar billede needit Nybegynder
29. september 2013 - 17:15 #4
Hvordan får jeg den til at virke ?
Avatar billede MadsHaupt Juniormester
29. september 2013 - 17:30 #5
Du opretter bare en ny klasse og erstatter koden.
Avatar billede needit Nybegynder
29. september 2013 - 17:39 #6
Men den virker vel ikke, hvis jeg ikke har fået lavet et design ?
Avatar billede MadsHaupt Juniormester
29. september 2013 - 18:33 #7
Den klasse jeg har lavet skal du bruge til at udtrække tilfældige sæder til forskellige personer.

Eksempel:
Fly a = new Fly(5);
a.AddPerson("Mads Haupt");
a.AddParson("Peter");
a.AddPerson("Jakob");
int[] LedigeSæder = a.LedigeSæder;
Person[] OptagetSæder = a.OptagetSæder;
Avatar billede MadsHaupt Juniormester
29. september 2013 - 18:41 #8
En lille rettelse af klassen så den kommer med en fejl meddelelse hvis der ikke er flere sæder.

Rettelse:
class Fly
    {

        List<int> ledigeSæder = new List<int>();
        List<Person> optagetSæder = new List<Person>();
        Random random = new Random();

        public Fly(int sæder) {
            for (int i = 1; i < sæder + 1; i++)
            {
                ledigeSæder.Add(i);
            }
        }

        private int GetSæde()
        {
            int ran = random.Next(0, ledigeSæder.Count - 1);
            int getsædevalue = ledigeSæder[ran];
            ledigeSæder.RemoveAt(ran);
            return getsædevalue;
        }

        public void AddPerson(string navn)
        {
            if (ledigeSæder.Count == 0)
            {
                throw new Exception("Der er ikke plads til flere personer.");
            }
            else
            {

                optagetSæder.Add(new Person(GetSæde(), navn));
            }
        }

        public int[] LedigeSæder
        {
            get
            {
                return ledigeSæder.ToArray();
            }
        }

        public Person[] OptagetSæder
        {
            get
            {
                return optagetSæder.ToArray();
            }
        }

    }
    class Person
    {
        public int sæde;
        public string navn;
       
        public Person(int sæde, string navn)
        {
            this.sæde = sæde;
            this.navn = navn;
        }
    }
Avatar billede needit Nybegynder
29. september 2013 - 18:50 #9
Det virker bare ikke når jeg indfører det i Visual Studio desktop ?
Avatar billede MadsHaupt Juniormester
29. september 2013 - 18:58 #10
Jeg ved min klasse virker, men jeg tror ikke jeg kan forklare hvad der er galt, kan du ikke sende projektet til mig på mail, så kan jeg rette det.

Min email er madshaupt@live.dk
Avatar billede needit Nybegynder
29. september 2013 - 19:00 #11
Når jeg indtaster din gode kode, får jeg bare en tom boks om hvor der står form1..

Der skal jeg jo helst have en boks, hvor jeg kan bestille 1 plads eller flere og trykke på en knap, hvor der så kommer 2 tekstboxe eller listboxe og skriver hvilke sæder der er ledige og hvilke der er optaget
Avatar billede needit Nybegynder
29. september 2013 - 19:02 #12
Tror måske det er lettere at du sender dit til mig ? For der er ingen fejl som sådan, har bare ikke det grafiske ?

min mail er

manuneedit@hotmail.com

hvis du vil :) Vil være en kæmpe hjælp
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