Chiedo un parere/aiutino matrici (mat)

di Anonimizzato11468 il
7 risposte
Allora il prof di fondamenti ci ha dato una traccia la seguente:Sia data una matrice MAT di numeri interi, di dimensione r e c.

Si scriva una programma C++ che, dopo aver letto la matrice, elimini la riga k e la colonna t individuate dalla posizione del massimo - supposto unico - di MAT

Si stampi a video la matrice prima e dopo l''''eliminazione.

Si invii un unico file compresso avente per nome il NomeCognome dell''''allievo.

io l'ho eseguita cosi:
.H
#ifndef matrici_h
#define matrici_h
#define R 100
#define C 100
#define RH 256
#include <iostream>
#include <cstdlib>

typedef int matrice [R][C];
typedef int vettore [RH];
using namespace std;
//linearizzazione per riga j+i*C
//linearizzazione per colonna i+j*R

void leggi(matrice,int&,int&);
void stampa(matrice,int,int);
void istogramma(matrice,int,int,vettore,int&);
void stampa_isto(vettore,int);
int somma_diag_principale(matrice,int,int);
int somma_diag_secondaria(matrice,int,int);
void elimina_riga(matrice,int&,int,int);

#endif
.CPP
#include "matrici.h"

void leggi(matrice m ,int &r ,int &c)
{
cout<<"Inserisci il numero di righe :\n";
cin>>r;
cout<<"Inserisci il numero di colonne :\n";
cin>>c;
cout<<"\n";
for(int i=0; i<r; i++)
for(int j=0; j<c; j++)
{
cout<<"Inserisci l'elemento della matrice di posizione ["<<i<<"]["<<j<<"] = ";
cin>>m[j];
cout<<"\n";
}
}

void stampa(matrice m,int r,int c)
{
cout<<"Ecco la matrice :\n";
for(int i=0; i<r; i++)
{
for(int j=0; j<c; j++)
cout<<m[j]<<" | ";
cout<<"\n";
}
cout<<"\n";
}

void istogramma(matrice m, int r, int c, vettore histo,int &rh)
{
rh=RH;
for(int i=0; i<rh; i++)
histo=0;
for(int i=0; i<r; i++)
for(int j=0; j<c; j++)
histo[m[j]]++;
}

void stampa_isto(vettore histo,int rh)
{
cout<<"Ecco l'istogramma :";
for(int i=0; i<rh; i++)
{
cout<<i;
if(histo!=0)
{
for(int j=0; j<histo; j++)
cout<<"*";
}
cout<<"\n";
}
}
MAIN
#include "matrici.h"
int main(int argc, char *argv[])
{
matrice m1;
int r1,c1,rh1;
vettore h1;

leggi(m1,r1,c1);
stampa(m1,r1,c1);
istogramma(m1,r1,c1,h1,rh1);
stampa_isto(h1,rh1);

system("PAUSE");
return EXIT_SUCCESS;
}

volevo chiedervi gentilmente come fare per inserire la funzione di eliminazione di una riga dopo aver individuato il massimo grazie in anticipo se non è un distrubo potreste postarmi il codice della funzione di massimo ? ovvero dove lo implemento?

7 Risposte

  • Ho provato cosi ma mi da errore a int max=m1[o] perke?
    #include "matrici.h"

    void leggi(matrice m ,int &r ,int &c)
    {
    cout<<"Inserisci il numero di righe :\n";
    cin>>r;
    cout<<"Inserisci il numero di colonne :\n";
    cin>>c;
    cout<<"\n";
    for(int i=0; i<r; i++)
    for(int j=0; j<c; j++)
    {
    cout<<"Inserisci l'elemento della matrice di posizione ["<<i<<"]["<<j<<"] = ";
    cin>>m[j];
    cout<<"\n";
    }
    }

    void stampa(matrice m,int r,int c)
    {
    cout<<"Ecco la matrice :\n";
    for(int i=0; i<r; i++)
    {
    for(int j=0; j<c; j++)
    cout<<m[j]<<" | ";
    cout<<"\n";
    }
    cout<<"\n";
    }

    void istogramma(matrice m, int r, int c, vettore histo,int &rh)
    {
    rh=RH;
    for(int i=0; i<rh; i++)
    histo=0;
    for(int i=0; i<r; i++)
    for(int j=0; j<c; j++)
    histo[m[j]]++;
    }

    void stampa_isto(vettore histo,int rh)
    {
    cout<<"Ecco l'istogramma :";
    for(int i=0; i<rh; i++)
    {
    cout<<i;
    if(histo!=0)
    {
    for(int j=0; j<histo; j++)
    cout<<"*";
    }
    cout<<"\n";
    }
    }
    int massimo(matrice m1,int r1,int c1)
    {
    int max=m1[0];
    for (int i=0;i<r;i++)
    if(m1>max)
    max=m1;
    return max;
    }
    int posizioneMax(matrice m1, int r,int c)
    {
    int pos;
    pos=0;
    for(int i=0;i<r;i++)
    if(m1>m1[pos])
    pos=1;
    return pos;
    }
    void cancella (matrice m1,int &r,int &c,int pos)
    {
    for(int i=pos;i<r;i++)
    m1=m1[i+1];
    r--;
    }
    .h
    #ifndef matrici_h
    #define matrici_h
    #define R 100
    #define C 100
    #define RH 256
    #include <iostream>
    #include <cstdlib>

    typedef int matrice [R][C];
    typedef int vettore [RH];
    using namespace std;
    //linearizzazione per riga j+i*C
    //linearizzazione per colonna i+j*R

    void leggi(matrice,int&,int&);
    void stampa(matrice,int,int);
    void istogramma(matrice,int,int,vettore,int&);
    void stampa_isto(vettore,int);
    int somma_diag_principale(matrice,int,int);
    int somma_diag_secondaria(matrice,int,int);
    void elimina_riga(matrice,int&,int,int);
    int massimo(matrice m1, int r,int c);
    int posizioneMax(matrice m1, int r,int c);
    void cancella(matrice m1,int &r, int &c, int pos);

    #endif
    main
    #include "matrici.h"
    int main(int argc, char *argv[])
    {
    matrice m1;
    int r1,c1,rh1;
    vettore h1;
    int max;
    int pMax;

    leggi(m1,r1,c1);
    stampa(m1,r1,c1);
    istogramma(m1,r1,c1,h1,rh1);
    stampa_isto(h1,rh1);
    max=massimo(m1,r1,c1);
    pMax=posizioneMax(m1,r1,c1);
    cancella(m1,r1,c1,pMax);

    system("PAUSE");
    return EXIT_SUCCESS;
    }
  • Mi sembra normale che ti dia un errore ... m1 è una matrice con due dimensioni ... tu ne usi una sola come fosse un vettore ...
  • ?????? scusa ma non ho capito che intendi? ( sarà ke mi sto rincoglionendo sto da 7 ore su sto cacchio di programma)
  • Code tags?
  • La matrice

    m1[j]

    ha due dimensioni, non una come

    m1

    Quindi non va bene m1[0] ... il primo elemento della matrice è m1[0][0]
  • Beh ho fatt cosi ma neanke mi aprte mi da errore nel file .h di libreria
    non è che qualcuno di buon cuore potrebbe postarmi il codice?
  • Se vuoi dirci di quale errore si tratta, ti posso dare una mano ... scrivere tutto il codice no, non mi pare né utile né opportuno.
Devi accedere o registrarti per scrivere nel forum
7 risposte