Aiuto Programmi!

di il
12 risposte

Aiuto Programmi!

Ciao ragazzi sto apprendendo piano piano l'uso di c++, in 3 esercizi non mi sono venuti e non riesco a farli. Gli esercizi sono questi:
1) Scrivere un programma che visualizzi la lunghezza, in byte, di tutti i tipi fondamentali (int,double,char,bool,long,short,float) secondo la propria implementazione del compilatore.
2)Supponendo che l'operatore resto (%) non esista, scrivere un' espressione che calcoli il resto r di a/b con a e b di tipo integrale.
3) In due variabili di tipo unsigned char, highbyte e lowbyte, sono memorizzati rispettivamente, gli 8bit + significativi e gli 8bit meno significativi di un dato a 16bit. Scrivere un segmento di programma che memorizzi tali valori nella variabile parola, di tipo unsigned short.
Questi sono i tre che non mi sono venuti, se riuscite a farli mi fate un piacere enorme! Grazie a Tutti!

12 Risposte

  • Re: Aiuto Programmi!

    Fa vedere cosa sei riuscito a combinare fino ad adesso e dove ti sei fermato.
  • Re: Aiuto Programmi!

    Niente, non sono riuscito neanche a cominciarlo! Tranne il primo che ho messo:
    ciout<<"int"<<sizeof(int);
    " " long
    " "
    ....
    Per tutti i tipi! E gli altri niente! Ce la fai?
  • Re: Aiuto Programmi!

    Non è questione c'è la fai, la questione è: vuoi imparare o vuoi che qualcuno ti faccia i compiti.

    invece di
    
    ciout << "int" << sizeof(int);
    
    sarebbe meglio:
    
    cout << "int" << sizeof(int);
    
    e così via per gli altri tipi di dati.

    Seconda domanda: come fai a fare l'operatore modulo.
    prendi un esempio:
    11/2 = 5 resto 1. come fai a farlo se non esiste il modulo:
    fai tante volte 11-2 finche il resto sia minore di 2. Generalizzando:
    a/b = x + c dove x è il risultato e c è il resto: quindi fai tante volte a - b finche ciò che ti viene è - b. quel che ti rimane è c.

    in pseudocodice:
    
    c = a - b;
    finche c > b
    c = c - b;
    
    eccoti il risultato.
    3 domanda è un operazine a bit. Qui devi usare l'operatore binario & oppure shift a sx e a dx.

    A te per scrive il codice giusto in c.
  • Re: Aiuto Programmi!

    Ok! grazie, ma il secondo non lo capito neanche ora! Potresti spiegare meglio!
  • Re: Aiuto Programmi!

    Prendi sempre l'esempio del 11/2.

    c = 11 - 2 = 9
    9 < 2 ? No allora prossegui.
    c = 9 - 2 = 7
    7 < 2 ? No allora prossegui.
    c = 7 - 2 = 5
    5 < 2 ? No allora prossegui.
    c = 5 - 2 = 3
    3 < 2 ? No allora prossegui.
    c = 3 - 2 = 1
    1 < 2 ? Si trovato il modulo C = 1
  • Re: Aiuto Programmi!

    Faccio tutti if o faccio un ciclo?
  • Re: Aiuto Programmi!

    Altro metodo + rapido x calcolare il modulo.

    Sempre l'esempio di prima.
    in una oprazione tra int 11/2 darabbe 5. Se il 5 lo moltiplichi x 2 farebbe 10. 11 - 10 = 1 (resto)
    Quindi sempre dalla formula generalizzata:
    a/b = x + c

    fai:

    x = a / b;
    moltiplicatore = x * b;
    c = a - moltiplicatore.

    è + semplice e non devi usare il ciclo while.
  • Re: Aiuto Programmi!

    Nel primo usi il ciclo. Nel secondo esempio è ancora + veloce. A te la scelta
  • Re: Aiuto Programmi!

    Ok grazie!
  • Re: Aiuto Programmi!

    skynet ha scritto:


    Altro metodo + rapido x calcolare il modulo.

    Sempre l'esempio di prima.
    in una oprazione tra int 11/2 darabbe 5. Se il 5 lo moltiplichi x 2 farebbe 10. 11 - 10 = 1 (resto)
    Quindi sempre dalla formula generalizzata:
    a/b = x + c

    fai:

    x = a / b;
    moltiplicatore = x * b;
    c = a - moltiplicatore.

    è + semplice e non devi usare il ciclo while.
    Quella formula è sbagliata, vale solo per quel caso! Prova con a=20 b=3!
  • Re: Aiuto Programmi!

    20/3 = 6
    6*3 = 18
    20 -18 = 2

    quella formula è giusta.
  • Re: Aiuto Programmi!

    skynet ha scritto:


    20/3 = 6
    6*3 = 18
    20 -18 = 2

    quella formula è giusta.
    Sisi scusa errore mio!
Devi accedere o registrarti per scrivere nel forum
12 risposte