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

Program ankieta

Object Storage Arubacloud
0 głosów
205 wizyt
pytanie zadane 14 października 2018 w C# przez annonymouzinho Nowicjusz (140 p.)

Cześć, piszę sobie taką prostą ankietę w C#, gdzie na podstawie zebranych danych program przydzieli nam zawód, do którego pasujemy.
Jest 5 zawodów, pytania wczytuję z pliku. Jest 10 pytań, po 2 pytania do każdego zawodu, odpowiedzi tak lub nie.

Ja zrobiłem to tak na piechotę, ponieważ porobiłem tam ify i jeśli odpowiedź na 1 i 2 pytanie była tak, to dodaje 2 punkty do kucharza, jeśli odpowiedź na 3 i 4 pytanie była tak i nie, to dodaje 1 punkt do nauczyciela itd.
Na końcu program sprawdza, który z zawodów ma więcej punktów i wyświetla go na ekranie. 
Niestety ten sposób jest bardzo słaby, tak ręcznie zrobiony, ale nie mam pomysłu jak można by to było zrobić lepiej...

Może macie jakieś ciekawe pomysły? Będę wdzięczny :)

Kod programu:

static void Main(string[] args)
        {
            int kucharz = 0;
            int nauczyciel = 0;
            int ogrodnik = 0;
            int strazak = 0;
            int mechanik = 0;
            int nr_pyt = 0;

            Console.SetWindowSize(60, 30);
            Console.Title = "Program";
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.BackgroundColor = ConsoleColor.DarkBlue;
            Console.Clear();
            Console.SetCursorPosition(10, 10);
            Console.WriteLine("Hello World");
            Console.WriteLine("To okno nazywa się " + Console.Title);

            string[] lines = File.ReadAllLines("Pytania.txt");

            for (int i = 0; i < 10; i++)
            {
                string odp;

                Console.WriteLine(lines[nr_pyt]);
                nr_pyt++;

                do
                {
                    odp = Console.ReadLine();
                    if (odp != "t" && odp != "T" && odp != "n" && odp!="N")
                  {
                      Console.Beep(300, 200);
                      Console.WriteLine("Twoja odpowiedź była inna niż t lub n! Spróbuj jeszcze raz:");
                  }

                } while (odp != "t" && odp != "T" && odp != "n" && odp != "N");


                if (nr_pyt == 1 || nr_pyt == 2)
                    {
                        if (odp == "t" || odp == "T") ++kucharz;
                    }

                    if (nr_pyt == 3 || nr_pyt == 4)
                    {
                        if (odp == "t" || odp == "T") ++nauczyciel;
                    }

                    if (nr_pyt == 5 || nr_pyt == 6)
                    {
                        if (odp == "t" || odp == "T") ++ogrodnik;
                    }

                    if (nr_pyt == 7 || nr_pyt == 8)
                    {
                        if (odp == "t" || odp == "T") ++strazak;
                    }

                    if (nr_pyt == 9 || nr_pyt == 10)
                    {
                        if (odp == "t" || odp == "T") ++mechanik;
                    }

                }


            if (kucharz > nauczyciel && kucharz > ogrodnik && kucharz > strazak && kucharz > mechanik) Console.WriteLine("Zostaniesz kucharzem!");
            if (nauczyciel > kucharz && nauczyciel > ogrodnik && nauczyciel > strazak && nauczyciel > mechanik) Console.WriteLine("Zostaniesz nauczycielem");
            if (ogrodnik > kucharz && ogrodnik > nauczyciel && ogrodnik > strazak && ogrodnik > mechanik) Console.WriteLine("Zostaniesz ogrodnikiem");
            if (strazak > kucharz && strazak > nauczyciel && strazak > ogrodnik && strazak > mechanik) Console.WriteLine("Zostaniesz strażakiem");
            if (mechanik > kucharz && mechanik > nauczyciel && mechanik > ogrodnik && mechanik > strazak) Console.WriteLine("Zostaniesz mechanikiem");

            Console.ReadLine();

        }

 

1 odpowiedź

0 głosów
odpowiedź 16 października 2018 przez pulson666 Stary wyjadacz (12,560 p.)
1) Liste zawodów daj do słownika. Dzięki temu nie będziesz miał tych if na samym końcu. Jedno zapytanie do listy i masz wynik.

2) For -> zmaiast pisać 10, policz ile lini ma plik. Wtedy możesz zmieniać liczbe pytań bez zmiany kodu :)

3) Co do samego pytania. W pliku txt zapisz sobie informacje, jakiego typu jest zwód. Następnie jeżeli ktoś odpowie tak to wiesz jaki to zawód. Wtedy sprawdzasz tylko czy odp Tak. Jeżeli tak to wtedy wyciągnij z pliku jaki to zawód i inkrementuj go w słowniku, Dzięki temu również możesz dodawać pytania bez zmiany kodu źródłowego.

4) Zamiast robić if (odp == "t" || odp == "T") zrób if (odp.toLower() == "t"). Nie interesuje Cie wielkość liter więc wszystkie daj na małe :)

Podobne pytania

+1 głos
1 odpowiedź 74 wizyt
0 głosów
0 odpowiedzi 87 wizyt
pytanie zadane 24 czerwca 2023 w Offtop przez mat19 Obywatel (1,580 p.)
+1 głos
0 odpowiedzi 148 wizyt
pytanie zadane 31 maja 2023 w Rozwój zawodowy, nauka, praca przez Smatix Obywatel (1,050 p.)

92,552 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 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!

...