Ottimizzazione del sw

di il
117 risposte

117 Risposte - Pagina 8

  • Re: Ottimizzazione del sw


    1)Problema, da una stringa estrarre i caratteri pari e quelli dispari:
    -Sembra tu ci sia riuscito quindi hai un vettore di caratteri pari e uno dispari.
    2)I Caratteri del vettore pari corrispondono ad un valore numerico
    - analizziamo i valori:
    - '0' = 0
    - '1' = 1
    - ...
    - 'A' = 0
    - 'B' = 1
    - ...
    - Bene ma il carattere '0' quanto vale ? bho ma sarà sicuramente un numero e se io scrivo
    - "numero = carattere - '0'" otterrò l'esatto valore che mi serve, chiariamo meglio:
    - il carattere '0' vale 48 il carattere '1' vale 49, ..., come vedi sono consecutivi e quindi se io nel vettori pari ho il carattere '0' allora avrò "numero = 48 - 48" che darà zero proprio come vogliamo!

    Ora ecco una funzione che da il valore pari in base al carattere:
    
    int topari(char c)
    {
        if ( c >= '0' && c <= '9' )
            return c - '0';
        
        return c - 'A';
    }
    
    ora se passi il carattere pari ti ritorna il valore che corrisponde a quel carattere, l'if serve per controllare se è un carattere numerico o alphanumerico serve solo per sottrarre il valore corretto dato che 'A' e '0' non sono allineati come vogliamo noi.

    Ora per il dispari è diverso i valori sono circa casuali e allora conviene usare un bello switch e ti passa la paura, altrimenti devi lavorare o con le mappe o impazzire con vettori che ricercano in altri vettori, troppo per te ma prova a scrivere la funzione che ritorni il valore dispari dal carattere passato.
  • Re: Ottimizzazione del sw

    Grazie io devo fare quello dispari e ho fatto i vettori ma non riesco, se volessi usare con le mappe come dovrei fare? mi fai qualche esempio?
  • Re: Ottimizzazione del sw

    Glielo scrivi tutto il codice pronto? .... E dai @vb ...
  • Re: Ottimizzazione del sw

    Quello con le mappe l ho già postato ma tu hai detto che non rispondeva alla tua domanda.
    CF_cin()
    Prova a scrivere tu qualcosa con i vettori.
  • Re: Ottimizzazione del sw

    Questo è ciò che ho scritto utilizzando i vettori
    
     int val_dispari1=0, val_dispari2=0, val_dispari3=0, val_dispari4=0;
        int vettore[]={1,0};
        int vettore2[]={11,3};
        int vettore3[]={10,22,25,24,23};
        
        //assegnare il valore ai caratteri dispari
        for (int i=0; i<strlen(dispari); i++) {
            if (dispari[i] >= '2' && dispari[i] <= '4')
                val_dispari+=(dispari[i] - '0') + (dispari[i] - '0' + 1);
            if (dispari[i] >= '5' && dispari[i] <= '9')
                val_dispari+=(dispari[i] - '0') + (dispari[i] - '0' + 3);
            if (dispari[i] >= 'c' && dispari[i] <= 'e')
                val_dispari+=(dispari[i] - 'a') + (dispari[i] - 'a' + 1);
            if (dispari[i] >= 'f' && dispari[i] <= 'j')
                val_dispari+=(dispari[i] - 'a') + (dispari[i] - 'a' + 3);
            if (dispari[i] >= 'k' && dispari[i] <= 'l')
                val_dispari+=(dispari[i] - 'a') + (dispari[i] - 'a' - 18);
            if (dispari[i] >= 'm' && dispari[i] <= 'n')
                val_dispari+=(dispari[i] - 'a') + (dispari[i] - 'a' - 6);
            if (dispari[i] >= 'q' && dispari[i] <= 'r')
                val_dispari+=(dispari[i] - 'a') + (dispari[i] - 'a' - 26);
            if (dispari[i] >= 's' && dispari[i] <= 'u')
                val_dispari+=(dispari[i] - 'a') + (dispari[i] - 'a' - 24 );
            if (strncmp(&dispari[i], "\0", 1)==0)
                val_dispari+=0;
            
            val_dispari1+=vettore[dispari[i] - '0' ];
            val_dispari2+=vettore[dispari[i] - 'a'];
            val_dispari3+=vettore2[dispari[i] - 'a' - 14];
            val_dispari4+=vettore3[dispari[i] - 'a' - 21];
            
        }
        val_dispari=val_dispari+val_dispari1+val_dispari2+val_dispari3+val_dispari4;
    
    
  • Re: Ottimizzazione del sw

    E che differenza c'è con quello di prima?

    Come ti ho detto mille volte, perché quelle mille if?
  • Re: Ottimizzazione del sw

    Controllo il çarattere. se le tolgo fa esattamente la stessa cosa?
  • Re: Ottimizzazione del sw

    Non hai risposto ... perché controlli i caratteri 2 4 con una if e 5 9 con un'altra? E perché mille altre if per i caratteri ? Non puoi usare una sola if per i numeri e una sola per le lettere???
  • Re: Ottimizzazione del sw

    E come?
  • Re: Ottimizzazione del sw

    Non ti scrivo codice ... ti dò suggerimenti ...
  • Re: Ottimizzazione del sw

    Dammi suggerimenti, grazie
  • Re: Ottimizzazione del sw

    Che fai scherzi? Te li ho appena dati ... usa una if per le cifre e una per le lettere, non mille ...
  • Re: Ottimizzazione del sw

    NOTA:
    Questo thread si chiude martedi 21 Ottobre alle ore 23:59.
    Se per quella data non hai ancora risolto il tuo problema sarò costretto a chiuderlo per infrangimento del regolamento almeno nei punti 4 e 8/F.

    Vedo solo pagine con richieste ridondanti che ovviamente e giustamente nessuno ti darà.
    Saluti.
Devi accedere o registrarti per scrivere nel forum
117 risposte