Aiuto per programma matrice + array

di il
14 risposte

Aiuto per programma matrice + array

Salve, sono un nuovo vostro utente apro una nuova discussione sperando che essa non sia già stata trattata sotto altri nomi.
Avendo poca dimistichezza con il linguaggio C volevo chiedervi un aiuto per risolvere questo primo esercizio assegnatoci dal docente.

Dichiarare ed inizializzare mediante input da tastiera una matrice bidimensionale A con dimensione RxC. Dichiarare anche due array s e m,
di opportune dimensioni, e inizializzarli in modo che s contenga la somma degli elementi della riga i-esima di A, e m contenga invece la media degli elementi della
colonna i-esima di A.


Per risolverlo non posso utilizzare subroutine, puntatori o altro; ma solamente usare le classiche procedure di controllo.

Questo è ciò che sto provando a fare m senza riuscire.

#include <stdio.h>
#define R 5
#define C 4

int main()
{
int s[R], m[C], matrice[R][C], input, i=0, j=0, somma;

for (i=0; i<R; i++)
for(j=0; j<C; j++)
{
printf("\nInserisci un valore intero per la matrice! ");
scanf("%d", &matrice[j]);
printf("\nValore inserito nella matrice in posizione (%d,%d) = %d", i+1, j+1, matrice[j]);
}

for (i=0; i<R; i++)
{
s += matrice;
printf("\nValore somma ottenuta nell'array di posizione %d = %d", i, s);
}
}

Se qualcuno può aiutarmi lo ringrazio molto.
Marco.

14 Risposte

  • Re: Aiuto per programma matrice + array

    Controlla questa parte
    
    for (i=0; i<R; i++)
    {
    s[i] += matrice[i];
    printf("\nValore somma ottenuta nell'array di posizione %d = %d", i, s[i]);
    }
    
    non ti sembra che serva anche j x accedere ad ogni singola cella?
  • Re: Aiuto per programma matrice + array

    Grazie per la risposta skynet, in effetti mi ero scordato di inserire anche il ciclo for per il contatore j,
    però in ogni caso non ottengo quello che vorrei trovare. In sostanza non so come far sommare gli elementi totale delle righe della matrice e inserirlo all'interno dell'array... devo fare forse qualche conversione?? Grazie ancora.

    for (i=0; i<R; i++)
    for(j=0; i<C; j++)
    {
    s += matrice;
    printf("\nValore somma ottenuta nell'array di posizione %d = %d", i, s);
    }

    Questa è la modifica che ho aggiunto.
  • Re: Aiuto per programma matrice + array

    
    for (i=0; i<R; i++)
    {
       for(j=0; j<C; j++)
        {
           s[i] += matrice[i][j];
       }
          printf("\nValore somma ottenuta nell'array di posizione %d = %d", i, s[i]);
    }
    
    che ne dici così?
  • Re: Aiuto per programma matrice + array

    Se lo compilo e inserisco i valori nella matrice dopo l'ultimo inserimento crasha il programma
  • Re: Aiuto per programma matrice + array

    Posta il codice completo.
  • Re: Aiuto per programma matrice + array

    /**Dichiarare ed inizializzare mediante input da tastiera una matrice bidimensionale A con dimensione RxC. Dichiarare anche due array s e m,
    di opportune dimensioni, e inizializzarli in modo che s contenga la somma degli elementi della riga i-esima di A, e m contenga invece la media degli elementi della
    colonna i-esima di A.*/

    #include <stdio.h>
    #define R 4
    #define C 3

    int main()
    {
    int s[R], m[C], matrice[R][C], input, i=0, j=0, somma;

    for (i=0; i<R; i++)
    for(j=0; j<C; j++)
    {
    printf("\nInserisci un valore intero per la matrice! ");
    scanf("%d", &matrice[j]);
    printf("\nValore inserito nella matrice in posizione (%d,%d) = %d", i+1, j+1, matrice[j]);
    }

    for (i=0; i<R; i++)
    {
    for(j=0; i<C; j++)
    {
    s += matrice[j];
    }
    printf("\nValore somma ottenuta nell'array di posizione %d = %d", i, s);
    }
    }


    Questo è quello fatto finora è ancora abbastanza incompleto
  • Re: Aiuto per programma matrice + array

    Usa i tag code quando posti il codice. [ code] codice [/ code]
    cmq
    
    for (i=0; i<R; i++)
    {
        for(j=0; i<C; j++)   //cambia da "i < C" a "j < C"
        {
            s[i] += matrice[i][j];
        }
       printf("\nValore somma ottenuta nell'array di posizione %d = %d", i, s[i]);
    }
    }
    
  • Re: Aiuto per programma matrice + array

    Grazie ancora per la disponibilità comunque ho corretto quello che hai scritto però rimane un problema. Se il comando della somma è giusto semanticamente, il risultato che ottengo non è quello giusto perchè anzichè sommarmi i valori inseriti nella matrice mi da numeri insignificanti, sto pensando che non sia possibile attribuire i valori in riga i-esima della matrice all'array anche se l'esercizio chiede questo.
  • Re: Aiuto per programma matrice + array

    È possible ed è fattibilissimo. Il problema è che non azzerri il vettore s, il qualle ha dei numeri senza senso all'avvio del programma. questo funziona, vedi il piccolo cambiamento.
    
    #include <stdio.h>
    #define R 4
    #define C 3
    
    int main()
    {
    	int s[R] = {0}, m[C], matrice[R][C], input, i=0, j=0, somma;
    
    	for (i=0; i<R; i++)
    	{
    		for(j=0; j<C; j++)
    		{
    			printf("\nInserisci un valore intero per la matrice! ");
    			scanf("%d", &matrice[i][j]);
    			printf("\nValore inserito nella matrice in posizione (%d,%d) = %d", i+1, j+1, matrice[i][j]);
    		}
    	}
    		for (i=0; i<R; i++)
    		{
    			for(j=0; j<C; j++)
    			{
    				s[i] += matrice[i][j];
    			}
    			printf("\nValore somma ottenuta nell'array di posizione %d = %d", i, s[i]);
    		}
    	return 0;
    }
    
  • Re: Aiuto per programma matrice + array

    Ora si sta dando segni di vita. Però l'array dovrebbe contenere la somma di ogni valore inserito nella matrice di ciascuna riga, mi spiego meglio.

    abbiamo esempio 2 righe x 2 colonne; l'array s deve contenere i valori riportati in ciascuna riga sino alla 2a colonna della riga stessa.

    Quindi se inserisco questi valori

    1a riga: 1 (1a colonna) , 2 (2a colonna)
    2a riga: 4 (1a colonna) , 6 (2a colonna)

    dovrei ottenere nell'array s il totale delle righe ovvero 1+2+4+6 = 13. Ma questo ora non avviene.
  • Re: Aiuto per programma matrice + array

    NO. S significa:
    i = 0;
    s[1a riga] che dovrebbe darti 3
    i = 1;
    s[2a riga] che dovrebbe darti 10

    il programma fà ciò che li viene chiesto e anche bene.
    Non ti chiede la somma di tutte le righe in totale ma la somma di tutti i valori di una riga. questo lo devi mettere nel accumulatore s.

    s[0] = 1 + 2
    s[1] = 4 + 6
  • Re: Aiuto per programma matrice + array

    Mi hai già chiarito qualcosa su questo e ti ringrazio molto. Non vorrei essere troppo invasivo però se puoi dare un controllo alla stampa della somma mi faresti un grande favore.. sembra stampi l'addizione tra 2 colonne e non il totale di tutte le colonne di ciascuna riga
  • Re: Aiuto per programma matrice + array

    Controlla tu stesso.
    Matrice di riferimento:
    1 2 3
    4 5 6
    7 8 9
    10 11 12

    Somma
    riga 0 = 6
    riga 1 = 15
    riga 2 = 24
    riga 3 = 33
    prova.jpg
    prova.jpg

  • Re: Aiuto per programma matrice + array

    Ho trovato un errore che tu mi avevi anche corretto ma non avevo notato bene il particolare. Della stampa della somma dentro il ciclo i e non j... Ora funziona grazie mille gentilissimo. Provo a fare adesso anche la somma speriamo bene.
Devi accedere o registrarti per scrivere nel forum
14 risposte