Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026

    Inserimento carattere per carattere dare la stringa giusta c#

    Salve.
    Sono sempre alle prese con il problema di manipolare le stringhe.
    codice:
     foreach (char b in nome)
                        {
                            foreach (char b2 in s4)
                            {
                                if (b2 == b) s5 += b2;
    
                                if ((s5.Length > 2) && (flag))
                                {
                                    s5 = s5.Remove(0, 1);
                                    flag = false;
                                }
                                if ((s5.Length > 3) && (flag))
                                {
                                    s5 = s5.Remove(0, 2);
                                    flag = false;
                                }
                                if (s5.Length > nome.Length) 
                                {
                                    s5 = s5.Remove(0, 1);
                                }
                            }
                     }
    Da console inserisco un carattere per volta fino a dare la soluzione della stringa "nome".
    Solo che mi sono bloccato qui e non riesco andare più avanti.
    Il codice inserisce caratteri nella nuova stringa "s5" ma non in maniera corretta, cioè ogni volta che è giusto aggiunge, se non è giusto non aggiunge, sempre in ordine con la stringa "nome".

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    93
    ma cosa stai facendo?qual'è al consegna?quali sono le variabili e che funzione hanno?spiegati meglio.hai messo un pezzo di codice sperando che tutti intuiscano quello che vuoi fare...

  3. #3
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Prova ad eseguire questo codice nel main.
    codice:
                int dif = 1;
                string nome = "portare";
                string s2 = "";
                string s4 = String.Empty;
                string s5 = String.Empty;
                string s6 = String.Empty;
                string s_finale=String.Empty;
                int conta = 0;
                int conta2 = 0;
                int conta_s5=0;
                bool flag = true;
                string n_asterischi = "";
                conta = 0;
    
                if (flag)
                {
                    s4 = string.Empty;
                    s5 = string.Empty;
                }
                Console.WriteLine("Da ora hai 5 tentativi");
    
                for (int i = 1; i <= 10; i++)
                {
                    Console.Clear();
    
                    Console.WriteLine("La parola contiene: " + conta + " lettere");
    
                    Console.WriteLine("Tentativo n." + i);
                    // Forzo ad inserire un solo carattere nella stringa s2
                    s2 = Convert.ToString(Console.ReadLine());
                    if (s2 == "")
                    { // Corregge errore in caso nella stringa s2 risulti vuota
                        s2 = " ";
                    }
                    if (s2.Length >= 2)
                    {// Controlla se hai inserito due o più caratteri
                        Console.WriteLine("Attenzione !!!");
                        Console.WriteLine("Hai inserito due o più caratteri\n");
                    }
                    s2 = s2.Remove(0, (s2.Length - 1));
                    foreach (char c in nome)
                    {
                        foreach (char c2 in s2)
                        {
                            if ((c2 == c) && !(s4.Contains(c2)))
                                s4 += c2;
                        }
                    }
                    if (s4.Length <= nome.Length)
                    {
                        foreach (char b in nome)
                        {
                            foreach (char b2 in s4)
                            {
                                if (b2 == b) s5 += b2;
    
                                if ((s5.Length > 1) && (flag))
                                {
                                    s5 = s5.Remove(0, dif);
                                    flag = false;
                                    dif = dif + 1;
                                }
    
                                if ((s5.Length >= nome.Length) && !(flag))
                                {
                                    s5 = s5.Remove(0, 2);
                                    flag = false;
                                    s5=s5.Insert(s5.Length, " ");
                                    dif = dif + 1;
                                }
    
                                if (s5.Length > nome.Length) 
                                {
                                    s5 = s5.Remove(0, 1);
                                }
    
                            }
                        }
                       
                    }
    
                    string correctString = nome.Replace(nome, n_asterischi);
                    Console.WriteLine("Hai indovinato le lettere: " + s4 +
                        " " + correctString);
                    Console.WriteLine("[Premi Invio]");
    
                    if (s5 == "")
                    { s5 = " "; }
                    Console.WriteLine("---***** S5 " + s5);
                    Console.ReadKey();
                }
                if (nome == s5)
                {
                    Console.WriteLine("Hai vinto");
                    s4 = "";
                    s5 = "";
                    
                    Console.ReadKey();
                }
                else
                    if ((nome!= " ") && (nome != ""))
                    {
                        Console.WriteLine("Hai perso");
                        flag = true;
                        Console.ReadKey();
                    }
    e prova a digitare la parola "portare" dalla console un carattere per volta.
    In teoria dovrebbe scrivere tutta la parola, separata da spazi ed inserire il carattere giusto nel posto giusto, tipo il gioco dell'impiccato che si faceva a scuola alle elementari.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    93
    ho cercato di capire quello che hai tentato di fare ma il ragionamento è contortissimo, per non parlare delle innumerevoli e inutili stringhe utilizzate.
    io farei cosi':
    dichiarerei una stringa nome = "portare" (e l'hai fatto).
    dichiarerei una stringa "outer" fatta di tanti spazi quanti sono i caratteri di "nome".
    tramite un ciclo (for o foreach) andrei a vedere se la lettera è in "portare", se si mettila in "outer" allo stesso indice.
    se ad esempio l'utente mette la lettera O, scorri tutte le lettere in "portare" e appena incontri la o la metti nell'indice corrispondente della stringa "outer".alla fine di ogni inserimento stampi "outer".è semplicissimo, tutta quella pappardella che hai scritto tu nn ha alcun senso...(sempre se ho capito quello che cerchi di fare)
    codice:
    string nome = "portare";             
    string value = "";             
    string outer = "_______";              
    
    Console.WriteLine("Da ora hai 5 tentativi");            
    for (int i = 0; i < 5; i++)             
    {             
         value = Convert.ToString(Console.ReadLine());              
         for (int j = 0; j < nome.Length; j++)             
         {                 
              if (nome[j].ToString() == value)  outer = outer.Substring(0, j) + value + outer.Substring(j+1);                              
         }              
    Console.WriteLine("risultato " + outer);             
    }

  5. #5
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Grazie ratal. Era proprio quello che stavo cercando di fare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.