Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Esercitazione del 12 novembre 2019
- Realizzare le operazioni di somma di 2 matrici e prodotto scalare di una matrice per un numero
- reale.
- Il tipo di dato matrice deve essere rappresentato come un vettore di reali a 1 dimensione
- variabile.
- N.B.
- Realizzare gli algoritmi di tutte le funzioni individuate e il codice in linguaggio C
- NON CONSEGNARE
- */
- //Librerie
- #include <stdio.h>
- #include <stdlib.h>
- //Prototipi
- int SommaMatrici( int** m1 , int righe , int colonne , int** m2 , int** ms );
- int MatriceScalare( int** mscalare , int r , int c );
- //Tipo di dato
- typedef struct Matrice {
- int righe;
- int colonne;
- int **matrix;
- }M;
- //Funzione Main
- int main() {
- //dichiarazioni variabili
- M m1;
- M m2;
- M ms;
- M m_scalare;
- int i;
- int j;
- //Fase di input
- //inserimento righe e colonne matrice1
- printf( "righe m1: " );
- scanf( "%d" , &m1.righe );
- printf( "colonne m1: " );
- scanf( "%d" , &m1.colonne );
- //Allocazione della matrice1
- m1.matrix= ( int** )malloc( m1.righe * sizeof( int* ) );//allocazione per il numero di righe
- i=0;
- while(i<m1.righe) {
- m1.matrix[i] = (int*)malloc( m1.colonne * sizeof( int ) );//allocazione per il numero di colonne
- i=i+1;
- }
- //inserimento dei valori nella matrice1
- i=0;
- while(i<m1.righe) {
- j=0;
- while(j<m1.colonne) {
- printf( "(%d,%d)= " , i , j );
- scanf( "%d" , &m1.matrix[ i ][ j ] );
- j=j+1;
- }
- i=i+1;
- }
- printf("\nmatrice1: \n");
- //lettura dei valori nella matrice1
- i=0;
- while( i < m1.righe ) {
- j=0;
- while( j < m1.colonne ) {
- printf( "%d\t" , m1.matrix[ i ][ j ] );
- j=j+1;
- }
- printf( "\n" );
- i=i+1;
- }
- //inserimento righe e colonne matrice2
- m2.righe= m1.righe;
- printf("\nrighe m2: %d\n",m2.righe);
- m2.colonne= m1.colonne;
- printf("colonne m2: %d",m2.colonne);
- //Allocazione della matrice2
- m2.matrix= ( int** )malloc( m2.righe * sizeof( int* ) );//allocazione per il numero di righe
- i=0;
- while(i<m2.righe){
- m2.matrix[i] = (int*)malloc( m2.colonne * sizeof( int ) );//allocazione per il numero di colonne
- i=i+1;
- }
- printf("\n");
- //inserimento dei valori nella matrice2
- i=0;
- while(i<m2.righe) {
- j=0;
- while(j<m2.colonne) {
- printf( "(%d,%d)= " , i , j );
- scanf( "%d" , &m2.matrix[ i ][ j ] );
- j=j+1;
- }
- i=i+1;
- }
- printf( "\nmatrice2: \n" );
- //lettura dei valori nella matrice2
- i=0;
- while(i<m2.righe) {
- j=0;
- while(j<m2.colonne) {
- printf( "%d\t" , m2.matrix[i][j] );
- j=j+1;
- }
- printf( "\n" );
- i=i+1;
- }
- printf( "\n" );
- //inserimento righe e colonne matrice somma
- ms.righe=m1.righe;
- ms.colonne=m1.colonne;
- //Allocazione della matrice somma
- ms.matrix= ( int** )malloc( m1.righe * sizeof( int* ) );//allocazione per il numero di righe
- i=0;
- while(i<m1.righe) {
- ms.matrix[ i ] = (int*)malloc( m1.colonne * sizeof( int ) );//allocazione per il numero di colonne
- i=i+1;
- }
- //inserimento righe e colonne matrice scalare
- printf( "\nrighe m_scalare: " );
- scanf( "%d" , &m_scalare.righe );
- printf( "colonne m_scalare: " );
- scanf( "%d" , &m_scalare.colonne );
- //Allocazione della matrice scalare
- m_scalare.matrix= ( int** )malloc( m_scalare.righe * sizeof( int* ) );//allocazione per il numero di righe
- i=0;
- while(i<m_scalare.righe){
- m_scalare.matrix[ i ] = (int*)malloc( m_scalare.colonne * sizeof( int ) );//allocazione per il numero di colonne
- i=i+1;
- }
- //inserimento dei valori nella matrice scalare
- i=0;
- while( i < m_scalare.righe ) {
- j=0;
- while( j < m_scalare.colonne ) {
- printf( "(%d,%d)= " , i , j );
- scanf( "%d" , &m_scalare.matrix[ i ][ j ] );
- j=j+1;
- }
- i=i+1;
- }
- //lettura di verifica dei valori matrice scalare
- printf( "\nmatrice scalare: " );
- printf( "\n" );
- i=0;
- while( i < m_scalare.righe ) {
- j=0;
- while( j < m_scalare.colonne ) {
- printf( "%d\t" , m_scalare.matrix[ i ][ j ] );
- j=j+1;
- }
- printf( "\n" );
- i=i+1;
- }
- //Fase di elaborazione
- **ms.matrix= SommaMatrici( m1.matrix , m1.righe , m1.colonne , m2.matrix , ms.matrix );
- **m_scalare.matrix= MatriceScalare( m_scalare.matrix , m_scalare.righe , m_scalare.colonne );
- //Fase di output
- //lettura matrice somma aggiornata
- printf( "\nmatrice somma: \n" );
- i=0;
- while( i < ms.righe ) {
- j=0;
- while( j < ms.colonne ) {
- printf( "%d\t" , ms.matrix[ i ][ j ] );
- j=j+1;
- }
- printf( "\n" );
- i=i+1;
- }
- //lettura matrice scalare aggiornata
- printf( "\nmatrice scalare: " );
- printf("\n");
- i=0;
- while( i < m_scalare.righe ) {
- j=0;
- while( j < m_scalare.colonne ) {
- printf( "%d\t" , m_scalare.matrix[ i ][ j ] );
- j=j+1;
- }
- printf( "\n" );
- i=i+1;
- }
- //Deallocazione la matrice1 e matrice2
- free( m1.matrix );
- free( m2.matrix );
- free( ms.matrix );
- free( m_scalare.matrix );
- return 0;
- }
- int SommaMatrici( int** m1 , int righe , int colonne , int** m2 , int** ms ) {
- int i= 0;
- int j;
- while( i < righe ) {
- j=0;
- while( j < colonne ) {
- ms[i][j]= m1[i][j] + m2[i][j];
- j=j+1;
- }
- i=i+1;
- }
- return **ms;
- }
- int MatriceScalare( int** mscalare , int r , int c ) {
- int valore= 0;
- int i= 0;
- int j;
- printf("scalare= ");
- scanf( "%d" , &valore );
- while( i < r ) {
- j=0;
- while( j < c ) {
- mscalare[ i ][ j ] = mscalare[ i ][ j ] * valore;
- j=j+1;
- }
- i=i+1;
- }
- return **mscalare;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement