Come eliminare definitivamente una riga di una matrice

di Anonimizzato24797 il
7 risposte
Buonasera a tutti,

Nel seguente esercizio devo eliminare la riga (scelta da me) di una matrice inserita manualmente.

Questo è il codice:
#include<iostream>
using namespace std;
int main()
{
	int N,M,K;
	int matrix[10][10];
	cout << "nro righe=";
	cin >> N;
	cout << "\nnro colonne=";
	cin >> M;
	//Lettura matrice
	for(unsigned int i = 0; i < N; ++i)
	{
		for(unsigned int j = 0; j < M; ++j)
		{
			cout << "\na(" << i << "," << j << ")=";
			cin >> matrix [i][j];
		}
	}
	//Eliminazione riga
	cout << "\nriga da eliminare=" << "\n";
	cin >> K;
	if (K != (N-1))
		{
			for(unsigned int i = K; i < N-1; ++i)
			{
				for(unsigned j = 0; j < M; ++j)
				matrix[i][j] = matrix[i+1][j];			
			}
	    }
	
	for(unsigned int i = 0; i < N-1; ++i)
	{
		for(unsigned int j = 0; j < M; ++j)
		{
			cout << "a(" << i <<"," << j << ")=" << matrix[i][j] << "\n";
		}
	}
}
Ora, effettivamente mi restituisce in stampa la matrice senza la riga selezionata, ma in realtà la dimensione della matrice è rimasta invariata ed in particolare le ultime due righe della matrice coincidono. Qual è il modo giusto per svolgere l'esercizio e ridurre effettivamente il numero di righe della matrice?

7 Risposte

  • Ciao!

    Non ho ancora controllato il codice, ma volevo porti una domanda: come si elimina un elemento di un semplice array di interi?
  • Devi lavorare con l'allocazione dinamica
  • Nippolo ha scritto:


    Ciao!

    Non ho ancora controllato il codice, ma volevo porti una domanda: come si elimina un elemento di un semplice array di interi?
    Ciao, in realtà non lo so. Quello che mi viene in mente è di creare un nuovo array contente tutti gli elementi dell'array originario tranne quello/i che voglio eliminare.
  • oregon ha scritto:


    Devi lavorare con l'allocazione dinamica
    Si, avevo letto qualcosa inerente all'allocazione dinamica in qualche discussione del forum, ho provato anche a googolare allocazione dinamica ma ho capito ben poco di quello che ho trovato. Non è che potresti farmi un esempio pratico con un array (vettore)?
  • Se lo scopo è quello di passare da un array di capacità n ad uno di capacità n-1, l'unica strada è l'allocazione dinamica. A tal proposito puoi dare un'occhiata qui:
    http://www.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/24Alldinamica.html

    Vorrei però farti notare che non c'è niente di male nell'avere un array con una capacità di n elementi e considerarne solo i primi n-1.
  • Nippolo ha scritto:


    Vorrei però farti notare che non c'è niente di male nell'avere un array con una capacità di n elementi e considerarne solo i primi n-1.

    Grazie per la fonte, questo lo so era più che altro per una mia curiosità personale
  • Npn ti serve a nulla l'esempio sr non hai studiato l'argomento "allocazione dinamica". Solo dopo potrai affrontare questo esercizio.
Devi accedere o registrarti per scrivere nel forum
7 risposte