Dubbio su richiesta consegna

di il
6 risposte

Dubbio su richiesta consegna

Ciao ho scritto questo codice che dovrebbe essere giusto ma non son sicuro risponda completamente alla consegna, qualcuno può aiutarmi
#include <stdio.h>
#define N 3

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

int main(){
    
    int matrice[N][N];
    
    printf("Compila la matrice:\n\n");
     for(int i=0; i<N; i++)
        for(int j=0;j<N;j++)
    scanf("%d", &matrice[i][j]);
    
     for(int i=0; i<N; i++){
        for(int j=0;j<N;j++){
    
    printf("%2d ", matrice[i][j]);
        }
        printf("\n");
     }
     
     printf("Stampiamo la matrice trasposta:\n\n");
     
     mat_trasposta(matrice);
     
     return 0;
}
    
    
    
}






la consegna è questa

Scrivere una funzione che, data una matrice n x n di numeri interi, calcoli la matrice trasposta. La matrice trasposta MT di una matrice M è quella matrice che ha come righe le colonne di M e come
colonne le righe di M.
Scrivere anche un programma main() che dimostri l’uso della funzione con esempi concreti.

6 Risposte

  • Re: Dubbio su richiesta consegna

    PROVALA!!!!

    Quale e' la matrice trasposta di
    
    [[1,2,3],
     [4,5,6],
     [7,8,9]]
    
    ??
  • Re: Dubbio su richiesta consegna

    Hai solo lasciato una graffa di troppo in fondo, ma mi sembra che vada
    ho solo due dubbi:
    1) se la consegna prescrive "calcola" forse serve di averla in memoria, e non stmparne una copia
    2) mi sembra che tu abbia "deciso" che si tratta sempre di una matrice 3 x 3
    e se fosse a dimensioni variabili?, cioè: a dimensione singola variabile, visro che è quadrata
  • Re: Dubbio su richiesta consegna

    Esatto standardOil, il mio dubbio è proprio quello che hai scritto al punto uno, perché stamparla giusta la stampa giusta, tu scrivi 9 numeri, il programma li mette sotto forma di matrice, e poi scrive quella trasposta. Comunque si la graffa di troppo non so perchè l 'ho copiata.
  • Re: Dubbio su richiesta consegna

    Nulla di grave
    la consegna in effetti non è chiarissima, non saprei aiutarti
  • Re: Dubbio su richiesta consegna

    Se non ti offendi ti spiego come "io personalmente" risolverei la cosa

    intendiamoci, non sono assolutamnte uno bravo, sono un programmatore "giocattolo", uno che fino a ieri giocava solo con Arduino (ma il linguaggio è uguale), ma mi piace provare cose....

    chiederi per prima cosa la dimensione della matrice
    crerei due aree di memoria con due malloc, grandi a sufficenza per contenere le due matrici, originale e trasposta
    leggerei per rige e colonne applicando l'aritmetica dei puntatori

    passo alla funzione di trasppsizione il puntatore alla matrice originale, il puntatore alla matrice trasposta e la dimensione
    anche qui applicherei l'algebra dei puntatori

    e scriverei una funzione di stampa, che riceve in ingresso il puntatore alla matrice e la sua dimensione

    ho provato adesso e va, anche per matrici di ordine 4 (si dice ordine la dimensione, vero?)
  • Re: Dubbio su richiesta consegna

    Se no l'ho fatta anche così ma non so se anche questa risponde alla consegna


    #include <stdio.h>
    #define N 3
    
    void trasposta_matrice(int [][N], int);
    
    int main() {
        int a[N][N];
        int i,j;
        int righe;
    
        scanf("%d", &righe);
        for(i=0;i<righe;i++){
            for(j=0;j<righe;j++){
                scanf("%d", &a[i][j]);
            }
        }
        for(i=0;i<righe;i++){
            for(j=0;j<righe;j++) {
                printf("%d ", a[i][j]);
            }
            printf("\n");
        }
        printf("\n");
        trasposta_matrice(a, righe);
        for(i=0;i<righe;i++){
            for(j=0;j<righe;j++) {
                printf("%d ", a[i][j]);
            }
            printf("\n");
        }
        return 0;
    }
    
    
    
    void trasposta_matrice(int a[][N], int dim){
        int i,j,temp;
    
        for (i=0;i<dim;i++){
            for (j=i+1;j<dim;j++){
                temp = a[i][j];
                a[i][j]= a[j][i];
                a[j][i]= temp;
            }
        }
    }
    
Devi accedere o registrarti per scrivere nel forum
6 risposte