Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726

    [CURIOSITA'] Algoritmo conversione da lettera minuscola a maiuscola e viceversa

    E' una cavolata, lo so, ma non riesco a capire che algoritmo si usa per convertire una lettera da minuscola a maiuscola (e viceversa) SENZA conoscere il codice ascii.

    Se potessi usare l'ascii sarebbe stato un gioco da ragazzi, facevo alcuni controlli sul carattere inserito e via, ma adesso??


    Grazie

  2. #2
    Cosa intendi senza usare ASCII ...
    L'algoritmo si basa proprio su quello:
    a = 60h
    A = 40h
    A = a - 20h
    a = A + 20h
    [...]

    Altrimenti un bel vettore dovrebbe andare:
    v[] = {'a', 'b', ...};
    Experience is what you get when you don’t get what you want

  3. #3

    Re: [CURIOSITA'] Algoritmo conversione da lettera minuscola a maiuscola e viceversa

    Originariamente inviato da Downloader
    E' una cavolata, lo so, ma non riesco a capire che algoritmo si usa per convertire una lettera da minuscola a maiuscola (e viceversa) SENZA conoscere il codice ascii.

    Se potessi usare l'ascii sarebbe stato un gioco da ragazzi, facevo alcuni controlli sul carattere inserito e via, ma adesso??


    Grazie
    Ehm, magari sarà che è lunedi mattina, ma non riesco a capire la tua domanda....
    In ogni caso, in C, se vuoi convertire una lettera da maiuscola a minuscola c'è la funzione tolower(char c) e c'è la funzione toupper(char c) per fare il contrario....


  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Esatto, quelle funzioni credo funzionino tramite una serie di if.


    Io invece avrei bisogno di sapere qual'è il metodo matematico che mi consente di fare la conversione senza conoscere l'ordine dei caratteri nel codice ascii.

    Io non so se prima ci sono lettere minuscole, o maiuscole o numeri o altro.
    So solo che il numero massimo di caratteri è 255.

  5. #5
    allora:
    Per convertire da maiuscolo a minuscolo si aggiunge uno 0x20...
    Per convertire da minuscolo a maiuscolo si toglie 0x20...
    0x20 è la distanza che c'è fra a e A...
    Se non conosci il codice ascii non credo ci siano funzioni matematiche che risolvano in tuo problema

    char toupper(char c)
    {
    if (c >= 'a' && c <= 'z') //se c è una lettera minuscola
    return c - 0x20;
    }

    char tolower(char c)
    {
    if (c >= 'A' && c <= 'A') //se c è una lettera maiuscola
    return c + 0x20;
    }

    queste le ho scritte ora, non so se sono realmente così
    Experience is what you get when you don’t get what you want

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da Downloader
    Esatto, quelle funzioni credo funzionino tramite una serie di if.
    No ... quelle funzioni non lavorano affatto con una serie di if ...

    *Nessuna* funzione di conversione degna di questo nome, utilizza una serie di if ...

    Oltre alla somma/sottrazione gia' detta, si puo' operare settando o resettando il bit 5 del valore ASCII del carattere ... puoi utilizzare per questo l'operatore & e l'operatore |

    Il piu' delle volte la tolower e la toupper sono implementate come macro

    #define tolower(c) ( (c)-'A'+'a' )

    #define toupper(c) ( (c)-'a'+'A' )

  7. #7
    non ci avevo pensato ...

    Cmq una sana lettura:
    http://it.wikipedia.org/wiki/Ascii
    Experience is what you get when you don’t get what you want

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Originariamente inviato da Xaratroom
    allora:
    Per convertire da maiuscolo a minuscolo si aggiunge uno 0x20...
    Per convertire da minuscolo a maiuscolo si toglie 0x20...
    0x20 è la distanza che c'è fra a e A...
    Se non conosci il codice ascii non credo ci siano funzioni matematiche che risolvano in tuo problema

    char toupper(char c)
    {
    if (c >= 'a' && c <= 'z') //se c è una lettera minuscola
    return c - 0x20;
    }

    char tolower(char c)
    {
    if (c >= 'A' && c <= 'A') //se c è una lettera maiuscola
    return c + 0x20;
    }

    queste le ho scritte ora, non so se sono realmente così
    A quanto mi hanno detto la soluzione non è questa, cioè è una soluzione più che valida, ma la cosa a quanto pare è più semplice.

    Io sinceramente non ne ho idea.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma hai letto tutte le risposte ??

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Originariamente inviato da oregon
    Ma hai letto tutte le risposte ??
    Si, oddio c'ho un po' di confusione devo dire.
    Comunque...

    non so, forse la domanda che mi hanno fatto è stata formulata male...non so.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.