Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di autior
    Registrato dal
    May 2010
    Messaggi
    17

    [C] Trovare il numero più grande confrontando due char..

    Salve a tutti!

    Ho un problema con una funzione ricorsiva.. vi posto la traccia:
    _________
    Scrivere una funzione che calcoli con un approccio ricorsivo il massimo dei prezzi di 10 prodotti identificati dalla seguente struttura:
    codice:
    struct p_prodotto {
              char *costo;
              char *quantita;
    };
    typedef struct p_prodotto id_prezzo;
    struct partecipante {
              id_prezzo *prezzo;
              unsigned short codice;
    }
    __________

    Sul libro c'è un esempio di funzione ricorsiva che determina il massimo elemento di un array, e cioè:

    __________
    codice:
    int massimo_a_ricAI (int a[], int n) {
              if (n == 1) return a[0];
              else return max_I(a[n-1],massimo_a_ricAI(a,n-1)); /* Max_I è una semplice funzione che restituisce il piu' grande tra due interi */
    }
    __________

    Quindi il problema non è tanto l'algoritmo, ma piuttosto: come faccio a trovare il più grande tra due numeri se questi vengono memorizzati in variabili char? Posso eseguire il confronto tra le due normalmente e senza cast?

    Scusate la domanda sciocca, ma visto che sto facendo degli algoritmi con carta e penna, e non posso testarli dato che il compilatore non mi funziona, mi è venuto questo atroce dubbio..

    Grazie.

  2. #2
    Quelli non sono dei char, ma dei char *, ossia di fatto dei puntatori a stringhe. Per effettuare il confronto devi convertirli prima di tutto in un tipo di dati numerico, ad esempio con la sscanf.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di autior
    Registrato dal
    May 2010
    Messaggi
    17
    Originariamente inviato da MItaly
    Quelli non sono dei char, ma dei char *, ossia di fatto dei puntatori a stringhe. Per effettuare il confronto devi convertirli prima di tutto in un tipo di dati numerico, ad esempio con la sscanf.
    Ma con un cast non si può fare, vero? Perchè mi sembra strano che per risolvere l'esercizio si debba usare la sscanf, dato che al corso non ci hanno spiegato come utilizzarla..

  4. #4
    Di certo non si può fare con un cast C normale, al massimo puoi usare la atoi o la atof, ma è meglio usare la sscanf perché consente una gestione migliore degli eventuali errori di parsing.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.