Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Program ankieta

Ostatnio zmodyfikowano 2018-10-14 20:42
Autor Wiadomość
annonymouzinho
Temat założony przez niniejszego użytkownika
Program ankieta
» 2018-10-14 19:50:23
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:

C/C++
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();
   
}
P-172605
YooSy
» 2018-10-14 20:42:01
Jest 10 pytań, po 2 pytania do każdego zawodu, odpowiedzi tak lub nie.
Co w sytuacji, gdy ktoś odda po dwa głosy twierdzące w dwóch zawodach?

Zrobiłbym tak:
1. Każdy zawód jako struct i umieścił w tablicy obiektów.
2. Odpytywał petentów i zapisywał ich odpowiedzi w tych strukturach.
3. Wyszukał obiekty z maksymalną liczbą punktów twierdzących (daje możliwość wypisania więcej niż jednego pasującego zawodu).
4. Wypisał dane ze znalezionych obiektów.
P-172606
« 1 »
  Strona 1 z 1