un pò di C

9 risposte [Ultimo messaggio]
Ritratto di anubis
anubis
(Guru)
Offline
Guru
Iscritto: 07/04/2007
Messaggi: 3656

ciao ragazzi.. questo è un lavoretto che dovrei consegnare al prof all'uni domani... il suo lavoro lo fa (prodotto di due matrici)
ma non sono sicuro sia perfetto... che ne dite?

#include <stdio.h>
 
int main() {
#define A 3 //righe prima matrice
#define B 3 // colonne prima matrice ed righe seconda matrice
#define C 4 // colonne seconda matrice
 
int M1[A][B];
int M2[B][C];
int TOT[A][C] = {{0},{0}};
int i,j,k; //indici M1
 
printf("MATRICE 1:\n");
for (i=0; i<A; i++) {
&nbsp;&nbsp;&nbsp; for (j=0; j<B; j++) {
/* per l'utente non esistono riga e colonna 0 */
&nbsp;&nbsp;&nbsp; printf("Digita il valore per l'elemento nella riga %d e colonna %d: ", (i+1) , (j+1));
&nbsp;&nbsp;&nbsp; scanf("%d", &M1[i][j]);
&nbsp;&nbsp;&nbsp; }
}
 
printf("MATRICE 2:\n");
for (i=0; i<B; i++) {
&nbsp;&nbsp;&nbsp; for (j=0; j<C; j++) {
/* per l'utente non esistono riga e colonna 0 */
&nbsp;&nbsp;&nbsp; printf("Digita il valore per l'elemento nella riga %d e colonna %d: ", (i+1) , (j+1));
&nbsp;&nbsp;&nbsp; scanf("%d", &M2[i][j]);
&nbsp;&nbsp;&nbsp; }
}
 
 
for (i=0; i<B; i++) { // fisso la riga nella prima matrice
&nbsp;&nbsp;&nbsp; for (j=0; j<C; j++) { // fisso la colonna seconda matrice
/*
&nbsp;* Utilizzo la definizione di prodotto di matrici
&nbsp;* Ovvero tot[i][j] è uguale alla sommatoria di k
&nbsp;* che va da 1 al numero di colonne della prima
&nbsp;* matrice (N) degli elementi a[i][k]*b[i][k]
&nbsp;*/
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (k=0; k<B; k++) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TOT[i][j] += M1[i][k]*M2[k][j];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } // fine definizione
&nbsp;&nbsp;&nbsp; } // fine "blocco colonne"
} // fine "blocco righe"
 
/*
&nbsp;* Stampo la matrice facendo attenzione ad andare
&nbsp;* a capo quando raggiungo l'ultima colonna
&nbsp;*/
for (i=0; i<A; i++) {
&nbsp;&nbsp;&nbsp; for (j=0; j<C; j++) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (j == (C - 1 )) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d\n", TOT[i][j]);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d ", TOT[i][j]);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }
}
 
return 0;
 
}

OpenSUSE Member,Packman Packager, Education Project Admin, LXDE Project Admin
Powered by http://en.opensuse.org/HP_Pavilion_dv6855el

Ritratto di alfiomosca
alfiomosca
(Geek)
Offline
Geek
Iscritto: 14/06/2007
Messaggi: 98

L'ho provato così come è...Ma credo ci sia qualcosa che non mi convince...

Ritratto di alfiomosca
alfiomosca
(Geek)
Offline
Geek
Iscritto: 14/06/2007
Messaggi: 98

Si potrebbe fare per 2 matrici generiche di ordine nxm; ovvio non so se l'esercizio lo prevedeva...
Ciao e buon lavoro !

Ritratto di cla90
cla90 (non verificato)
()

a funzionare, funziona...
quali sono le tue perplessità?

un consiglio: indenta i commenti un po' meglio, così non si capisce niente...

Ritratto di alfiomosca
alfiomosca
(Geek)
Offline
Geek
Iscritto: 14/06/2007
Messaggi: 98

No, volevo solo dire che complicandolo un po', sarebbe più carino, ecco tutto.

Ritratto di cla90
cla90 (non verificato)
()

Citazione:

a funzionare, funziona...
quali sono le tue perplessità?


era riferito ad anubis...

@alfiomosca: la mia filosofia e' "Keep It Simple" Wink

Ritratto di anubis
anubis
(Guru)
Offline
Guru
Iscritto: 07/04/2007
Messaggi: 3656

non è che avevo vere perplessità, ma siccome sto iniziando ora a studiare il C, pensavo che qualcuno + preparato potesse darmi qualche dritta.
tipo rimuovere qualcosa di non necessario, o semplificare qualcosa è così via Smile

OpenSUSE Member,Packman Packager, Education Project Admin, LXDE Project Admin
Powered by http://en.opensuse.org/HP_Pavilion_dv6855el

Ritratto di alfiomosca
alfiomosca
(Geek)
Offline
Geek
Iscritto: 14/06/2007
Messaggi: 98

Direi che ci siamo chiariti tutti
@ anubis: quindi non stai studiando per conto tuo, sei iscritto all'università! Informatica per caso?

Ritratto di auris
auris
(Guru)
Offline
Guru
Iscritto: 10/09/2004
Messaggi: 4923

Mi sembra di tornare ai tempi dell'uni!

Se sei stanco di virus e schermate blu passa a Linux

Ritratto di anubis
anubis
(Guru)
Offline
Guru
Iscritto: 07/04/2007
Messaggi: 3656

Citazione:

Direi che ci siamo chiariti tutti
@ anubis: quindi non stai studiando per conto tuo, sei iscritto all'università! Informatica per caso?

 
 
esatto... dopo qualche anno di fermo mi sono deciso di iscrivermi ad informatica...
non avete idea di quanto mi ha fatto penare questo semplice programmino...
poi mi sono ricordato... ma a che serve la matematica? ci sarà pure una formula Smile bene.. usata la sommatoria ed ho fatto il programma in due secondi!!!

OpenSUSE Member,Packman Packager, Education Project Admin, LXDE Project Admin
Powered by http://en.opensuse.org/HP_Pavilion_dv6855el