C# :: Aufgabe #286

3 Lösungen Lösungen öffentlich

Zufällige Buchstaben für Stadt-Land-Fluss

Anfänger - C# von charlyP - 26.03.2020 um 00:24 Uhr
Es soll ein beliebiger Buchstabe des Alphabets (ohne Umlaute) ausgegeben werden und dann auf Anforderung des Nutzers immer wieder ein weiterer Buchstabe, wobei jeder Buchstabe des Alphabets nur ein Mal ausgegeben werden darf.

Viel Spaß

Lösungen:

vote_ok
von JKooP (18090 Punkte) - 27.03.2020 um 09:06 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Linq;

namespace CS_Aufgabe_286_Buchstaben_SLF
{
    class Program
    {
        static void Main(string[] args)
        {
            var lstLetters = Enumerable.Range('A', 26).OrderBy(x => Guid.NewGuid()).ToList();
            var i = 0;

            while (i < 26)
            {
                Console.Write("Für einen neuen Buchstaben 'Enter'; Zum Beenden 'B + Enter': ");
                if (Console.ReadLine().ToUpper().Substring(0) == "B")
                    return;
                Console.WriteLine($"\n>> {(char)(lstLetters[++i - 1])} <<");
            }

            Console.WriteLine("Spiel beendet - Alle Buchstaben aufgebraucht!");
        }
    }
}
vote_ok
von Waldgeist (2310 Punkte) - 27.03.2020 um 18:44 Uhr
Hier meine Lösung,

Quellcode ausblenden C#-Code
using System;
using System.Windows;

namespace ZufälligeBuchstaben
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private Random rdm = new Random((int)DateTime.Now.Ticks);
        private bool[] test = new bool[26];
        private int zaehler = 0;

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            int z = rdm.Next(0, 26);

            if (zaehler <= 26)
            {

                while (test[z])
                {
                    z = rdm.Next(0, 26);
                }
                                
                    char c = (char)(65 + z);
                    ausgabebox.Text = "Buchstabe  " + c;
                    test[z] = true;
                    zaehler++;
                

            }

            else ausgabebox.Text = "Alle Buchstaben des Alphabets wurden verwendet";
        }
        
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            ausgabebox.Clear();
            zaehler = 0;
            for (int i = 0; i < test.Length - 1; i++)
            {
                test[i] = false;
            }
        }
    }
}


Hier der XAML Code

Quellcode ausblenden C#-Code
<Window x:Class="ZufälligeBuchstaben.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ZufälligeBuchstaben"
        mc:Ignorable="d"
        Title="Stadt-Land-Fluss Buchstaben Generator!" Height="250" Width="300">
    <Grid>
        <Button Content="Buchstabe generieren" HorizontalAlignment="Center" Height="37" Margin="0,18,0,0" VerticalAlignment="Top" Width="240" Click="Button_Click" />
        <TextBox x:Name="ausgabebox" HorizontalAlignment="Center" Height="57" Margin="0,68,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="240" TextAlignment="Center" FontFamily="Arial Black" />
        <Button Content="Zurücksetzten" HorizontalAlignment="Center" Height="30" Margin="0,136,0,0" VerticalAlignment="Top" Width="240" Click="Button_Click_1" />
    </Grid>
</Window>
vote_ok
von steinwand (150 Punkte) - 08.04.2020 um 11:03 Uhr
Hierbei wird, sobald keine Buchstaben mehr zur Verfügung stehen, der Array erneut erstellt.

Quellcode ausblenden C#-Code
using System;

namespace Buchstaben
{
    class Program
    {
        static void Main(string[] args)
        {

            char[] alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
            while (true)
            {
                Console.WriteLine("Klicken Sie Enter um Fortzufahren.");
                if (Console.ReadKey().Key == ConsoleKey.Enter)
                {
                    Random num = new Random();
                    int tempI = num.Next(0, alpha.Length);
                    var temp = new string(alpha);
                    int index = temp.IndexOf(alpha[tempI]);
                    Console.WriteLine(alpha[tempI]);
                    temp = temp.Remove(index, 1);
                    alpha = temp.ToCharArray();
                    Console.WriteLine(alpha);
                    if (alpha.Length == 0)
                        alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
                }
            }
        }
    }
}
2092672

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.