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

Optymalne rozwiązanie C++

Cloud VPS
0 głosów
191 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,570 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ź 470 wizyt
0 głosów
1 odpowiedź 390 wizyt
0 głosów
0 odpowiedzi 121 wizyt

93,488 zapytań

142,422 odpowiedzi

322,773 komentarzy

62,908 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

Kursy INF.02 i INF.03
...