/* Input inserire due numeri interi n maggiore uguale 2, m maggiore uguale 2.
1. acquisire vettore bidimensionale A[n][m];
2, procedura che verifica che le righe di A memorizzano gli stessi elementi, non conta l'ordine. 1 se memorizza, 0 se non memorizza.
*/
Ecco la traccia dell'esercizio. Vorrei capire come fare, vi abozzo il codice che sicuramente è sbagliato in quanto mi esce sempre "Righe Differenti". Avevo pensato nella procedura a bloccare il primo ciclo delle righe, a fare un altro ciclo che ti controllasse ogni elemento della riga successiva, se il primo controllo è diverso dal secondo, quando trova un elemento differente, esce in output "Diversi". Il problema mio non è solo quello di andare nella riga sotto, ma anche quello dell'ordine, cioè riesco a controllare solo l'elemento [0][0] con [1][0], ad esempio.
Sono sotto esame di Progr. 1, e scusatemi l'ansia
/* Input due numeri interi n maggiore uguale 2, m maggiore uguale 2
acqusire vettore bidimensionale A[n][m];
procedura che verifica che le righe di A memorizzano gli stessi elementi
*/
#include <iostream>
using namespace std;
int acquisisco (int n);
void acquisisco_mat(int n, int m);
void procedura (int *punt, int n, int m);
int main (){
int n= acquisisco (n);
int m= acquisisco (m);
int A[n][m];
acquisisco_mat(n,m);
int *punt = &A[0][0];
procedura(punt, n,m);
return 0;
}
int acquisisco (int n){
cout << "Inserisci un numero maggiore o uguale a 2: ";
do {
cin >> n;
if (n<2){
cout << "Riprova."<<endl;
}
}
while (n<2);
return n;
}
void acquisisco_mat(int n, int m){
int A[n][m];
for (int i=0; i<n; i++){
for (int j=0; j<m; j++){
cout << "Elemento ["<<i<<"] ["<<j<<"]: ";
cin >> A[i][j];
}
}
}
void procedura (int *punt, int n, int m){
int verifico=0; int A[n][m];int c=0;
for (int i=0; i<n; i++){
for (int j=1+i; j<*(punt+i);j++){
c=0;
for (int k=0; k<i; k++){
if (A[i][k]!=A[j][k])
c++;
if (c==*(punt+i)){
verifico=1;
c=0;
}
}
}
}
if (verifico)
cout << "Stessi elementi" << endl;
else
cout << "Diversi elementi" << endl;
}