Programmino semplice: AIUTO!

di il
10 risposte

Programmino semplice: AIUTO!

Vi mostro qui sotto il codice di un programmino semplice semplice in C: devo saper dire il risultato e PERCHE'.
Vi prego di aiutarmi in qualche modo per favore... grazie!

#define LIMIT 10

int fun(int a, int b, int c) {
int i;

if (c < 0) a=3;

for (i=0; i<LIMIT; i++)
a += b;

return a;

}



con a, b, c uguali rispettivamente a 4, 2, 3.

Help, please! grazie!

10 Risposte

  • Re: Programmino semplice: AIUTO!

    Molto semplice :

    la funzione effettua queste operazioni :

    1) se c minore di 0 imposta a = 3
    2) a + (b*LIMIT)
    3) ritorna a

    quindi con 4 2 3 come parametri avremo

    a = 4+(2*10)
    quindi ritornera' a = 24

    se hai bisogno contattami in email

    Ciao
  • Re: Programmino semplice: AIUTO!

    Anch'io avevo pensato così, ma non cpaisco il punto b)... perchè si fa 2*10? Dato che c'è scritto solo < LIMIT, non è *9? Grazie
  • Re: Programmino semplice: AIUTO!

    No,l'iterazione viene eseguita 10 volte secondo il costrutto for :

    for (i=0; i<LIMIT; i++)
    a += b;

    L'istruzione FOR

    for (A;B;C)
    { expr }

    effettua i seguenti passi
    1) valuta la prima espressione A e la esegue
    2) valuta B ,se B e' falso esce dal costrutto,altrimenti esegue l'espressione expr
    3) una volta esaurita l'espressione expr esegue C e ricomincia da capo

    va da se che l'esecuzione andra' avanti finche' i==9 (9<LIMIT e' vero),quando i sara' 10 il ciclo FOR avra' fine,quindi l'esecuzione sara' effettuata 10 volte in quanto [0-9] sono 10 esecuzioni.

    Ti va bene che stamattina avevo tempo

    Comunque quando ci sono certe situazioni e' sempre bene studiarsi il C ,capire le cose senza sapere le regole equivale a curare i sintomi e lasciare la malattia.

    Ciao;)
  • Re: Programmino semplice: AIUTO!

    Ma è vero! Ok, ho capito! Grazie.

    In quest'altro codice, cosa risulta? Sono indeciso se 4 o 10 e perchè?

    int sum(int a[], int d) {

    int i, r = 0;

    for (i=0; i < d; i++)

    r =+ a;
    return r;

    }

    con d=4 e a= {1,2,3,4}

    Grazie
  • Re: Programmino semplice: AIUTO!

    Semplicissimo di nuovo,il perche' te lo lascio come esercizio,applica le regole che ti ho spiegato prima e ci arrivi facilmente.

    La risultante e' la somma di tutti i valori degli elementi dell'array,cioe' 10.

    Ciao a presto
  • Re: Programmino semplice: AIUTO!

    Infatti nelle soluzioni il risultato è 4... andiamo bene...
  • Re: Programmino semplice: AIUTO!

    Il risultato e' 10,compilalo ed eseguilo cosi' te ne rendi conto.
  • Re: Programmino semplice: AIUTO!

    R =+ a; si presuppone sia un errore di battitura e che significhi
    r += a;

    visto che =+ non vuol dire nulla ed e' insensato ; ma a questo punto e' una sorta di tranello che ti hanno posto del quiz,in tal caso e' vero il risultato e' 4 .
  • Re: Programmino semplice: AIUTO!

    Scusa la mia ignoranza... non capisco...
    il testo è =+; quindi quale sarebbe il significato di questo simbolo e perchè in un caso è 10 mentre nell'altro 4? anch'io inizialmente avevo risposto 10... ma poi le soluzioni dicono 4...
    Com'è sta storia?
  • Re: Programmino semplice: AIUTO!

    R =+ a;

    non significa nulla,e' identico a :

    r = 0+a

    e quindi :

    r = a

    il + e' superfluo,per questo a intuito ho pensato fosse un errore di battitura,evidentemente invece te l'hanno messo come test,mia colpa di non averlo preso in considerazione.

    Con l'istruzione
    r += a;

    avresti continuato a sommare i dati dell'array ottenendo il risultato 10

    invece come il tuo testo riporta
    r =+ a;
    equivarrebbe a
    r = a;
    e cioe' un continuo assignamento (inutile e insensato perche' basterebbe farlo una sola volta,per questo l'ho scartata a priori pensando fosse un errore) che da come risultato l'assignamento di r all'ultimo membro dell'array a,e cioe' 4
    sarebbe bastato quindi scrivere

    r = a[3]

    per ottenere l'identico risultato senza usare il costrutto for.

    Ciao a presto
Devi accedere o registrarti per scrivere nel forum
10 risposte