Stampa colonne matrici [C]

di il
9 risposte

Stampa colonne matrici [C]

Salve a tutti, sto riscontrando problemi nello svolgimento di un esercizio. Quest'ultimo mi chiede di leggere e stampare una matrice 4x4 da file, e fin qui tutto ok, dopodichè l'esercizio mi chiede di far scegliere all'utente una colonna, visualizzarne il massimo e scambiare quest'ultimo con una posizione scelta sempre dall'utente. Il mio problema è che non riesco a far visualizzare la colonna per poi effettuarne il resto delle operazioni.Vi ringrazio anticipatamente!

9 Risposte

  • Re: Stampa colonne matrici [C]

    Comincia con il visualizzare le 4 colonne, mostraci il codice e spiegaci le difficoltà; diversamente nessuno può aiutarti purtroppo.
  • Re: Stampa colonne matrici [C]

    #include <stdio.h>
    #define n 100
    
    /*
    
    • Leggere una matrice quadrata di interi. //DONE
    
    • Scambiare il massimo di una colonna con una posizione specifica
    
    */
    
    
    void leggiFile(FILE *fp,int mat[][n],int *r, int *c);
    void scriviFile(int mat[][n],int r, int c);
    void maxCol(int mat[][n],int r, int c, int maxc);
    
    
    main()
     {
    
        //DICHIARAZIONE VARIABILI
    
        FILE *fp;
        int mat[n][n];
        int r;
        int c;
        int maxc;
    
    
    
        //APERTURA FILE
    
        fp=fopen("input.txt","r");
    
          if (fp==NULL)
            printf("\nERRORE NELL'APERTURA DEL FILE!!\n");
    
          else{
    
             leggiFile(fp,mat,&r,&c);
    
             printf("\nLA MATRICE CONTENUTA NEL FILE E' LA SEGUENTE:\n");
             scriviFile(mat,r,c);
    
             printf("\n\n");
    
             printf("\nIL MASSIMO DELLA COLONNA E':\n");
             maxCol(mat,r,c,maxc,pos);
    
    
    
    
    
    }
     }
    
    
    void leggiFile(FILE *fp,int mat[][n],int *r, int *c){
    
      fscanf(fp,"%d",r);
      fscanf(fp,"%d",c);
    
        printf("\n");
    
        for (int i=0; i<*r; i++)
        for (int j=0; j<*c; j++){
            fscanf(fp,"%d",&mat[i][j]);
        }
       }
    
    
    
    void scriviFile(int mat[][n],int r, int c){
    
      for (int i=0; i<r; i++){
      printf("\n");
        for (int j=0; j<c; j++){
        printf("%d\t",mat[i][j]);
    
      }
     }
    }
    
    void maxCol(int mat[][n],int r, int c, int maxc){
    
    
        
            for (int i=0, j=0; i<c; i++){
                printf("%d",mat[i][j]);
    
            }
        }                           // in questo modo però mi visualizza solo la prima colonna, e non è su richiesta dell'utente.



    La mia difficoltà sta nel visualizzare una colonna e calcolarne il massimo. Ciò che voglio fare io è dire al programma di prendermi ad esempio la seconda colonna, il programma la prende, me la visualizza e mi calcola il massimo, dopodichè il programma mi chiede di scambiare questo massimo con un'altra posizione. So fare tutto, ma non so come visualizzare 1 sola colonna su richiesta dell'utente. Spero di aver reso l'idea.

    P.S: Ho pensato tipo di dichiararmi un vettore ,dove, inserendo le coordinate della colonna, me la mette all'interno di questo nuovo vettore.
  • Re: Stampa colonne matrici [C]

    Fai un passo alla volta: prendi la scriviFile() e copiala chiamandola stampaColonna(); ora 'c' non indica più il numero di colonne ma la colonna da stampare; prova a stampare solo quella colonna. Concentrati solo su questo.
  • Re: Stampa colonne matrici [C]

    Così? (in questo modo però mi visualizza solo la prima colonna)


    Void stampaCol(int mat[][n],int r, int c){
    
     for (int i=0, j=0; i<r; i++)
        printf("%d",mat[i][j]);
     }
  • Re: Stampa colonne matrici [C]

    Basta avere j come parametro e non sempre a 0
  • Re: Stampa colonne matrici [C]

    Non riesco proprio a capire, ogni tentivo che faccio è inutile.
  • Re: Stampa colonne matrici [C]

    Non mettere j=0 e al posto di j usa c
  • Re: Stampa colonne matrici [C]

    Risolto facendo così:
    void stampaCol(int mat[][n],int r, int c){
    
        int j=0;
        printf("\nInserire il numero della colonna:\n");
        scanf("%d",&c);
    
        for (int i=0; i<r; i++){
    
               if (j=c){
                printf("%d\t",mat[i][c]);
               }
        }
    }

    Era una cavolata, ma io non ci arrivavo! Grazie a tutti per l'aiuto.
  • Re: Stampa colonne matrici [C]

    No questa

    if (j=c){

    devi toglierlo
Devi accedere o registrarti per scrivere nel forum
9 risposte