• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Optymalne rozwiązanie C++

Object Storage Arubacloud
0 głosów
143 wizyt
pytanie zadane 28 marca 2019 w C i C++ przez Kaper99 Użytkownik (660 p.)

Witam! smiley


Głowię się nad optymalny posortowaniem trzech liczb które odpowiadają pracownikom w biurach.


Tzn muszę wyznaczyć w którym z 3 biur jest najwięcej pracowników i ilu. (zakładam, że może byc taka sama ilość pracowników w 2 lub 3 biurach.)

Mogę to zrobić IF-ami ale to raczej nie jest optymalne rozwiązanie, 
posortowałem też bąbelkowo te 3 liczby, ale po posortowaniu nie wiem, który indeks w tablicy odpowiada za ilość pracowników danego biura, tzn wiem ilu jest najwięcej pracowników, ale nie wiem do którego biura należą.

Czy ktoś ma na to jakiś sposób ?

2 odpowiedzi

+1 głos
odpowiedź 28 marca 2019 przez criss Mędrzec (172,590 p.)

tzn wiem ilu jest najwięcej pracowników, ale nie wiem do którego biura należą.

Nr biura i liczba pracownikow razem jako struktura. Sortujesz wtedy struktury po ilosci pracownikow.

Mogę to zrobić IF-ami ale to raczej nie jest optymalne rozwiązanie

Skoro znasz z góry ilosc elementow do posortowania, to owszem - to jest optymalne rozwiązanie. Tylko z głową te ify postaw. Jeśli się nie myle, to taki schemat zawsze posortuje 3 elementy:

if (a[0] > a[1]) swap(a[0], a[1]);
if (a[0] > a[2]) swap(a[0], a[2]);
if (a[1] > a[2]) swap(a[1], a[2]); 
0 głosów
odpowiedź 28 marca 2019 przez Kaper99 Użytkownik (660 p.)

Dziękuję za odpowiedź, zrobiłem to za pomocą struktur.
Wstawiam ciało funkcji do sprawdzenia oraz dla osób, które też może mają podobny problem.

int w1,w2,w3 //ilosc pracownikow w poszczegolnych biurach
struct aaa{
 int pracownicy,biura;
 };
 aaa *tablica=new aaa[3];
    tablica[0].pracownicy=w1;tablica[0].biura=1; //Biura oznaczone jako 1(pierwsze),2(drugie)..
    tablica[1].pracownicy=w2;tablica[1].biura=2;
    tablica[2].pracownicy=w3;tablica[2].biura=3;
   for(int i=0;i<3;i++)
   {
       for(int j=1;j<3-i;j++)
       {
           if(tablica[j-1].pracownicy >tablica[j].pracownicy)
            {swap(tablica[j-1].biura,tablica[j].biura);
             swap(tablica[j-1].pracownicy,tablica[j].pracownicy);
            }
       }

   }
   if(tablica[2].pracownicy==tablica[1].pracownicy )
   {
      if(tablica[2].pracownicy==tablica[0].pracownicy) {cout<<"JEst tyle samo pracownikow w kazdym biurze"<<endl;}
        else cout<<"Najwiecej pracownikow "<<tablica[2].pracownicy<<" jest w biurze "<<tablica[2].biura<<" oraz "<<tablica[1].biura<<endl;
   } else cout<<"Najwiecej pracownikow "<<tablica[2].pracownicy<<" jest w biurze"<<tablica[2].biura<<endl;

 

Podobne pytania

0 głosów
1 odpowiedź 273 wizyt
0 głosów
1 odpowiedź 271 wizyt
0 głosów
0 odpowiedzi 74 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...