Esercizio sulle matrici.

di il
19 risposte

Esercizio sulle matrici.

Ragazzi sto provando a compilare questo programma che dovrebbe creare 3 matrici ma il problema è che me ne crea solamente una non segnadomi nessuno errore. qualcuno può aiutarmi ?!!

#include<stdio.h>
#include <time.h>
#include<stdlib.h>
#define N 3
#define M 3
#define O 3


void stampamatrice1(int matrice1[N][N]);
void stampamatrice2(int matrice2[M][M]);
void stampamatrice3(int matrice3[O][O]);

int main(){
       int i,j,p,q,s,t;
       int matrice1[N][N];
       int matrice2[M][M];
       int matrice3[O][O];
       
      srand(time(NULL));
      for(i=0;i<N;i++)
      for(j=0;j<N;j++)   
      matrice1[i][j]=rand()%10 ;
      printf("\n Genero una matrice1 di dimensioni %dX%d:\n\n",N,N);
      stampamatrice1(matrice1);
      //srand(time(NULL));
      for(p=0;p<M;i++)
      for(q=0;q<M;j++)
      matrice2[p][q]=rand()%10 ;
      printf("\n Genero una matrice2 di dimensioni %dX%d:\n\n",M,M);
      stampamatrice2(matrice2);
      //srand(time(NULL));
      for(t=0;t<O;i++)
      for(s=0;s<O;j++)
      matrice3[t][s]=rand()%10 ;
      printf("\n Genero una matrice3 di dimensioni %dX%d:\n\n",O,O);
      stampamatrice3(matrice3);
      
      getchar();
      
      }


 void stampamatrice1(int matrice1[N][N])
{
     int i,j;
     for(i=0;i<N;i++)
     {
                     for(j=0;j<N;j++)printf("%4d",matrice1[i][j]);
                     printf("\n\n");                                    
     }
}

 void stampamatrice2(int matrice2[M][M])
{
     int p,q;
     for(p=0;p<M;p++)
     {
                     for(q=0;q<M;q++)printf("%4d",matrice2[p][q]);
                     printf("\n\n");                                    
     }
}


void stampamatrice3(int matrice3[O][O])
{
     int t,s;
     for(t=0;t<O;t++)
     {
                     for(s=0;s<O;s++)printf("%4d",matrice3[t][s]);
                     printf("\n\n");                                    
     }
}






19 Risposte

  • Re: Esercizio sulle matrici.

    #include<stdio.h>
    #include <time.h>
    #include<stdlib.h>
    #define N 3
    #define M 3
    #define O 3
    
    
    void stampamatrice1(int matrice1[N][N]);
    void stampamatrice2(int matrice2[M][M]);
    void stampamatrice3(int matrice3[O][O]);
    
    int main()
    {
        int i,j,p,q,s,t;
        int matrice1[N][N];
        int matrice2[M][M];
        int matrice3[O][O];
    
        srand(time(NULL));
        for(i=0; i<N; i++)
            for(j=0; j<N; j++)
                matrice1[i][j]=rand()%10 ;
        printf("\n Genero una matrice1 di dimensioni %dX%d:\n\n",N,N);
        stampamatrice1(matrice1);
    
        //srand(time(NULL));
        for(p=0; p<M; p++)
            for(q=0; q<M;q++)
                matrice2[p][q]=rand()%10 ;
        printf("\n Genero una matrice2 di dimensioni %dX%d:\n\n",M,M);
        stampamatrice2(matrice2);
        //srand(time(NULL));
    
        for(t=0; t<O; t++)
            for(s=0; s<O; s++)
                matrice3[t][s]=rand()%10 ;
        printf("\n Genero una matrice3 di dimensioni %dX%d:\n\n",O,O);
        stampamatrice3(matrice3);
    
        getchar();
    
    }
    
    
    void stampamatrice1(int matrice1[N][N])
    {
        int i,j;
        for(i=0; i<N; i++)
        {
            for(j=0; j<N; j++)printf("%4d",matrice1[i][j]);
            printf("\n\n");
        }
    }
    
    void stampamatrice2(int matrice2[M][M])
    {
        int p,q;
        for(p=0; p<M; p++)
        {
            for(q=0; q<M; q++)printf("%4d",matrice2[p][q]);
            printf("\n\n");
        }
    }
    
    
    void stampamatrice3(int matrice3[O][O])
    {
        int t,s;
        for(t=0; t<O; t++)
        {
            for(s=0; s<O; s++)printf("%4d",matrice3[t][s]);
            printf("\n\n");
        }
    }
    
    Nei cicli incrementavi sempre i e j, e non le variabili di essi (p-q-r-s)

    Se sai farlo, ti conviene creare una sola funzione che riempie le matrici e una sola funzione che le stampa(ovviamente devono avere in input puntatore, dimensione e ,se vuoi, messaggio da visualizzare)
  • Re: Esercizio sulle matrici.

    Non sono capace purtroppo , visto che sono alle prime armi...
    Ma qualche suggerimento per fare il prodotto tra le prime 2 matrici ?
  • Re: Esercizio sulle matrici.

    Cosa intendi con prodotto?
    vuoi una funzione separata o nel main?
    due matrici in particolare o in generale?
  • Re: Esercizio sulle matrici.

    Dopo la creazione di queste 2 matrice A e B fare il prodotto e metterle in un altra m,atrice..
    meglio come funzione..
  • Re: Esercizio sulle matrici.

    void prodottoMatrice( matrice 1, matrice 2, matriceProdotto)
    {
        -crei due variabili temporanee
        
        -stesso ciclo che hai usato per stamparle{
            -matriceProdotto[i][j]=matrice1[i][j]*matrice2[i][j];
        }
        
        return;
    }
    
  • Re: Esercizio sulle matrici.

    Io ho fatto cosi , ma qualcosa non va..

    int main ()
      {
       int matrice1[N,N], matrice2[N,N], matrice3[N,N];
       int i,j,p,q,t,s,k;
       srand(time(NULL));
       
       printf("\n Prodotto di due matrici 1, 2 \n");
       printf("\n MATRICE1 \n");
          for(i=0;i<N;i++)
          for(j=0;j<N;j++)   
          matrice1[i][j]=rand()%10 ;
          printf("\n Genero una matrice1 di dimensioni %dX%d:\n\n",N,N);
          stampamatrice1(matrice1);
          scanf("%d",&matrice1[i][j]);
       
    
       printf("\n MATRICE2\n");
         for(p=0;p<N;p++)
          for(q=0;q<N;q++)
          matrice2[p][q]=rand()%10 ;
          printf("\n Genero una matrice2 di dimensioni %dX%d:\n\n",N,N);
          stampamatrice2(matrice2);
          scanf("%d",&matrice2[p][q]);
      
    
          printf("\n RISULTATO \n");
          for(i=0;i<N;++i)
         {
           for(j=0;q<N;++j)
         {
         matrice3[t][s] = 0;
         for(k=0;k<2;++k)
          matrice3[t][s]= matrice3[t][s]+matrice1[i][k]*matrice2[k][q];
         printf("%d \t", matrice3[t][s]);
        }
        printf("\n");
       }
       printf("FINE \n\n");
       getchar();
    
      }
    
    
    
    
    
    
    
    
    
  • Re: Esercizio sulle matrici.

    Cosa sono B e C? ps: nn le hai dichiarate
  • Re: Esercizio sulle matrici.

    Ho corretto quelle imprecisioni , modificando il programma di prima..
  • Re: Esercizio sulle matrici.

    
    #include<stdio.h>
    #include <time.h>
    #include<stdlib.h>
    #define N 3
    #define M 3
    #define O 3
    
    
    void stampamatrice1(int matrice1[N][N]);
    void stampamatrice2(int matrice2[M][N]);
    
    int main ()
    {
        int matrice1[N][N], matrice2[N][N];
        int matrice3[N][N];
        int i,j,p,q,k;
        srand(time(NULL));
    
        printf("\n Prodotto di due matrici 1, 2 \n");
    
        printf("\n MATRICE1 \n");
        for(i=0; i<N; i++)
            for(j=0; j<N; j++)
                matrice1[i][j]=rand()%10 ;
        printf("\n Genero una matrice1 di dimensioni %dX%d:\n\n",N,N);
        stampamatrice1(matrice1);
    
     //   scanf("%d",&matrice1[i][j]);
    
    
        printf("\n MATRICE2\n");
        for(p=0; p<N; p++)
            for(q=0; q<N; q++)
                matrice2[p][q]=rand()%10 ;
        printf("\n Genero una matrice2 di dimensioni %dX%d:\n\n",N,N);
        stampamatrice2(matrice2);
    
     //   scanf("%f",&B[p][q]);
    
    
        printf("\n RISULTATO \n");
        for(i=0; i<N; i++)
        {
            for(j=0; j<N; j++)
            {
                matrice3[i][j] = 0;
                for(k=0; k<N; k++)
                    matrice3[i][j]+=matrice1[i][k]*matrice2[k][j];
    
            }
            printf("\n");
        }
    
        stampamatrice1(matrice3);
    
        printf("FINE \n\n");
        getchar();
    
    }
    
    
    
    
    void stampamatrice1(int matrice1[N][N])
    {
        int i,j;
        for(i=0; i<N; i++)
        {
            for(j=0; j<N; j++)printf("%4d",matrice1[i][j]);
            printf("\n\n");
        }
    }
    
    void stampamatrice2(int matrice2[N][N])
    {
        int p,q;
        for(p=0; p<N; p++)
        {
            for(q=0; q<N; q++)printf("%4d",matrice2[p][q]);
            printf("\n\n");
        }
    }
    
    Cosi funziona(controlla tu i risultati)
  • Re: Esercizio sulle matrici.

    Ok grazieee , adesso controllo i risultati e gli errori che avevo fatto .
  • Re: Esercizio sulle matrici.

    Comunque , si potrebbe creare come una funzione questo prodotto tra matrici ??
  • Re: Esercizio sulle matrici.

    
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    #define N 3
    
    
    void stampamatrice(int matrice[N][N]);
    
    int main ()
    {
        int matrice1[N][N], matrice2[N][N];
        int matrice3[N][N];
        int i,j,k;
        srand(time(NULL));
    
        printf("\n Prodotto di due matrici 1, 2 \n");
    
        printf("\n MATRICE1 \n");
        for(i=0; i<N; i++)
            for(j=0; j<N; j++)
                matrice1[i][j]=rand()%10 ;
        printf("\n Genero una matrice1 di dimensioni %dX%d:\n\n",N,N);
        stampamatrice(matrice1);
    
     //   scanf("%d",&matrice1[i][j]);
    
    
        printf("\n MATRICE2\n");
        for(i=0; i<N; i++)
            for(j=0; j<N; j++)
                matrice2[i][j]=rand()%10 ;
        printf("\n Genero una matrice2 di dimensioni %dX%d:\n\n",N,N);
        stampamatrice(matrice2);
    
     //   scanf("%f",&B[p][q]);
    
    
        printf("\n RISULTATO \n");
        for(i=0; i<N; i++)
        {
            for(j=0; j<N; j++)
            {
                matrice3[i][j] = 0;
                for(k=0; k<N; k++)
                    matrice3[i][j]+=matrice1[i][k]*matrice2[k][j];
    
            }
            printf("\n");
        }
    
        stampamatrice(matrice3);
    
        printf("FINE \n\n");
        getchar();
    
    }
    
    
    
    
    void stampamatrice(int matrice[N][N])
    {
        int i,j;
        for(i=0; i<N; i++)
        {
            for(j=0; j<N; j++)printf("%4d",matrice[i][j]);
            printf("\n\n");
        }
    }
    ho tolto le variabili in piu'




    Certo che sì

    basta che copi il codice usato nel main in una funzione, e poi dichiari/prendi in input tutte le variabili che hai usato

    ps:i risultati sono corretti? altrimenti rivedi il passaggio x il calcolo
  • Re: Esercizio sulle matrici.

    void prodotto(int matrice1[N][N], int matrice2[N][N], int matriceProdotto[N][N])
    {
        int i,j,k;
    
        for(i=0; i<N; i++)
        {
            for(j=0; j<N; j++)
            {
                matriceProdotto[i][j] = 0;
                for(k=0; k<N; k++)
                    matriceProdotto[i][j]+=matrice1[i][k]*matrice2[k][j];
    
            }
        }
    }
  • Re: Esercizio sulle matrici.

    Tipo cosi????


    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    #define N 3
    
    
    void stampamatrice(int matrice[N][N]);
    void prodottomatrici(int matrice[N][N]);
    
    int main ()
    {
        int matrice1[N][N], matrice2[N][N];
        int matrice3[N][N];
        int i,j,k;
        srand(time(NULL));
    
        printf("\n Prodotto di due matrici 1, 2 \n");
    
        printf("\n MATRICE1 \n");
        for(i=0; i<N; i++)
            for(j=0; j<N; j++)
                matrice1[i][j]=rand()%10 ;
        printf("\n Genero una matrice1 di dimensioni %dX%d:\n\n",N,N);
        stampamatrice(matrice1);
    
    
    
        printf("\n MATRICE2\n");
        for(i=0; i<N; i++)
            for(j=0; j<N; j++)
                matrice2[i][j]=rand()%10 ;
        printf("\n Genero una matrice2 di dimensioni %dX%d:\n\n",N,N);
        stampamatrice(matrice2);
    
    
        printf("\n RISULTATO \n");
        /*for(i=0; i<N; i++)
        {
            for(j=0; j<N; j++)
            {
                matrice3[i][j] = 0;
                for(k=0; k<N; k++)
                    matrice3[i][j]+=matrice1[i][k]*matrice2[k][j];
    
            }
            printf("\n");
        }*/
    
        stampamatrice(matrice3);
    
    
     prodottomatrici(matrice);
        printf("FINE \n\n");
        getchar();
    
    }
    
    
    
    
    void stampamatrice(int matrice[N][N])
    {
        int i,j;
        for(i=0; i<N; i++)
        {
            for(j=0; j<N; j++)printf("%4d",matrice[i][j]);
            printf("\n\n");
        }
    }
    
    {
         int i,j;
         
        for(i=0; i<N; i++)
        {
            for(j=0; j<N; j++)
            {
                matrice3[i][j] = 0;
                for(k=0; k<N; k++)
                    matrice3[i][j]+=matrice1[i][k]*matrice2[k][j];
    
            }
            printf("\n");
        }
    
    void prodottomatrici(int matrice[N][]){
    int i,j,k;
    
    for(i=0; i<N; i++)
        {
            for(j=0; j<N; j++)
            {
                matrice3[i][j] = 0;
                for(k=0; k<N; k++)
                    matrice3[i][j]+=matrice1[i][k]*matrice2[k][j];
    
            }
            printf("\n");
        }
    }
    
Devi accedere o registrarti per scrivere nel forum
19 risposte