Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.48 KB | None | 0 0
  1. /*
  2. Esercitazione del 12 novembre 2019
  3. Realizzare le operazioni di somma di 2 matrici e prodotto scalare di una matrice per un numero
  4. reale.
  5. Il tipo di dato matrice deve essere rappresentato come un vettore di reali a 1 dimensione
  6. variabile.
  7. N.B.
  8. Realizzare gli algoritmi di tutte le funzioni individuate e il codice in linguaggio C
  9. NON CONSEGNARE
  10. */
  11.  
  12. //Librerie
  13. #include <stdio.h>
  14. #include <stdlib.h>
  15. //Prototipi
  16. int SommaMatrici( int** m1 , int righe , int colonne , int** m2 , int** ms );
  17. int MatriceScalare( int** mscalare , int r , int c );
  18. //Tipo di dato
  19. typedef struct Matrice {
  20.     int righe;
  21.     int colonne;
  22.     int **matrix;
  23.  
  24. }M;
  25. //Funzione Main
  26.  
  27. int main() {
  28.  
  29.     //dichiarazioni variabili
  30.  
  31.     M m1;
  32.     M m2;
  33.     M ms;
  34.     M m_scalare;
  35.     int i;
  36.     int j;
  37.  
  38.  
  39. //Fase di input
  40.  
  41.     //inserimento righe e colonne matrice1
  42.     printf( "righe   m1: " );
  43.     scanf(  "%d" , &m1.righe );
  44.  
  45.     printf( "colonne m1: " );
  46.     scanf(  "%d" , &m1.colonne );
  47.  
  48.  
  49.  
  50.     //Allocazione della matrice1
  51.  
  52.     m1.matrix= ( int** )malloc( m1.righe * sizeof( int* ) );//allocazione per il numero di righe
  53.  
  54.     i=0;
  55.     while(i<m1.righe) {
  56.  
  57.  
  58.         m1.matrix[i] = (int*)malloc( m1.colonne * sizeof( int ) );//allocazione per il numero di colonne
  59.         i=i+1;
  60.     }
  61.  
  62.     //inserimento dei valori nella matrice1
  63.     i=0;
  64.     while(i<m1.righe) {
  65.  
  66.         j=0;
  67.         while(j<m1.colonne) {
  68.  
  69.             printf( "(%d,%d)= " , i , j );
  70.             scanf( "%d" , &m1.matrix[ i ][ j ] );
  71.  
  72.             j=j+1;
  73.  
  74.         }
  75.         i=i+1;
  76.     }
  77.  
  78.     printf("\nmatrice1: \n");
  79.  
  80.     //lettura dei valori nella matrice1
  81.     i=0;
  82.     while( i < m1.righe ) {
  83.  
  84.         j=0;
  85.         while( j < m1.colonne ) {
  86.  
  87.             printf( "%d\t" , m1.matrix[ i ][ j ] );
  88.             j=j+1;
  89.  
  90.             }
  91.             printf( "\n" );
  92.             i=i+1;
  93.     }
  94.  
  95.     //inserimento righe e colonne matrice2
  96.  
  97.     m2.righe= m1.righe;
  98.     printf("\nrighe   m2: %d\n",m2.righe);
  99.  
  100.     m2.colonne= m1.colonne;
  101.     printf("colonne m2: %d",m2.colonne);
  102.  
  103.  
  104.     //Allocazione della matrice2
  105.  
  106.     m2.matrix= ( int** )malloc( m2.righe * sizeof( int* ) );//allocazione per il numero di righe
  107.  
  108.     i=0;
  109.     while(i<m2.righe){
  110.  
  111.         m2.matrix[i] = (int*)malloc( m2.colonne * sizeof( int ) );//allocazione per il numero di colonne
  112.         i=i+1;
  113.         }
  114.  
  115.     printf("\n");
  116.  
  117.     //inserimento dei valori nella matrice2
  118.     i=0;
  119.     while(i<m2.righe) {
  120.  
  121.         j=0;
  122.         while(j<m2.colonne) {
  123.  
  124.             printf( "(%d,%d)= " , i , j );
  125.             scanf( "%d" , &m2.matrix[ i ][ j ] );
  126.  
  127.             j=j+1;
  128.  
  129.         }
  130.         i=i+1;
  131.     }
  132.  
  133.     printf( "\nmatrice2: \n" );
  134.  
  135.     //lettura dei valori nella matrice2
  136.     i=0;
  137.     while(i<m2.righe) {
  138.  
  139.     j=0;
  140.     while(j<m2.colonne) {
  141.  
  142.         printf( "%d\t" , m2.matrix[i][j] );
  143.         j=j+1;
  144.  
  145.         }
  146.     printf( "\n" );
  147.     i=i+1;
  148.     }
  149.  
  150.     printf( "\n" );
  151.  
  152.     //inserimento righe e colonne matrice somma
  153.  
  154.     ms.righe=m1.righe;
  155.     ms.colonne=m1.colonne;
  156.  
  157.     //Allocazione della matrice somma
  158.  
  159.     ms.matrix= ( int** )malloc( m1.righe * sizeof( int* ) );//allocazione per il numero di righe
  160.  
  161.     i=0;
  162.     while(i<m1.righe) {
  163.  
  164.         ms.matrix[ i ] = (int*)malloc( m1.colonne * sizeof( int ) );//allocazione per il numero di colonne
  165.         i=i+1;
  166.         }
  167.  
  168.  
  169.     //inserimento righe e colonne matrice scalare
  170.     printf( "\nrighe   m_scalare: " );
  171.     scanf(  "%d" , &m_scalare.righe );
  172.  
  173.     printf( "colonne m_scalare: " );
  174.     scanf(  "%d" , &m_scalare.colonne );
  175.  
  176.     //Allocazione della matrice scalare
  177.  
  178.     m_scalare.matrix= ( int** )malloc( m_scalare.righe * sizeof( int* ) );//allocazione per il numero di righe
  179.  
  180.     i=0;
  181.     while(i<m_scalare.righe){
  182.  
  183.         m_scalare.matrix[ i ] = (int*)malloc( m_scalare.colonne * sizeof( int ) );//allocazione per il numero di colonne
  184.         i=i+1;
  185.         }
  186.  
  187.     //inserimento dei valori nella matrice scalare
  188.  
  189.     i=0;
  190.     while( i < m_scalare.righe ) {
  191.     j=0;
  192.     while( j < m_scalare.colonne ) {
  193.  
  194.         printf( "(%d,%d)= " , i , j );
  195.         scanf( "%d" , &m_scalare.matrix[ i ][ j ] );
  196.         j=j+1;
  197.  
  198.     }
  199.     i=i+1;
  200.     }
  201.  
  202.     //lettura di verifica dei valori matrice scalare
  203.  
  204.     printf( "\nmatrice scalare: " );
  205.     printf( "\n" );
  206.  
  207.     i=0;
  208.     while( i < m_scalare.righe ) {
  209.     j=0;
  210.     while( j < m_scalare.colonne ) {
  211.  
  212.     printf( "%d\t" , m_scalare.matrix[ i ][ j ] );
  213.     j=j+1;
  214.  
  215.     }
  216.     printf( "\n" );
  217.     i=i+1;
  218.     }
  219.  
  220.  
  221. //Fase di elaborazione
  222.  
  223.     **ms.matrix=        SommaMatrici( m1.matrix , m1.righe , m1.colonne , m2.matrix , ms.matrix );
  224.     **m_scalare.matrix=  MatriceScalare( m_scalare.matrix ,  m_scalare.righe , m_scalare.colonne );
  225.  
  226.  
  227.  
  228.  
  229.     //Fase di output
  230.  
  231.     //lettura matrice somma aggiornata
  232.  
  233.     printf( "\nmatrice somma: \n" );
  234.  
  235.     i=0;
  236.     while( i < ms.righe ) {
  237.  
  238.         j=0;
  239.         while( j < ms.colonne ) {
  240.  
  241.             printf( "%d\t" , ms.matrix[ i ][ j ] );
  242.             j=j+1;
  243.  
  244.         }
  245.         printf( "\n" );
  246.         i=i+1;
  247.  
  248.     }
  249.  
  250.     //lettura matrice scalare aggiornata
  251.  
  252.     printf( "\nmatrice scalare: " );
  253.     printf("\n");
  254.  
  255.     i=0;
  256.     while( i < m_scalare.righe ) {
  257.  
  258.         j=0;
  259.         while( j < m_scalare.colonne ) {
  260.  
  261.         printf( "%d\t" , m_scalare.matrix[ i ][ j ] );
  262.         j=j+1;
  263.  
  264.         }
  265.         printf( "\n" );
  266.         i=i+1;
  267.  
  268.         }
  269.  
  270.  
  271.  
  272.  
  273.     //Deallocazione la matrice1 e matrice2
  274.  
  275.     free( m1.matrix );
  276.     free( m2.matrix );
  277.     free( ms.matrix );
  278.     free( m_scalare.matrix );
  279.  
  280.  
  281.  
  282.  
  283.     return 0;
  284.  
  285. }
  286.  
  287. int SommaMatrici( int** m1 , int righe , int colonne , int** m2 , int** ms ) {
  288.     int i= 0;
  289.     int j;
  290.  
  291.     while( i < righe ) {
  292.         j=0;
  293.         while( j < colonne ) {
  294.  
  295.             ms[i][j]=  m1[i][j] + m2[i][j];
  296.             j=j+1;
  297.         }
  298.         i=i+1;
  299.     }
  300.     return **ms;
  301.  
  302. }
  303.  
  304. int MatriceScalare( int** mscalare ,  int r , int c ) {
  305.  
  306.     int valore= 0;
  307.     int i= 0;
  308.     int j;
  309.  
  310.     printf("scalare= ");
  311.     scanf( "%d" , &valore );
  312.  
  313.     while( i < r ) {
  314.  
  315.         j=0;
  316.  
  317.         while( j < c ) {
  318.  
  319.         mscalare[ i ][ j ] = mscalare[ i ][ j ] * valore;
  320.         j=j+1;
  321.  
  322.         }
  323.  
  324.         i=i+1;
  325.  
  326.     }
  327.  
  328.     return **mscalare;
  329.  
  330. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement