Chiedo un parere/aiutino matrici (mat)

di il
7 risposte

Chiedo un parere/aiutino matrici (mat)

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

  • Re: Chiedo un parere/aiutino matrici (mat)

    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;
    }
  • Re: Chiedo un parere/aiutino matrici (mat)

    Mi sembra normale che ti dia un errore ... m1 è una matrice con due dimensioni ... tu ne usi una sola come fosse un vettore ...
  • Re: Chiedo un parere/aiutino matrici (mat)

    ?????? scusa ma non ho capito che intendi? ( sarà ke mi sto rincoglionendo sto da 7 ore su sto cacchio di programma)
  • Re: Chiedo un parere/aiutino matrici (mat)

    Code tags?
  • Re: Chiedo un parere/aiutino matrici (mat)

    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]
  • Re: Chiedo un parere/aiutino matrici (mat)

    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?
  • Re: Chiedo un parere/aiutino matrici (mat)

    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