C# pętla nie zapamiętuje zmiany w string.

0

Witam mam z pętlą for lub while (tutaj nie wiem jakiej powinienem użyć jako prawidłowej), wydaje mi się, że w za każdym ponowieniem pętli wczytuje mi wejściową wartość stringu abc a nie wyjściową wartość zmiennej abc z pętli:

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication17
{
    class Tablice
        {
            public static void Main()
            {
                string[] tablica = new string[10] ;
                tablica[0] = "abecadło" ;
                tablica[1] = "kotek" ;
                tablica[2] = "but";
                tablica[3] = "samochod";
                tablica[4] = "klucz";
                tablica[5] = "polak";

                Random rand = new Random();
                int slowo = rand.Next(0, 5);
                //string a;
                string abc;
                string orginal;
                abc = tablica[slowo];
                orginal=tablica[slowo];

                string[] tablicas = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "ł", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };

                //Console.WriteLine("\n Grasz o słowo: " + abc);

                foreach (string znak in tablicas)
                {
                    abc = abc.Replace(znak, "*");
                }

 

                for (; ;)
                {


                string[] tablicas2 = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l","ł", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };
          
                    //Console.WriteLine("\n Grasz o słowo: " + abc);
                
                    foreach (string znak in tablicas)
                {
                   abc=abc.Replace(znak, "*");
                }

                Console.WriteLine("Odgadnij to słowo: " + abc);
                
               
                    Console.WriteLine("\n Którą litęrę chesz sprawdzić?");
                    string szukanie;
                    string szukanie2;
                    szukanie = Console.ReadLine();
                    szukanie2 = szukanie;
                    Console.WriteLine("\n Wyszukaliśmy literę/y {0}\n", szukanie);
                    int dlugosc = orginal.Length;
                    int trafil = 0;

                    string literas = szukanie2;
                    string duza = literas.ToUpper();
                    abc = orginal.Replace(literas, duza);
                 //   Console.WriteLine(abc);

                    for (int i = 0; i < dlugosc; i = i + 1)
                    {
                        // string litera = orginal[1];
                        char[] litera = abc.ToCharArray();
                        char[] szukaj = szukanie.ToCharArray();

                        duza = literas.ToUpper();
                        abc = orginal.Replace(literas, duza);
                        if (szukaj[0] == litera[i])
                        {
                            int miejsce;
                            trafil = '1';
                            miejsce = i + 1;
                            Console.WriteLine("Gratulacje znalazłeś literę {0} na miejscu {2}, ", szukaj[0], litera[i], miejsce);
                        }
                    }
                    if ('1' == trafil) {} else { Console.WriteLine("PUDŁO"); }

                }
               }
        }
}

0

Witam mam z pętlą for lub while
znaczy się, co masz z tą pętlą?

.. nie ważne. nie wiem co jest źle z twoim programem. cały jest trochę chaotyczny. przepisałem od nowa:

using System;
using System.Text;
 
namespace ConsoleApplication17
{
    class Tablice
        {
            public static void Main()
            {
                string[] tablica = new string[]
                {"abecadło", "kotek", "but", "samochod", "klucz", "polak"};
 
                Random rand = new Random();
                int slowo = rand.Next(0, tablica.Length);

                string orginal = tablica[slowo];
                int dlugosc = orginal.Length;

                string duzymi = orginal.ToUpper();
                StringBuilder abc = new StringBuilder(dlugosc);
                abc.Append('*',dlugosc);

                for (; ;)
                {
                    Console.WriteLine("Odgadnij to słowo: " + abc.ToString());
                    Console.WriteLine("\n Którą literę chesz sprawdzić?");
                    char litera = Char.ToUpper(Console.ReadKey().KeyChar);

                    Console.WriteLine("\n Wyszukaliśmy literę {0}\n", litera);

                    bool trafil = false;
                    for (int i = 0; i < dlugosc; i++)
                    {
                        if (duzymi[i] == litera)
                        {
                            trafil = true;
                            abc[i] = orginal[i];
                            Console.WriteLine("Gratulacje znalazłeś literę {0} na miejscu {1}, ", litera, i+1);
                        }
                    }
                    if (!trafil) Console.WriteLine("PUDŁO");
                }
            }
        }
}

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