Programma c++ matrice

di il
3 risposte

Programma c++ matrice

Salve, questo programma dovrebbe leggere una matrice da un file generico ,calcolare la somma delle singole righe e ordinare crescentemente tali somme ottenute, in seguito stamapare la matrice per valori crescenti della somma. tenete conto del fatto che queste sono le uniche librerie che posso usare e che devo usare allocazione ; j++) {
f >> m[j];
somma = somma + m[j];
}
m[c-1]=somma;
for(int p= 0 ; p< r ; p++){
if(vettore[p]== somma){
verifica = true;
daEliminare[indiceEliminare]=i;
indiceEliminare++,
eliminare=true;
}
}
if(verifica == false){
vettore[numVettore] = somma;
numVettore=numVettore+1;
somma = 0;
}else{
verifica = false;
somma = 0;
}
}
//fine creazione Vettore


cout <<"\n";
cout <<"Matrice in Input: \n";
stampaMat (m, r, c-1);


//inizio elimina riga da matrice

if(eliminare){
// indiceEliminare--;
// if(daEliminare[indiceEliminare]==(r-1)){
// r=r-1;
// }else{

for(int i= 0 ; i< indiceEliminare;i++){

for(int p = daEliminare; p < r-1; p++) {
for(int j = 0; j < c; j++) {
m[p][j]= m[p+1][j];
}

}
daEliminare[i+1]=daEliminare[i+1]-1;

}
//}
r=r-indiceEliminare;
}

//fine elimina riga da matrice

//Ordina Matrice

int temp[c];
for(int i=0 ; i<= r;i++){
int min =i;
for(int j=i+1; j<r-1; j++){
if(m[j][c-1] < m[min][c-1]){ //cambiare questa condizione per invertire l'ordine
min = j;
for(int p=0 ; p<c ; p++){


temp[p]=m[min][p];
m[min][p]=m[p];
m[p]=temp[p];
}
}
}
}
//Fine ordina Matrice



cout <<"\n";
cout <<"Matrice modificata: \n";
stampaMat (m, r, c-1);


//ordina Vettore

int tempo;
for(int i=0; i<r-1; i++)
{
int min = i;

for(int j=i+1; j<r; j++)
if(vettore[j] <vettore[min]) //cambiare questa condizione per invertire l'ordine
min = j;
tempo=vettore[min];
vettore[min]=vettore;
vettore=tempo;
}

//fine ordina vettore

//stampa Vettore
cout <<"Stampo somma per righe: \n";
for (int n=0; n<numVettore; n++)
cout << vettore[n] << " ";
cout << "\n";
f.close();
}
return EXIT_SUCCESS;

}

void stampaMat(int const* const* m, int r, int c) {
for(int i = 0; i < r; i++) {
for(int j = 0; j < c; j++) {
cout << m[j] << " ";
}

cout << endl;
}
}

int** creaMat(int r, int c) {
int i;
int** m;
m = new (int*[r]);
if(m == NULL)
return NULL;
for(i = 0; i < r; i++) {
m = new (int[c]);
if(m[i] == NULL)
return NULL;
}
return m;
}


[/code]

3 Risposte

  • Re: Programma c++ matrice

    Non hai detto se funziona
  • Re: Programma c++ matrice

    No
  • Re: Programma c++ matrice

    Ma è lo stesso esercizio degli altri tuoi thread ... Perché non usavi quei thread al posto di crearne un altro?

    Comunque se non funziona non è fatto bene, ovvio.

    L'hai scritto tu? Compila senza errori?

    E cosa non funziona? Hai fatto un po' di debug passo passo?

    Per cominciare, non mettere il file in C:\ perché in alcuni casi potresti avere problemi di autorizzazioni nel trattarlo.
    Usa la cartella in cui svolgi l'esercizio.

    E soprattutto qui

    for (int i = 0; i <= r; i++) {

    fai attenzione perché i non può essere uguale a r ma può andare da 0 a r-1
    Poi considera la for successiva che parte da i+1 e quindi potrebbe partire da r sbagliando.

    E il valore di c-1 che è già 3 ed è ovviamente sbagliato in quel momento.

    Insomma occhio agli INDICI nella fase di ordinamento.
Devi accedere o registrarti per scrivere nel forum
3 risposte