Estrazione cifra.

di il
15 risposte

Estrazione cifra.

Ma la stringa con il seguente codice:
 
 s[ i ++ ] = n % 10 + '0' ;
 


Come può essere tradotta?
Il mio testo dice che:

// estrae la cifra seguente

Ma a me non mi è tanto chiaro......

Vediamo se riesco a tradurre......
 s[ i ++ ] 

sta a significare che si tratta di un array dove all'interno dello stesso ci si deve spostare da i ad i+1 in da sinistra verso destra, giusto?
n
sta a significare newline in un contesto di caratteri.
% 
si intende il modulo. Ma intende il modulo di un vettore?

A questo punto non capisco il seguente insieme....

... = n % 10 + '0' 


Ma cosa si intende
Non riesco a tradurlo per arrivare a dire ciò che dice il testo e cioè che // estrae la cifra seguente

15 Risposte

  • Re: Estrazione cifra.

    Sono cose banali, se hai bisogno di un tutor il forum non è il luogo giusto.

    E poi fermati a riflettere un attimo: come fai a confondere la variabile n con il carattere costante '\n'?
  • Re: Estrazione cifra.

    Weierstrass ha scritto:




    E poi fermati a riflettere un attimo: come fai a confondere la variabile n con il carattere costante '\n'?


    Che n sia una variabile e il fatto che non sia definita Int o double o float, penso proprio perchè siamo in un contesto char, giusto?

    Il '\n' nel testo è definita come newline, e in italiano tu dici essere carattere costante!
    Cosa intendi con carattere costante?
  • Re: Estrazione cifra.

    '\n' è il numero dieci. Prova a scoprire tu perché, invece di chiedere ad altri di studiare al posto tuo
  • Re: Estrazione cifra.

    Weierstrass ha scritto:


    E poi fermati a riflettere un attimo: come fai a confondere la variabile n con il carattere costante '\n'?
    Perché non ha studiato in teoria la differenza tra i due elementi.
    Cosa intendi con carattere costante?
    Lui intende quello che c'è scritto nel libro che è un carattere costante.

    Hai un'idea di cosa sia il codice ASCII? E come c'entri questo codice nella linea che stai esamninando?

    Il codice
    s[i++ ] = n % 10 + '0';
    puoi intenderlo come
    
    s[i] = n % 10 + '0';
    i++;
    
    ma questo lo sapresti studiando gli operatori di "incremento postfisso", ovviamente in teoria prima.
  • Re: Estrazione cifra.

    Se ho capito male il problema
    [CODE] #include <stdio.h> int main() { char a[10]; int i; // spero di non sbagliare, sto facendo di getto // si puo' scrivere cosi // i%10 si usa per fare in modo che il valore sia sempre compreso tra 0 e 9 // sommare questo valore ad un anonimo 48 non dice subito qualcosa for (i=0;i<10;i++) a[i]=i%10+48; // il secondo passaggio e' in genere quello di usare il esadecimale // e il valore 0x30 e' molto piu' facile associarlo allo zero come carattere // per maggiori info cercare una tabella ascii for (i=0;i<10;i++) a[i]=i%10+0x30; // ma visto che in c i caratteri sono cugini degli interi al posto di // 0x30 si usa un meno anonimo '0' che indica che stiamo parlando di caratteri // i%10 indica un valore da 0 a 9, se viene sommato allo "zero" e' un modo // per convertire il numero da intero a carattere. diciamo come se fosse un // prodotto notevole in matematica for (i=0;i<10;i++) a[i]=i%10+0x30; for (i=0;i<10;i++) printf("%c",a[i]); return 0; }
  • Re: Estrazione cifra.

    Ciao Dobby, ti ringrazio per la spiegazione che hai dato!
    i%10 indica un valore da 0 a 9


  • Re: Estrazione cifra.

    Scusa ma se sai cosa è l'operatore modulo, non c'è bisogno di avere quella spiegazione.

    Cosa è? Cercalo sul libro
  • Re: Estrazione cifra.

    Alla pagina 50 del testo c'è un esempio, dove viene scritto in un printf..., che i%10==9 e fa riferimento ad un vettore di dieci caratteri....
    Non è esplicitato il suo sighificato ma si deduce che i%10==9 intende un valore da 0 a 9 e se si fa la conta equivale a 10, e in sostanza si potrebbe dire che se il vettore iesimo e composto da n=10, se si scrive i==n-1, allora vorrà dire che si sta indicando il valore 9.

    Spero di essere stato chiaro
  • Re: Estrazione cifra.

    Bisogna vedere la linea a cui fai riferimento in quale contesto è calata. Così il discorso che hai fatto non ha capo né coda.

    Comunque vedo che non hai fatto la cosa principale, ovvero studiate in teoria quello che fa l'operatore modulo % neanche cercando su internet
  • Re: Estrazione cifra.

    oregon ha scritto:



    Comunque vedo che non hai fatto la cosa principale, ovvero studiate in teoria quello che fa l'operatore modulo % neanche cercando su internet
    Come fai a decretare che non si è cercato nel Web?

    L'operatore %, chiamato operatore MODULO restituisce semplicemente il resto di una divisione.
    Cioè:

    5 % 2 = 1;

    Perché 5 diviso 2 è 2 con il resto di 1.
    E' molto facile, ad esempio, prendendo il seguente pezzo di codice:

    int modulo, a = 11, b = 4;
    modulo = a % b;
    cout << modulo;

    Stamperà:

    3

    Perché 11 diviso quattro fà 2 con il resto di 3.
  • Re: Estrazione cifra.

    Aggiungo a te che conosci Benissimo questo C++

    Cosa intendi per Modulo nel conteto Matematico?

    Cosa intendi per Modulo di un vettore?

    Non ti rendi conto che per chi è all'inizio, quando si sente parlare di Modulo, si può fare confusione?

    P.S. Oregon, non dirmi che sei un docente perchè da come rispondi, penso che tu conosca solo il C++ e questo è solo un vantaggio per chi vuole solo programmare!
    Ma quando conosci molti contesti, potresti finire con il fare confusione e quindi bisogna essere attenti a tutto!
    Grazie comunque per le risposte che fornisci, tutto è sempre costruttivo!
  • Re: Estrazione cifra.

    Parliamo di operatore modulo % che devi studiare sul testo o su internet e ti accorgi che è il modulo aritmetico.

    Ma l'hai fatta una ricerca con

    "C operatore modulo %"

    ??

    Se la fai e leggi prima di continuare a rispondere è molto meglio.

    Comunque, mi sembra che l'argomento del thread sia esaurito, non c'è altro da dire. Per conto mio almeno.

    P.S. Io non faccio confusione con molti contesti, ti assicuro che sei tu che lo fai. Ho insegnato tanti anni questa materia e ti assicuro che non c'è stata mai tanta confusione. Devi cambiare metodo (e non sono solo io a dirtelo) altrimenti l'esame rischia di essere un problema. Se mi avessi fatto all'esame tutti i discorsi che hai fatto, dopo 10 minuti ti avrei detto di tornare a studiare. Niente di personale ovviamente.

    P.P.S. Ancora il C++ non c'entra nulla, parliamo di C
  • Re: Estrazione cifra.

    Oregon, vedo che la mia risposta che precede la tua, fai finta di non ascoltarla, ti ho dato la risposta e tu hai voluto riprendere il dibattito inutile sulla ricerca o no del concetto % ....
    Ho scritto cosa significa ...., ho detto che la confusione la sto facendo io perchè conoscendo altri contesti e non il C++, tu pensi che io abbia detto il contrario.
    Ti ho anche elogiato, che sei bravo in C++, perchè è da anni che lo fai, ma ho dei dubbi sul fatto che tu possa insegnare....., ma resta pur sempre una mia impressione perchè mi baso sulle tue risposte, quindi puoi anche prenderla come una mia impressione errata e magari sarai il TOP dei docenti!
    P.P.S. Ancora il C++ non c'entra nulla, parliamo di C


    Come vedi, sono io a fare confusione!

    TI ringrazio per i consigli.

    E sul fatto che tu non abbia fatto confusione, quando hai iniziato con il C++ o C, ho dei forti dubbi!
    Praticamente stai dicendo che tu sei nato è già sapevi programmare in C
  • Re: Estrazione cifra.

    Sul fatto del docente o no ti dovrei rispondere di non entrare in affari privati (come hai detto tu a tutti) ma a me non interessa, ti ripeto, ho insegnato per una decina d'anni e sono passato ad altro. Mai ho visto però una persona che deve apprendere e lo fa in maniera così sbagliata come stai facendo tu.

    Ripeto ... stiamo parlando di C e non C++ e ho letto, non ignorato, quello che hai scritto. Ti ho infatti confermato che è l'operatore aritmetico (alle tue domanda ho dato risposta) e ti ho consigliato di andarlo a cercare e studiare perché ancora non l'hai fatto!

    E ora mi zittisco veramente.
Devi accedere o registrarti per scrivere nel forum
15 risposte