Problema esercizio con matrici

di il
5 risposte

Problema esercizio con matrici

Date in input due matrici e restituisce come output una matrice che corrisponde alla somma delle matrici

#include<stdio.h>
#include<stdlib.h>
void somma_m(int *somma,int dim1,int dim2);
int main()
{
	int dim1,dim2,somma;
	printf("Inserisci la dimensione delle righe:\t");
	scanf("%d",&dim1);
	printf("Inserisci la dimensione delle colonne:\t");
	scanf("%d",&dim2);
	
	somma_m(&somma,dim1,dim2);
	system("PAUSE");
	return 0;
}
void somma_m(int *somma,int dim1,int dim2)
{
	int i,j;
	int matrice1[dim1][dim2];
	int matrice2[dim1][dim2];
	
	for(i=1;i<=dim1;i++)
	{
		printf("inserisci il valore della %d' riga della matrice 1:\t",i);
		scanf("%d",&matrice1[i][0]);
		for(j=1;j<=dim2;j++)
		{
			printf("inserisci il valore della %d' colonna della matrice 1:\t",j);
			scanf("%d",&matrice1[0][j]);
		}
		printf("\n");
	}
	for(i=1;i<=dim1;i++)
	{
		printf("inserisci il valore della %d' riga della matrice 2:\t",i);
		scanf("%d",&matrice2[i][0]);
		for(j=1;j<=dim2;j++)
		{
			printf("inserisci il valore della %d' colonna della matrice 2:\t",j);
			scanf("%d",&matrice2[0][j]);
		}
		printf("\n");
	}
	for(i=1;i<=dim1;i++)
	{
		for(j=1;j<=dim2;j++)
		{
			*somma[i][j]=matrice1[i][j]+matrice2[i][j];
		}
		printf("\n");
	}
	for(i=1;i<=dim1;i++)
	{
		for(j=1;j<=dim2;j++)
		{
			printf("|%d|",*somma[i][j]);
		}
		printf("\n");
	}
}
[Error] invalid types 'int[int]' for array subscript ????

5 Risposte

  • Re: Problema esercizio con matrici

    1) somma non è un array

    2) gli indici in c partono da 0 non da 1
  • Re: Problema esercizio con matrici

    Vsto che conosci il concetto di funzione fai una cosa piu' intelligente:

    ci sono TRE operazioni distinte da fare:

    1) leggere i valori da inserire in una matrice. Che poi sia una o un milione, la lettura viene fatta sempre nella stessa maniera. E la lettura non ha NULLA a che fare sul come questa matrce verra' successivamente utilizzata

    2) fare la somma di due matrici, che non ha NULLA a che fare su come le matrici sono state lette/generate

    3) stampa i valori di una matrice, che non ha NULLA a che fare sul come questa matrice e' stata generata

    Ad esempio, puo' leggere una matrice e subito stamparla!
  • Re: Problema esercizio con matrici

    Ciao Oregon,
    scusami, hai ragione a dire che gli indici di norma partono da zero, ma l' operazione che faccio nel for è comunque lecita, in quanto viene fatta su tutta la porzione dell' array,
    quando imposti i=0, arrivi a n-1 con l' imposizione nel for della condizione i < n,
    la stessa cosa è fare i=1, i <=n, in quanto io comunque vado su tutto l' array, no ?
    Per quanto riguarda somma esso è un puntatore, e puntatori e array, sono fratelli, quindi comunque l' operazione è lecita??

    Ciao migliorabile, quello che mi suggerisci di fare in pratica è di creare tre funzioni distinte e separate?? Vbb quello si può fare in due minuti, ma riguardo al mio problema, come può aiutarmi questo?
  • Re: Problema esercizio con matrici

    Giacomo_made4core ha scritto:


    quando imposti i=0, arrivi a n-1 con l' imposizione nel for della condizione i < n, la stessa cosa è fare i=1, i <=n, in quanto io comunque vado su tutto l' array, no ?
    Assolutamente no. Il primo elemento dell'array ha indice 0, l'ultimo ha indice n-1.
    Eseguire un ciclo tra 1 e n significa partire dal secondo elemento dell'array, e finire all'elemento di indice n+1 che non esiste.
  • Re: Problema esercizio con matrici

    Giacomo_made4core ha scritto:


    Ciao Oregon,
    l' operazione che faccio nel for è comunque lecita, in quanto viene fatta su tutta la porzione dell' array
    No, non è lecita perché vai oltre le dimensioni dell'array. E' un errore grave, causa di crash.
    Per quanto riguarda somma esso è un puntatore, e puntatori e array, sono fratelli, quindi comunque l' operazione è lecita??
    Ancora no. Quello è un puntatore ad un semplice intero. Non c'entra nulla l'array.
Devi accedere o registrarti per scrivere nel forum
5 risposte