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

Pomoc w zrozumieniu zadania

Object Storage Arubacloud
+1 głos
549 wizyt
pytanie zadane 13 czerwca 2015 w C i C++ przez falauthy Stary wyjadacz (11,550 p.)
Treść zadania z książki - dość "specyficzna". :p

Kiedy przyłączasz się do Zakonu Programistów Dobrej Woli, na spotkaniach ZPDW możesz występować pod swoim prawdziwym imieniem, ukrytym stanowiskiem służbowym lub pod tajnym pseudonimem ZPDW. Napisz program pokazujący członków zakonu według ich imion, stanowisk służbowych, pseudonimów lub według wyboru samych członków. Program ma być oparty na strukturze:
<Tutaj struktura>

UWAGA: int preferencje

W programie stwórz niewielką tablicę takich struktur i zainicjalizuj ją odpowiednimi wartościami. Program ma działać w pętli, umożliwiając wybranie jednej z czterech operacji:
<tutaj a'la menu>

Zauważ, że lista wg preferencji nie oznacza pokazania liczby z pola preferencje, ale pokaznie tego pola, które wynika z preferencji danego członka zakonu. Jeśli na przykład pole preferencje ma wartość 1, wybór opcji d (to z menu preferencja) spowoduje pokazanie stanowiska danego programisty.

Może ktoś mi rozwinąć myśl autora? Bo za bardzo nie rozumiem o co z tą preferencją chodzi.
komentarz 29 czerwca 2019 przez morela92 Nowicjusz (160 p.)
edycja 28 kwietnia 2020 przez Arkadiusz Waluk

co myslisz o takim rozwiazaniu ?

#include <iostream>
#include <limits>
using namespace std;
void showmenu();
struct Zakon{
char name[23];
char stanowisko[20];
char pseudo[20];
int pref;
};
int main()
{

    char choice;
    Zakon workers[4] =
    {
        {"Jurek", "helpdesk", "MrX", 1},
        {"Adam","programer","krypton",2},
        {"Marian", "bazodanowiec","Inject",3},
        {"Janusz","tech","Janko", 4}
    };

showmenu();
while(((cin >>choice) == false) || (choice != 'd' && choice != 'b' && choice != 'a' && choice != 'c'))
{
    cout << "zly wybor poonow probe" << endl;
    showmenu();
    cin.clear();
    cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
}

switch(choice)
       {
       case 'a':
           cout<<"sort by name: "<<endl;
       for(int i =0; i < 4;i++)
           {
                cout<< workers[i].name<<endl;
           }
           break;

        case 'b':
               cout<<"sort by position: "<<endl;
               for(int i =0; i < 4;i++)
           {
                cout<< workers[i].stanowisko<<endl;
           }
           break;
        case 'c':
            cout<<"sort by pseudo: "<<endl;
               for(int i =0; i < 4;i++)
           {
                cout<< workers[i].pseudo<<endl;
           }
           break;
       case 'd':
              cout<<"sort by name: "<<endl;
               for(int i =0; i < 4;i++)
           {
                cout<< workers[i].name<<endl;
           }
           break;
       default:
           showmenu();
        break;
       }
    return 0;
}
void showmenu()
{
    cout<<"wynierz jedna z opcji : "<<endl;
    cout<<"a. imiona \t b. stanowiska"<<endl;
    cout<<"c. pseudo \t d. preferencje"<<endl;
}

3 odpowiedzi

+2 głosów
odpowiedź 13 czerwca 2015 przez Dash Nałogowiec (29,650 p.)
Rozwiązałem to zadanie, książka Praty, nieprawdaż?

Ogólnie chodzi o to, że preferencja określa w jaki sposób mamy się do danej jednostki zwracać. Jeżeli preferencja wynosi 0 to nazwisk, 1 to stanowiska a 2 przezwisko. Już rozumiesz? Odwołując się do preferencji programisty, o wartości preferencji 1, zostanie nam wyświetlone jego stanowisko.
komentarz 13 czerwca 2015 przez falauthy Stary wyjadacz (11,550 p.)
Dawno nie kodziłem i nie wiem jak to zaimplementować. :)
komentarz 13 czerwca 2015 przez Dash Nałogowiec (29,650 p.)
Chyba najłatwiej przy pomocy switch'a. Zczytanie wartości preferencji, następnie switch(nazwa_struktury[x].preferencje) i warunki (case 1: cout<<nazwa_struktury[x]. stanowisko; break; case 2: cout<<nazwa_struktry[x].przezwisko.; break;

Treść poszczególnych warunków zależy już od tego jak sformułowałeś swoją strukturę. Całość wystarczy zamknąć w pętli  for , aby wykonało się dla wszystkich struktur w tablicy (obiekt w tablicy zostanie wskazany przez iterator).
komentarz 13 czerwca 2015 przez falauthy Stary wyjadacz (11,550 p.)
Dzięki, będę kombinował. :)
komentarz 13 czerwca 2015 przez Dash Nałogowiec (29,650 p.)
Nie chcę Ci wykładać rozwiązania na srebrnej tacy, ale jak będziesz miał jakiś problem pisz, pomogę :)
–1 głos
odpowiedź 26 marca 2020 przez michleyo Nowicjusz (200 p.)
edycja 28 kwietnia 2020 przez Arkadiusz Waluk
#include <iostream>
void showmenu();

using namespace std;

const int StrSize=30;
const int ArSize=5;

int main()
{
    char input;

    struct zpdw
    {
        char imie[StrSize];
        char stanowisko[StrSize];
        char pseudozpdw[StrSize];
        int preferencje;
    };

    zpdw pracownik[ArSize]=
    {
        {"Mateusz", "Kapitan", "Mariusz Pudzianowski", 2},
        {"Jakub", "Majtek", "Lysy", 1},
        {"Kamil", "Bosman", "Siwy", 3},
        {"Edmund", "Mlodszy sternik", "Chudy", 3},
        {"Ryszard", "Sternik", "Gruby", 2}
    };

    do
    {
        showmenu();

        cin>>input;

        switch(input)
        {
        case 'A': case 'a':
            for (int i=0; i<5; i++)
                cout<<pracownik[i].imie<<endl;
            break;
        case 'B': case 'b':
            for (int i=0; i<5; i++)
                cout<<pracownik[i].stanowisko<<endl;
            break;
        case 'C': case 'c':
            for (int i=0; i<5; i++)
                cout<<pracownik[i].pseudozpdw<<endl;
            break;
        case 'D': case 'd':
            for (int i=0; i<5; i++)
            {
                if (pracownik[i].preferencje==1)
                    cout<<pracownik[i].imie<<endl;
                else if (pracownik[i].preferencje==2)
                    cout<<pracownik[i].stanowisko<<endl;
                else if (pracownik[i].preferencje==3)
                    cout<<pracownik[i].pseudozpdw<<endl;
            }
            break;
        case 'Q': case 'q':
            cout<<"koniec\n";
            break;
        default :
            cout<<"Wybrano niepoprawna opcje.\n";
        }
        cout<<endl;

    } while (input!='Q'&&input!='q');

    return 0;
}

void showmenu()
{
    cout<<
        "a) lista wg imion\t\t" "b) lista wg stanowisk\n"
        "c) lista wg pseudonimow\t\t" "d) lista wg preferencji\n";
}
–1 głos
odpowiedź 28 kwietnia 2020 przez Natalia.s Nowicjusz (140 p.)
edycja 28 kwietnia 2020 przez Arkadiusz Waluk
#include <iostream>
using namespace std;

const int strsize = 10;

int main()
{

    struct zpdw
    {
        char imie[strsize];
        char stanowisko[strsize];
        char pseudozpwd[strsize];
        int preferencje;
    };

    zpdw tab[3] =
    {
        {"Olek", "Dyrektor", "Kolo", 2},
        {"Kacper", "Sprzatacz", "Czyscioch", 1},
        {"Marek", "SeniorDev", "Makao", 0}
    };

    cout << "Zakon Programostow Dobrej Woli: " << endl << "a. lista wg imion      " << "b. lista wg stanowisk" << endl;
    cout << "c. lista wg pseudonimow       d. lista wg preferencji" << endl << "q. koniec";

    char ch;
    cin >> ch;

    while (!(ch == 'a' || ch == 'b' || ch == 'c' || ch == 'd' || ch == 'q'))
    {
        cout << "Wybierz jedna z opcji: ";
        cin >> ch;
    }

    switch (ch)
    {
        case 'a':
        {
            for (int i = 0; i < 3; i++)
            {
                cout << tab[i].imie <<endl;
            }
        }
            break;

        case 'b':
        {
            for (int i = 0; i < 3; i++)
            {
                cout << tab[i].stanowisko <<endl;
            }
        }
                    break;

        case 'c':
        {
            for (int i = 0; i < 3; i++)
            {
                cout << tab[i].pseudozpwd <<endl;
            }
        }
                    break;

        case 'd':
        {
            for (int i = 0; i < 3; i++)
            {
                switch (tab[i].preferencje)
                {
                    case 0: cout << tab[i].imie <<endl;
                        break;

                    case 1: cout << tab[i].stanowisko <<endl;
                        break;

                    case 2: cout << tab[i].pseudozpwd <<endl;
                        break;

                }
            }
        }
                    break;

        case 'q': break;
    }

}

Podobne pytania

0 głosów
1 odpowiedź 407 wizyt
pytanie zadane 19 lipca 2021 w Algorytmy przez wojtek_suchy Mądrala (6,880 p.)
0 głosów
2 odpowiedzi 384 wizyt
pytanie zadane 1 listopada 2016 w C i C++ przez Kenzi Nowicjusz (200 p.)
0 głosów
0 odpowiedzi 100 wizyt

92,631 zapytań

141,496 odpowiedzi

319,864 komentarzy

62,011 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!

...