Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C] Esercizio per creazione funzione che moltiplica matrici di interi

    Salve, sono nuovo nel forum quindi scusate se sbaglio qualcosa nel format.
    Quest'anno all'università abbiamo iniziato ad usare il C, ed il professore ci ha assegnato come esercizio di scrivere il prototipo di una funzione che moltiplichi tra di loro due matrici di interi. Nel programma che ho scritto io (che è il seguente), viene fatto tutto nel main(), mentre il professore vuole che ci sia proprio una funzione a cui dare in input le matrici. Qualcuno può aiutarmi? (So ad esempio che in C non esiste una funzione che restituisca un array di interi, e venendo da Java questo mi crea non poche complicazioni!). Grazie in anticipo!

    codice:
    #include <stdio.h>
    
    int main()
    {
      int m = 0; //Righe prima matrice
      int n = 0; //Colonne seconda matrice
      int p = 0; //Righe prima matrice
      int q = 0; //colonne seconda matrice
    
      //Inserimento prima matrice
      printf("Inserire numero di righe della prima matrice:\n");
      scanf("%d", &m);
      printf("Inserire numero di colonne della prima matrice:\n");
      scanf("%d", &n);
      int matrice1[m][n];
      printf("Inserire gli elementi della matrice:\n");
      for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
          scanf("%d", &matrice1[i][j]);
    
      //Inserimento seconda matrice
      printf("Inserire numero di righe della seconda matrice:\n");
      scanf("%d", &p);
      printf("Inserire numero di colonne della seconda matrice:\n");
      scanf("%d", &q);
      if (n != p)
        printf("Non è possibile effettuare la moltiplicazione, arrivederci!\n");
      else
      {
        int matrice2[p][q];
        printf("Inserire gli elementi della seconda matrice:\n");
        for (int i = 0; i < p; i++)
          for (int j = 0; j < q; j++)
            scanf("%d", &matrice2[i][j]);
     
        //Calcolo matrice prodotto
        int risultato[m][q];
        for (int i = 0; i < m; i++) {
          int somma = 0;
          for (int j = 0; j < q; j++) {
            for (int k = 0; k < p; k++) {
              somma += matrice1[i][k]*matrice2[k][j];
            }
            risultato[i][j] = somma;
          }
        }
    
        //Output matrice 1
        printf("Matrice 1:\n");
        for (int i = 0; i < m; i++) {
          for (int j = 0; j < n; j++)
            printf("%d " , matrice1[i][j]);
          printf("\n");      
        }
        
        printf("\n");
    
        //Output matrice 2
        printf("Matrice 2:\n");
        for (int i = 0; i < p; i++) {
          for (int j = 0; j < q; j++)
            printf("%d " , matrice2[i][j]);
          printf("\n");      
        }
        
        printf("\n");
        
        //Output matrice prodotto
        printf("Matrice prodotto:\n");
        for (int i = 0; i < m; i++) {
          for (int j = 0; j < q; j++)
            printf("%d ", risultato[i][j]); 
          printf("\n");
        }
      }
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma l'allocazione dinamica delle matrici la conoscete?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.