|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2001
Messaggi: 1302
|
programmazione in c aiuto urgente per esame!
programma che alloca dinamicamente 2 matrici e ne fa la matrice somma delle 2!
se inserisco un numero di righe maggiore del numero di colonne non funziona mentre al contrario funziona perche'? #include <stdio.h> void Inserisci (int *r,int *c) { printf ("Inserisci il numero delle righe della matrice:\n"); scanf ("%d",r); printf ("Inserisci il numero delle colonne della matrice:\n"); scanf ("%d",c); } void main() { int r1; int c1; int r2; int c2; int i,j; int** mat1; int** mat2; int** mat3; do { printf ("Prima matrice!\n"); Inserisci (&r1,&c1); printf ("Seconda matrice!\n"); Inserisci (&r2,&c2); } while (r1!=r2 && c1!=c2); mat1=(int**)malloc(r1*sizeof(int*)); for (i=0;i<c1;i++) mat1[i]=(int*)malloc(c1*sizeof(int)); mat2=(int**)malloc(r2*sizeof (int*)); for (i=0;i<c2;i++) mat2[i]=(int*)malloc(c2*sizeof(int)); printf ("Inserisci gli elementi della prima matrice:\n"); for (i=0;i<r1;i++) for (j=0;j<c1;j++) scanf ("%d",&mat1[i][j]); printf ("La prima matrice e':\n\a"); for (i=0;i<r1;i++) { for (j=0;j<c1;j++) printf ("%d ",mat1[i][j]); printf ("\n"); } printf ("Inserisci gli elementi della seconda matrice:\n"); for (i=0;i<r2;i++) for (j=0;j<c2;j++) scanf ("%d",&mat2[i][j]); printf ("La seconda matrice e':\n\a"); for (i=0;i<r2;i++) { for (j=0;j<c2;j++) printf ("%d ",mat2[i][j]); printf ("\n"); } mat3=(int**)malloc(r1*sizeof (int*)); for (i=0;i<c1;i++) mat3[i]=(int*)malloc(c1*sizeof (int)); for (i=0;i<r1;i++) for (j=0;j<c1;j++) mat3[i][j]=mat1[i][j]+mat2[i][j]; printf ("La matrice somma delle matrici inserite e':\n\a"); for (i=0;i<r1;i++) { for (j=0;j<c1;j++) printf ("%d ",mat3[i][j]); printf ("\n"); } getch(); } |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2001
Messaggi: 1302
|
strano vero?
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Ecco una versione funzionante:
Codice PHP:
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals Ultima modifica di anx721 : 03-04-2004 alle 01:32. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2001
Messaggi: 1302
|
c'e' ancora un errore e non riesco a capire dove.
c'e' il controlo nel while che controlla che il numero di righe e colonne sia ugale se inserisco per la prima 2 e 3 e per la seconda 2 e 3 ok se inserisco per la prima 3 e 5 e per la seconda 6 e 3 ok mi chiede di riinserirle perche' sono diversi il problema è che se inserisco per la prima 3 e 5 e per la seconda 3 e 4 va avanti perche' se una delle due è uguale va avanti io ho messo un and non un or! Ultima modifica di leomeya : 03-04-2004 alle 08:32. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Sep 2001
Messaggi: 1302
|
ho risolto il problema bastava mettere un or al posto dell'and all'interno del while!
void Inserisci (int *r,int *c) { printf ("Inserisci il numero delle righe della matrice:\n"); scanf ("%d",r); printf ("Inserisci il numero delle colonne della matrice:\n"); scanf ("%d",c); } void main() { int r1; int c1; int r2; int c2; int i,j; int** mat1; int** mat2; int** mat3; do { printf ("Prima matrice!\n"); Inserisci (&r1,&c1); printf ("Seconda matrice!\n"); Inserisci (&r2,&c2); } while ((r1!=r2) || (c1!=c2)); mat1 = (int **) malloc(r1 * sizeof(int *)); mat2 = (int **) malloc(r2 * sizeof(int *)); mat3 = (int **) malloc(r1 * sizeof(int *)); for (i=0;i<r1;i++){ mat1[i] = (int *) malloc(c1 * sizeof(int)); mat2[i] = (int *) malloc(c2 * sizeof(int)); mat3[i] = (int *) malloc(c1 * sizeof(int)); } printf ("Inserisci gli elementi della prima matrice:\n"); for (i=0;i<r1;i++) for (j=0;j<c1;j++) scanf ("%d",&mat1[i][j]); printf ("La prima matrice e':\n\a"); for (i=0;i<r1;i++) { for (j=0;j<c1;j++) printf ("%d\t",mat1[i][j]); printf ("\n"); } printf ("Inserisci gli elementi della seconda matrice:\n"); for (i=0;i<r2;i++) for (j=0;j<c2;j++) scanf ("%d",&mat2[i][j]); printf ("La seconda matrice e':\n\a"); for (i=0;i<r2;i++) { for (j=0;j<c2;j++) printf ("%d\t",mat2[i][j]); printf ("\n"); } for (i=0;i<r1;i++) for (j=0;j<c1;j++) mat3[i][j] = mat1[i][j] + mat2[i][j]; printf ("La matrice somma delle matrici inserite e':\n\a"); for (i=0;i<r1;i++) { for (j=0;j<c1;j++) printf ("%d\t",mat3[i][j]); printf ("\n"); } getch(); } |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Sep 2001
Messaggi: 1302
|
sul dev che opzione devo usare per migliorere la lettura del testo del programma?
perche' sia ben incolonnato il testo del programma e non il testo dell'eseguibile |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:12.