» »

[C#] Vrsta - razvrščanje

[C#] Vrsta - razvrščanje

z3ro ::

Zanima me, kako bi naredil razvrščanje za vrsto potnikov, ki se vkrcavajo na letalo. Imam sledečo vrsto potnikov:

Starost: 28 Sedeč: spredaj
Starost: 10 Sedeč: zadaj
Starost: 35 Sedeč: zadaj
Starost: 66 Sedeč: zadaj
Starost: 8 Sedeč: spredaj
Starost: 15 Sedeč: zadaj
Starost: 44 Sedeč: spredaj
Starost: 11 Sedeč: spredaj
Starost: 33 Sedeč: spredaj
Starost: 25 Sedeč: zadaj

Naloga je, da razvrstim potnike tako, da je za vsakem, ki je mladoleten (ali več mladoletnimi) ena odrasla oseba. Ostale razporedimo glede na to ali sedijo spredaj ali zadaj. Pravilno urejena vrsta je torej takšna:

Otroci s spremljevalci:
Starost: 10 Sedeč: zadaj
Starost: 35 Sedeč: zadaj
Starost: 8 Sedeč: spredaj
Starost: 15 Sedeč: zadaj
Starost: 44 Sedeč: spredaj
Starost: 11 Sedeč: spredaj
Starost: 33 Sedeč: spredaj
Sedeči spredaj:
Starost: 28 Sedeč: spredaj
Sedeči zadaj:
Starost: 66 Sedeč: zadaj
Starost: 25 Sedeč: zadaj

Zajebava me sledeča oseba- Starost: 44 Sedeč: spredaj , saj mi je ne da v skupino s spremljevalci. Vem da je za to kriv taprvi IF stavek, saj so pogoji izpolnjeni in se izvede koda znotraj tega IF stavka, ampak ne vem kako naj popravim da bo delovalo pravilno.

Koda:
while (potniki.Count > 0)       
            {
                Potnik p = potniki.Dequeue();
                
                if (p.starost >= 18 && potniki.Count > 0 && potniki.Peek().starost < 18  || potniki.Count == 0 && p.starost >= 18)                     
                                                                                
                        {
                            if (p.sedec == Sedez.spredaj)       
                                sedeci_spredaj.Enqueue(p);

                            else if (p.sedec == Sedez.zadaj)
                                sedeci_zadaj.Enqueue(p);
                        }
                    
                else if (p.starost >= 18 && potniki.Count > 0 && potniki.Peek().starost < 18)   
                {
                    otroci_in_sprem.Enqueue(p);                    
                }
                else if (p.starost < 18)
                {
                    otroci_in_sprem.Enqueue(p);                    
                }

            }

z3ro ::

Noben? :)

Genetic ::

Dodana pomozna spremenljivka vkrcan_mladoletni

bool vkrcan_mladoletni = false;
while (potniki.Count > 0)       
            {
                Potnik p = potniki.Dequeue();
                if (p.starost >= 18 && !vkrcan_mladoletni)                     
                                                                                
                        {
                            if (p.sedec == Sedez.spredaj)       
                                sedeci_spredaj.Enqueue(p);

                            else if (p.sedec == Sedez.zadaj)
                                sedeci_zadaj.Enqueue(p);
                        }
                    
                else if (p.starost >= 18 && vkrcan_mladoletni)   
                {
                    otroci_in_sprem.Enqueue(p);
                    vkrcan_mladoletni=false;
                }
                else if (p.starost < 18)
                {
                    otroci_in_sprem.Enqueue(p);
                    vkrcan_mladoletni=true;
                }

            }

z3ro ::

Hvala!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Za predlansko nesrečo tesle odgovorna Tesla in voznik (strani: 1 2 )

Oddelek: Novice / Znanost in tehnologija
5214280 (9131) Meizu
»

Nakup avta za 5+ oseb.

Oddelek: Na cesti
387821 (6633) 111111111111
»

Kdor dlje sedi, prej umre

Oddelek: Novice / Znanost in tehnologija
357931 (5566) kogledom
»

Varnostni pas (strani: 1 2 )

Oddelek: Znanost in tehnologija
556228 (3476) Nesta
»

Anketa o pripetih pasovih v avtomobilu (strani: 1 2 )

Oddelek: Na cesti
514895 (4107) Bojevnik

Več podobnih tem