Sprawdzenie/porównanie w pętli zawartości tablicy.

0

Hej, nie znalazłem odpowiedzi na moje pytanie więc piszę. W programie użytkownik wpisał w konsoli wartości do tablicy 4-elementowej (typ string) poprzez pętle FOR.

Załóżmy, że wygląda to tak:

 
tab[0] = k;
tab[1] = o;
tab[2] = t;
tab[3] = y;
 
string[] haslo = new string[4];
            string odpowiedz;
            Welcome();

            for (int i = 0; i < haslo.Length; i++)
            {
                int letter = i;
                letter++;
                Console.WriteLine("Type next letter: " + letter);
                haslo[i] = Console.ReadLine();
            }

Chciałbym, żeby user ( najlepiej ?? poprzez petle for/while) odgadywał po kolei wartości komórek tabeli (kombinowałem z GetVallue - ale nie uzysuje pożądanych efektów) , i najwazniejsze - żeby po odgadnięciu tych 4 wartości program zakończył się (break...or sth)

Jakieś małe podpowiedzi?:)

0

Użyj do...while w tym for i wartość podaną przez użytkownika przyrównuj do odpowiedniego elementu tablicy.

0

Najzwyklejsze porównywanie stringów. Nie potrzebujesz GetValue(). Pętla while i użycie jakiejś zmiennej pomocniczej. Sprecyzuj, czego nie potrafisz w tym zrobić.

0

Generalnie napisałem coś takiego.

string[] haslo = new string[4];
            string odpowiedz;
            int ilosc_liter = 0;
            Welcome();

            for (int i = 0; i < haslo.Length; i++)
            {
                int letter = i;
                letter++;
                Console.WriteLine("Type letter " + letter);
                haslo[i] = Console.ReadLine();
            }
            Console.Clear();

            Check();
 

Użytkownik wpisuje wielkość tablicy (ile komórek na string), następnie wypełnia te komórki wybranymi przez siebie stringami, dopoki nie wypełni ostatniej komórki.

Teraz chce żeby w kolejnej pętli krok po kroku algorytm sprawdzał odpowiedzi użytkownika czy sa prawidłowe czy nie - i po skończeniu wypisze na ekran np - brawo zgadłeś.

Domyślam się ,że najlepiej było by tutaj użyć pętli DO WHILE.

Ja napisałem coś takiego - ale to nie jest to czego oczekuje i nie działą tak jak powinno.

 
for (int i = 0; i < haslo.Length; i++)
            {
                Console.WriteLine("Guess letter: ");
                odpowiedz = Console.ReadLine();
                ilosc_liter++;
                if (odpowiedz == haslo[i])
                {
                    Console.WriteLine("Great, try next\n");
                }
                else
                {
                    Console.WriteLine("Sorry, false, try again\n");
                }
            }

Mniemam ,że muszę jakoś sensownie zaimplementować pętle w pętli / jakąs doatkową zmienną// dodatkowo mam problem z Convert/Parse... żeby porównać string do int

Na koniec dodam, że jestem początkującym programistą - i to wszystko dopiero układa mi się w głowie - cała ta mechanika :)

0

Możesz użyć pętli do/while, poglądowy programik na szybko:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("How many letters...");
        var numberOfLetters = Convert.ToInt32(Console.ReadLine());

        var password = new string[numberOfLetters];

        for (var i = 0; i < password.Length; i++)
        {
            Console.WriteLine("Type letter " + (i + 1));
            password[i] = Console.ReadLine();
        }
            
        Console.Clear();
        Console.WriteLine("Guess letter...");

        var x = 0;
        do
        {
            var answer = Console.ReadLine();
            if (answer.Equals(password[x]))
            {
                Console.WriteLine("Great, try next\n");
                x++;
            }
            else
            {
                Console.WriteLine("Sorry, false, try again\n");
            }
        }
        while (x != password.Length);
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1