Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313

    Da stringhe a numeri

    Buongiorno a tutti,sto realizzando uno script ke da AAA lo trasforma in 001 e da AAZ 026 e poi di passa da ABA a ABZ che avrà un valore pari a 053 e così via fino alla combinazione ZZZ..
    Come posso realizzare ciò senza un if per ogni controllo?
    Grazie mille a tutti in anticipo

  2. #2
    Indica il linguaggio e posta il codice che hai scritto finora. Inoltre forse conviene che la A valga 0 e quindi AAA sia 0, non 1.

  3. #3
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    Sto scendo col Cell e non riesco ad inserire il codice al momento cmq il linguaggio è c++ e utilizzo Dev++ per la compilazione..inoltre sono obbligato a far valere 001 AAA..il mio codice per ora è inserimento della prima lettera e controllo a quale numero appartiene con if else e così per la 2 e la 3 lettera ma non mi restituisce un risultato veritiero anche xe sarebbe più correrò x me inserire direttamente la stringa AAA e trasformarla in 001..ma non so proprio come fare senza utilizzare un controllo if x ogni combinazione

  4. #4
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Il codice ASCII assegna un valore per ogni carattere.
    Se tu vuoi calcolare il valore di una combinazione, visto che la 'A' vale 65, ti basta sommare i rispettivi valori sottraendo 64:

    codice:
    char stringa[3];
    // inizializza la stringa
    int valore=0;
    for(int i=0;i<3;i++)
        valore+=stringa[i]-64;
    Attenzione però che calcolando il valore della combinazione, la posizione non è rilevante, e non si distingue una stringa come ad esempio "ABA" da una stringa come "BAA".
    Se vuoi fare questa distinzione devi calcolare il valore della permutazione.

  5. #5
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    Iddio fantastico xo mi cogli molto impreparato sulla permutazione cosa sarebbe???

  6. #6
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    E' come una combinazione però tiene conto anche della posizione degli elementi.
    {A,B,C} e {A,C,B} sono la stessa combinazione, ma non la stessa permutazione.
    Nel tuo programma "AAB" deve valere 2 , ma anche "BAA" deve valere 2 ?
    Comunque visto che lavori in C++, se il valore è di una cifra sola gli vanno aggiunti due zeri, ma questo è facile da fare usando la classe string.
    Una cosa del tipo:
    codice:
    string str("000");
    str[2]=valore+48;  // perchè in ASCII '0' = 48

  7. #7
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    BAA deve valere 702..e così via.. Sempre a salire

  8. #8
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    codice:
    char stringa[3];
    // inizializza la stringa
    int valore=0;
    for(int i=0;i<3;i++)
        valore+=stringa[i]-64;
    con questa istruzione AAA mi restituisce 3 al posto ke 1

  9. #9
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    PER IL MOMENTO IL CODICE E' IL SEGUENTE:
    codice:
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
     char stringa[3];
     int valore=0;
     int i=0;
     for(i=0;i<3;i++){
                      cout<<"inserisci lettera maiscuola: ";
                      cin>>stringa[i];
                      }
     for(i=0;i<3;i++){
             valore+=stringa[i]-64;
             }
     int ris=0;
     ris=valore-2;
     cout<<"risultato : "<<ris<<endl;
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    l'istruzione
    codice:
     ris=valore-2;
    l'ho inserita perchè AAA mi restituiva 3 al posto di 1.
    Non ho ancora trovato il modo di fare la permutazione

    grazie a tutti per la collaborazione

  10. #10
    Originariamente inviato da spawn88
    PER IL MOMENTO IL CODICE E' IL SEGUENTE:
    codice:
     for(i=0;i<3;i++){
             valore+=stringa[i]-64;
             }
    Devi moltiplicare ciascuna cifra per il proprio "peso". Pensa se fosse in base decimale e avessi la stringa "528". Per trovare il numero, faresti:

    5 * 10^2 = 500 +
    2 * 10^1 = 20 +
    8 * 10^0 = 8

    Nel tuo caso il procedimento è analogo, solo che la "base" non è 10, ma 26 (il numero di lettere).

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.