C# :: Aufgabe #304

2 Lösungen Lösungen öffentlich

Steckbrief-Informationen

Anfänger - C# von DragStar - 06.04.2020 um 08:37 Uhr
Baue ein passendes Array, welches du mit Steckbriefinfos füllst (z.B. Name, Alter, Hobbies usw).
Danach lass den User ein Hobby eingeben und gib dann den Namen der Personen ein, die dieses Hobby haben.


Lösungen:

vote_ok
von JKooP (18090 Punkte) - 16.04.2020 um 12:03 Uhr
NET Core 3.x

Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
#nullable enable

namespace CS_Aufgabe_304_Steckbrief
{
    public enum Hobbys
    {
        Schwimmen = 1,
        Radfahren,
        Joggen,
        Skifahren,
        Modellbahn,
        Lesen
    }

    public class Steckbrief
    {
        public Steckbrief(string nachname, string? vorname = null, int? alter = null, params Hobbys[]? hobby)
        {
            Nachname = nachname;
            Vorname = vorname;
            Alter = alter;
            Hobby = hobby;
        }
        public string Nachname { get; }
        public string? Vorname { get; }
        public int? Alter { get; }
        public Hobbys[]? Hobby { get; }
    }

    class Program
    {
        private static List<Steckbrief>? _lstSB;

        static void Main(string[] args)
        {
            Beispielsteckbriefe();

            Console.WriteLine("Auswahlmöglichkeiten\n");
            var i = 0;
            foreach (var h in Enum.GetNames(typeof(Hobbys)))
                Console.WriteLine($"({++i}) {h}");

            Console.Write("Bitte Auswahl treffen: ");
            _ = int.TryParse(Console.ReadLine(), out var s);
            if (s < 1 || s > Enum.GetNames(typeof(Hobbys)).Count()) return;

            
            var lstHobby = _lstSB.Where(x => x.Hobby != null && x.Hobby.Any(y => (int)y == s)).Select(x => $"- {x.Nachname}").ToList();
            Console.WriteLine($"\nHobby '{Enum.GetName(typeof(Hobbys), s)}' ({lstHobby.Count()}):");
            lstHobby.ForEach(Console.WriteLine);
        }

        static void Beispielsteckbriefe()
        {
            _lstSB = new List<Steckbrief>
            {
                new Steckbrief("Meyer", "Hans", 45, null),
                new Steckbrief("Mueller", null, 76, Hobbys.Schwimmen, Hobbys.Joggen, Hobbys.Modellbahn),
                new Steckbrief("Schulze", "Heike", null, Hobbys.Schwimmen, Hobbys.Radfahren),
                new Steckbrief("Lehmann", null, 33, Hobbys.Schwimmen, Hobbys.Skifahren),
                new Steckbrief("Helm", "Franz", 63, Hobbys.Lesen)
            };
        }
    }
}
vote_ok
von Spooner (340 Punkte) - 17.04.2020 um 00:21 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {

        static void Main(string[] args)
        {
            List<Steckbrief> personen = new List<Steckbrief>();
            personen.Add(new Steckbrief("Peter", "Muster", 53, "Rot", Haustiere.Hund, Hobbys.Gamen));
            personen.Add(new Steckbrief("Max", "Halter", 31, "Blau", Haustiere.Katze, Hobbys.Motorradfahren));
            personen.Add(new Steckbrief("Sabine", "Grob", 28, "Grün", Haustiere.Hamster, Hobbys.Programmieren));
            personen.Add(new Steckbrief("Tanja", "Fernandez", 46, "Grün", Haustiere.Maus, Hobbys.Mountenbiken));
            personen.Add(new Steckbrief("Kevin", "AlleinZuHaus", 18, "Violett", Haustiere.Hund, Hobbys.Motorradfahren));
            personen.Add(new Steckbrief("Hans", "Peter", 24, "Hellblau", Haustiere.Maus, Hobbys.Motorradfahren));
            personen.Add(new Steckbrief("Svenja", "Atenza", 61, "Pink", Haustiere.Hund, Hobbys.Gamen));
            personen.Add(new Steckbrief("Norbert", "Krause", 49, "Anthrazit", Haustiere.Hund, Hobbys.Programmieren));
            personen.Add(new Steckbrief("Jakob", "Laufer", 29, "Blau", Haustiere.Katze, Hobbys.Gamen));
            personen.Add(new Steckbrief("Corina", "Gersbach", 42, "Rot", Haustiere.Hamster, Hobbys.Motorradfahren));

            Console.WriteLine("Gebe das Hobby ein nach welchem du filtern möchtest:\n");

            int zahl = 1;
            foreach (var h in Enum.GetNames(typeof(Hobbys)))
            {
                Console.WriteLine($"{zahl} - {h}");
                zahl++;
            }

            Console.Write("\nEingabe:");
            string eingabe = Console.ReadLine();

            var hobbyQuery = personen.Where((e) => e.Hobby.ToString() == eingabe);

            Console.Clear();
            Console.WriteLine($"\nFolgende Personen haben das Hobby -> {eingabe}:\n");

            if (hobbyQuery.Count() == 0)
            {
                Console.WriteLine("Deine Suche ergab keine Treffer!");
            }
            else
            {
                foreach(var person in hobbyQuery)
                {
                    Console.WriteLine(person.ToString());
                }
            }

            Console.WriteLine("\n\nDrücke eine Taste um das Fenster zu schliessen.");
            Console.ReadKey();
        }

    }

    public enum Haustiere
    {
        Hund = 1,
        Katze,
        Maus,
        Hamster
    }

    public enum Hobbys
    {
        Motorradfahren = 1,
        Mountenbiken,
        Programmieren,
        Gamen
    }

    public class Steckbrief
    {
        //Eigenschaften
        public string Vorname { get; set; }
        public string Nachname { get; set; }
        public int Alter { get; set; }
        public string Lieblingsfarbe { get; set; }
        public Haustiere Haustier{ get; set; }
        public Hobbys Hobby { get; set; }

        //Konstruktor
        public Steckbrief(string _vorname, string _nachname, int _alter, string _lieblingsfarbe, Haustiere _haustier, Hobbys _hobby)
        {
            Vorname = _vorname;
            Nachname = _nachname;
            Alter = _alter;
            Lieblingsfarbe = _lieblingsfarbe;
            Haustier = _haustier;
            Hobby = _hobby;
        }

        //Methoden
        public override string ToString()
        {
            return $"{Vorname} {Nachname}";
        }
    }
}
1808813

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.