Salve a tutti...chiedo aiuto per capire dove sto sbagliando con questo esercizio:
Devo dire cosa fa questa funzione.....al momento "credo" di aver capito che prende gli elementi nella riga della matrice, li somma a quelli di uguale indice di un Array e poi li confronta con le altre somme, indicando alla fine l'indice dell'elemento che fornisce la somma maggiore....ma....ho alcuni problemi che mi stoppano...codice:int f (int *A, int N, int M) { int B[M] , i, j, h, k=0; for (i=0;i<M;B[i++]=0) ; for (i=0;i<N;i++) for (j=0;j<M;j++) B[j]+=*(A+i*M+j) ; for (i=0;i<M;i++) if (B[i]>k) {h=i; k=B[i];} return h;}![]()
Primo....ma l'Array B[M] (come faccio per la matrice) va inventato o sono gli elementi della prima riga di A?...(all'inizio ho anche pensato a tutti zero....ma poi l'ho escluso perchè con tutti 0 non si va avanti..)
Secondo....ipotizzo A[2] [3] = {1,3,7,5,4,2} e B[3]={3,5,2} ed eseguo il codice utilizzando lo schema in colonna che ci ha spiegato il prof. :
Si arriva al penultimo for dove la B[j]+=*(A+i*M+j) in pratica pone B[0]=B[0]+*(A+i*M+j) giusto? quindi nel mio caso è uguale a 4...
Poi l'ultimo for con l'if pone k=4 e li confronta con i successivi elementi dell'array e ne viene fuori che l'elemento di indice 2 dà la somma maggiore...quindi h(indice) rimane alla fine del ciclo dell'ultimo for uguale a 2....
Ma il problema a questo punto è che ritornando al penultimo for j (che è 1)<M e mi ritrovo con un i=3 ed un j=1....ma che significa?? io non ho un elemento A[3][1]....la matrice ha due righe....dove sto sbagliando??![]()
Grazie mille a tutte le persone che mi daranno una mano!!!![]()

Rispondi quotando
