Conversione stringa minuscola in maiuscola senza funzione ToUpper()

di il
3 risposte

Conversione stringa minuscola in maiuscola senza funzione ToUpper()

Salve sono uno studente di terza superiore che sta attualmente studiando C#. Stiamo lavorando ad un piccolo progetto per creare un programma console che calcoli il codice fiscale di una persona.
Il cognome, nome, e gli altri dati di input dopo aver verificato che siano corretti e senza caratteri non ammessi dobbiamo convertirli tutti in maiuscolo. Il prof ci ha detto di usare la funzione ToUpper per farlo ma per almeno il cognome scrivere noi l' algoritmo per la conversione. Io ho scritto questo. L' idea di fondo mi sembra corretta ma non funziona. Qualche aiuto?
namespace conversione_maiuscolo
{
    class Program
    {
        static void Main(string[] args)
        {
            string cognome, cognomeNew = "";
         
            Console.Write("Cognome: ");
            cognome = Console.ReadLine();

            for (int i=0; i<cognome.Length; i++)
            { 
            
                string maiuscole = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                string minuscole = "abcdefghijklmnopqrstuvwxyz";
                
                for (int j=0; j<minuscole.Length; j++)
                {
                    if (cognome[i] == minuscole[j])
                        cognomeNew = cognomeNew + maiuscole[j];
                    else
                        cognomeNew = cognomeNew + cognome[i];
                }
            }
            Console.WriteLine("Cognome= "+cognomeNew);
            Console.ReadKey();
        }
        
    }
}

3 Risposte

  • Re: Conversione stringa minuscola in maiuscola senza funzione ToUpper()

    Il tuo codice ha degli errori logici ... dovrebbe essere
    
                string maiuscole = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                string minuscole = "abcdefghijklmnopqrstuvwxyz";
    
                for (int i = 0; i < cognome.Length; i++)
                {
                    int j;
                    for (j = 0; j < minuscole.Length; j++)
                         if (cognome[i] == minuscole[j])
                            break;
    
                    if(j<minuscole.Length)
                        cognomeNew = cognomeNew + maiuscole[j];
                    else
                        cognomeNew = cognomeNew + cognome[i];
                }
    
    ma se usi il codice ASCII può diventare semplicemente
    
                for (int i = 0; i < cognome.Length; i++)
                {
                    if (cognome[i] >= 'a' && cognome[i] <= 'z')
                        cognomeNew = cognomeNew + (char)((int)cognome[i] - 32);
                    else
                        cognomeNew = cognomeNew + cognome[i];
                }
    
  • Re: Conversione stringa minuscola in maiuscola senza funzione ToUpper()

    Ok ho capito che in effetti il codice che ho scritto io é un po' una cavolata e il tuo ho capito come funziona. Ti ringrazio
  • Re: Conversione stringa minuscola in maiuscola senza funzione ToUpper()

    Basta che comprendi l'errore che hai fatto...
Devi accedere o registrarti per scrivere nel forum
3 risposte