[RISOLTO]Gestione stringa

di il
7 risposte

[RISOLTO]Gestione stringa

Buongiorno ragazzi,
come al solito dimostro di non digerire la gestione delle stringhe, ogni volta ne salta una fuori!
Il problema è questo: ricevo (da file) un input lunghissimo di numeri nel seguente formato -> (n,b) che rappresentano il logaritmo di n in base b.
Facciamo l'esempio con questo input: (921,5)
Lo leggo da file con la fscanf e lo inserisco in una variabile char, "s".
Ora che è contenuto in questa variabile, come faccio ad ignorare le parentesi e "spezzarlo" in modo da ottenere due numeri con i quali successivamente calcolerò il valore del logaritmo?
Per ignorare le parentesi avevo pensato ad una fscanf con la seguente sintassi:
fscanf(File, "%[0-9], s)
Sarebbe corretta? Permane comunque il problema dell'assegnazione dei numeri a variabili differenti per poi gestirli.

Grazie mille in anticipo a tutti per la disponibilità!

7 Risposte

  • Re: [RISOLTO]Gestione stringa

    Prova a vedere questo thread http://www.iprogrammatori.it/forum-programmazione/cplusplus/problema-con-stringhe-t26873.html?hilit=scanf#p8550851
    Qui si usa scanf() per leggere una data ma puoi adattare al tuo caso
  • Re: [RISOLTO]Gestione stringa

    Hai provato con

    "(%d,%d)", &v1, &v2
  • Re: [RISOLTO]Gestione stringa

    Grazie ragazzi, effettivamente era questo il modo per farlo. Banale come pensavo, ma la mia testa ogni tanto gioca brutti scherzi!
    Ora però, purtroppo ho un altro problema per quanto riguarda il calcolo del logaritmo.
    Per definizione: Dati due numeri interi positivi n e b, il logaritmo intero di n in base b è il massimo numero di volte in cui si può moltiplicare b per se stesso ottenendo un risultato non superiore a n.

    Il seguente codice che ho scritto non porta ad alcun risultato (non viene proprio emesso l'output) e non capisco come mai.
    La coppia (921,5), dovrebbe dare come risultato 4, perché 5^4 = 625 che è effettivamente minore di 921, mentre 5^5 = 3125 che è maggiore di 921.
    Su queste spiegazioni, cosa c'è di sbagliato nel mio codice?
        
        int n, b, pot = 0, ris, esp, i;
        char prova[] = "(921,5)";
        
        sscanf(prova, "(%d,%d)", &n, &b);
        
        esp = 1;
        while (pot <= n)
        {
            for (i = 1; i <= esp; i++)
                pot = b*b;
            esp++;
        }
        
       printf("Il risultato è: %d \n", esp);
     
  • Re: [RISOLTO]Gestione stringa

    Non tutti i problemi nello stesso thread ... non c'entra questo con il titolo ...
  • Re: [RISOLTO]Gestione stringa

    oregon ha scritto:


    Non tutti i problemi nello stesso thread ... non c'entra questo con il titolo ...
    C'entrava con l'esercizio però!
    Vabbè, ne apro un altro!
    E' che mi dispiaceva aprirne di più, ma ora lo faccio!
  • Re: [RISOLTO]Gestione stringa

    C'entrava con l'esercizio però!
    Il punto è che questo forum non è un luogo in cui si risolvono esercizi!
  • Re: [RISOLTO]Gestione stringa

    candaluar ha scritto:


    C'entrava con l'esercizio però!
    Il punto è che questo forum non è un luogo in cui si risolvono esercizi!
    E' un esercizio per imparare bene a programmare in C, non è un esercizio da portare a scuola o che ho in un compito e vi chiedo di risolverlo al posto mio.

    E' un esercizio che non mi viene e per questo domando qui dove sbaglio così da imparare per poi non ripetere più questo errore in futuro.
    E' questo l'obiettivo. E' conforme con le regole/abitudini di questo forum?
Devi accedere o registrarti per scrivere nel forum
7 risposte