Funzione somma elementi vettore in C

di Anonimizzato27697 il
10 risposte
Ciao ragazzi, chiedo un aiuto in merito a questa consegna di programmazione in C.
Devo creare un vettore che possa restituire quanto richiesto, qualcuno gentilmente può darmi una mano?

/* Restituisce un vettore di n elementi. L’elemento di posizione i è la somma degli elementi di posizione da i a n-1 di v. Cioè detto w il vettore da restituire, w = v+v[i+1]+…+v[n-1] */

Questo è il prototipo della funzione da creare e su cui lavorare
int* SommaElementi(int* v, int n) {...}

10 Risposte

  • Darti una mano come? Comincia a scrivere qualcosa e vediamo se e dove sbagli.

    Intanto ricorda di postare il codice tra tag CODE nel forum altrimenti non si capisce
  • Ok, posto una bozza del codice su cui ho lavorato fin ora.
    Ma più che altro non riesco a capire la consegna cosa intende.
    int* SommaElementi(int* v, int n) {
    	int* w;
    	int dimw;
    	int k = 0;
    	
    	dimw = n - 1;
    
    	w = (int*)malloc(n*sizeof(int));
    
    	for (int i = 0; i < dimw; i++) {
    		w[k++] += w[i];
    	}
    	return w;
    }
    
  • programmatore2305 ha scritto:


    /* Restituisce un vettore di n elementi. L’elemento di posizione i è la somma degli elementi di posizione da i a n-1 di v. Cioè detto w il vettore da restituire, w[ i ] = v[ i ]+v[i+1]+…+v[n-1] */
    Metti gli spazi altrimenti [ i ] viene ritenuto corsivo

    Intanto io userei la calloc in questo caso particolare

    v dove lo usi nella funzione?
  • V è il vettore preso da ingresso, ad esempio v=[ 1,2,3,4,5 ], che acquisirò nel main, poi w è il vettore che mi chiede la funzione. Quindi ho pensato che v lo uso direttamente nel main. Sto sbagliando?
  • programmatore2305 ha scritto:


    V è il vettore preso da ingresso, ad esempio v=[ 1,2,3,4,5 ], che acquisirò nel main, poi w è il vettore che mi chiede la funzione. Quindi ho pensato che v lo uso direttamente nel main. Sto sbagliando?
    Sì lo devi usare nella funzione

    Da v=[ 1,2,3,4,5 ] devi ottenere w=[ 15,14,12,9,5 ]

    prova
  • Ahhh quindi se ho capito bene il vettore w lo ottengo facendo: [ 5+4+3+2+1 ] , [ 5+4+3+2] , [5+4+3] e cosi via...
    Ma questo procedimento come lo trasformo in codice? Intendo dire, qual è l'istruzione da svolgere?
    ps, Ti ringrazio per la dritta!
  • Ma seriamente sei bloccato o non hai voglia?
    
    for (int i = 0; i < n; i++)
    	for (int j = i; j < n; j++)
    		[metti la riga che manca];
    
  • Non penso di aver chiesto la luna, semplicemente non riesco a capire come svolgere un eserczio, non si tratta ne di essere bloccati e ne di non avere voglia, se non avessi riscontrato difficoltà non avrei scritto in un forum. Comunque grazie , buona giornata
  • Weierstrass ha scritto:


    Ma seriamente sei bloccato o non hai voglia?
    
    for (int i = 0; i < n; i++)
    	for (int j = i; j < n; j++)
    		[metti la riga che manca];
    
    Se posso dare una mano senza spiattellare l'ultima parte (mi sembra che sia questo il modo di fare), la parola magica dovrebbe essere "accumulatore". Dovrebbe...
  • antragorn ha scritto:


    Weierstrass ha scritto:


    Ma seriamente sei bloccato o non hai voglia?
    
    for (int i = 0; i < n; i++)
    	for (int j = i; j < n; j++)
    		[metti la riga che manca];
    
    Se posso dare una mano senza spiattellare l'ultima parte (mi sembra che sia questo il modo di fare), la parola magica dovrebbe essere "accumulatore". Dovrebbe...
    Ma in realtà puoi fare quello che vuoi. Tanto si offendono lo stesso se non arrivi esattamente a mostrare l'ultima riga di codice...
Devi accedere o registrarti per scrivere nel forum
10 risposte