Esercizio in c

di il
15 risposte

Esercizio in c

Buongiorno da un po di giorni provo a fare questo esercizio dove si deve trovare l'output di tale programma e viene ris=26 pero visto che io so che gli elementi del vettore si contano da 0 quindi siccome ho v[3] dovrei fare 4+5+6+7+8 invece il compilatore fa 5+6+7+8 sapete spiegarmi il perché?
grazie in anticipo

#include <stdio.h>
int v[]={1, 2, 3, 4, 5, 6, 7, 8};
int main()
{
int i, ris=0, *p;
p = &v[3];
for(i=*p; i<8; i++);
ris +=v(i);

printf("ris = %d\n", ris);

return 0;
}

15 Risposte

  • Re: Esercizio in c

    No, non è chiaro cosa cerchi dall'esercizio. Ti serve la somma dal terzo elemento sino al penultimo?
  • Re: Esercizio in c

    No mi da il codice e devo trovare l'output di tale programma
  • Re: Esercizio in c

    Eduadie ha scritto:


    No, non è chiaro cosa cerchi dall'esercizio. Ti serve la somma dal terzo elemento sino al penultimo?
    Devo trovare l’output di questo programma
  • Re: Esercizio in c

    int v[]={1, 2, 3, 4, 5, 6, 7, 8};
    int *p = &v[3];
    int i = *p;
    Quanto vale i?
  • Re: Esercizio in c

    Nippolo ha scritto:


    int v[]={1, 2, 3, 4, 5, 6, 7, 8};
    int *p = &v[3];
    int i = *p;
    Quanto vale i?
    In questo caso 4 e il ris= 0+4, poi i viene incrementata nel ciclo quindi ris= 4+5 ma continuando non arrivo ad ottenere ris = 26 come dice il compilatore
  • Re: Esercizio in c

    saraciao ha scritto:


    In questo caso 4
    int v[]={1, 2, 3, 4, 5, 6, 7, 8};
    int ris=0;
    for(int i=4; i<8; i++);
    {
        ris +=v[i];
    }
    
    Quanto vale ris al termine del ciclo?

    P.S.
    Da notare l'utilizzo di
    v[i]
    al posto di
    v(i)
    .
  • Re: Esercizio in c

    Nippolo ha scritto:


    saraciao ha scritto:


    In questo caso 4
    int v[]={1, 2, 3, 4, 5, 6, 7, 8};
    int ris=0;
    for(int i=4; i<8; i++);
    {
        ris +=v[i];
    }
    
    Quanto vale ris al termine del ciclo?

    P.S.
    Da notare l'utilizzo di
    v[i]
    al posto di
    v(i)
    .

    Scusa ma non funziona così
    1 ciclo) ris=0+4
    2ciclo) ris=0+5
    3ciclo) ris=0+6
    4 ciclo) ris= 0+7
    Quindi ho ris=4+5+6+7+8=30
    Quindi parto dal considerare la cella numero 4 perche ho &v[3] non capisco perché il compilatore parte da considerare la cella 5
  • Re: Esercizio in c

    Quello che avviene è:

    1 ciclo) ris=ris+v[4]= 0+5=5
    2 ciclo) ris=ris+v[5]= 5+6=11
    3 ciclo) ris=ris+v[6]=11+7=18
    4 ciclo) ris=ris+v[7]=18+8=26

    cosa non ti convince?
  • Re: Esercizio in c

    Nippolo ha scritto:


    Quello che avviene è:

    1 ciclo) ris=ris+v[4]= 0+5=5
    2 ciclo) ris=ris+v[5]= 5+6=11
    3 ciclo) ris=ris+v[6]=11+7=18
    4 ciclo) ris=ris+v[7]=18+8=26

    cosa non ti convince?
    Che parte da 5 non dovrebbe partire da &V[3] che contiene 4?
  • Re: Esercizio in c

    Non è
    ris=0+4
    ma
    ris=0+v[4]
    e dato che v[4] vale 5 avrai
    ris=0+5
  • Re: Esercizio in c

    oregon ha scritto:


    Non è
    ris=0+4
    ma
    ris=0+v[4]
    e dato che v[4] vale 5 avrai
    ris=0+5
    Ma scusa perché V[4] contiene 5?
  • Re: Esercizio in c

    Ma quello che conta è

    *P

    ovvero il valore di v[3] che è 4. Quindi poi i=4 e di conseguenza si parte da

    v[4]

    che è 5
  • Re: Esercizio in c

    oregon ha scritto:


    Ma quello che conta è

    *P

    ovvero il valore di v[3] che è 4. Quindi poi i=4 e di conseguenza si parte da

    v[4]

    che è 5
    Quindi se v è v[4] si parte da 6?
  • Re: Esercizio in c

    ???
Devi accedere o registrarti per scrivere nel forum
15 risposte