domenica 12 febbraio 2017

COMPITO 1 FONDAMENTI (PICCIALLI, CHIANESE)

MAIN :
#include<iostream>
#include<string>
#include "header.h"

using namespace std;

int main(){
int **mat1, **mat2;
int n1=0, n2=0;
string file1, file2;
file1 = "C:\\fondamenti\\compito1\\mat1.txt";
file2 = "C:\\fondamenti\\compito1\\mat2.txt";
carica_matrice(file1, mat1, n1);
if (n1 == -1)
return -1;
carica_matrice(file2, mat2, n2);
if (n2 == -1)
return -1;

cout << "mat1:\n";
stampa_matrice_quadrata(mat1, n1);

cout << "\nmat2:\n";
stampa_matrice_quadrata(mat2, n2);
cout << endl;

confronta(mat1, n1, mat2, n2);

system("PAUSE");

for (int i = 0; i < n1; i++)
delete[] mat1[i];
delete[] mat1;

for (int i = 0; i < n2; i++)
delete[] mat2[i];
delete[] mat2;

return 0;
}
*********************************************************************************
HEADER.CPP:
#include<iostream>
#include<fstream>
#include<string>

using namespace std;

void carica_matrice(string file, int** &mat, int &n){
ifstream mioFile;
mioFile.open(file, ios::in);

if (!mioFile){
cout << "Errore nell'apertura del file!\n";
n = -1;
return;
}

mioFile >> n;

mat = new int*[n];
for (int i = 0; i < n; i++)
mat[i] = new int[n];

for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++)
mioFile >> mat[i][j];
}

mioFile.close();
return;
}

void stampa_matrice_quadrata(int** mat, int n){
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
cout << mat[i][j] << " ";
}
cout << endl;
}
return;
}

void confronta(int** mat1, int n1, int** mat2, int n2){
if (n1 != n2){
cout << "Le matrici hanno dimensioni diverse, non possono avere righe o colonne uguali\n";
return;
}

//Confronto righe
int trovato;
bool uguale;
int j;
for (int k = 0; k < n1; k++){
trovato = 0;
for (int i = 0; i < n1; i++){
uguale = true;
j = 0;
while (j < n1 && uguale){
if (mat1[k][j] != mat2[i][j])
uguale = false;
j++;
}
if (uguale){
trovato++;
if (trovato == 1)
cout << "La riga " << k << " di mat1 e' uguale alla riga " << i;
else
cout << " e alla riga " << i;
}
}
if (trovato != 0)
cout << " di mat2.\n";
}

//Confronto colonne
for (int k = 0; k < n1; k++){
trovato = 0;
for (int i = 0; i < n1; i++){
uguale = true;
j = 0;
while (j < n1 && uguale){
if (mat1[j][k] != mat2[j][i])
uguale = false;
j++;
}
if (uguale){
trovato++;
if (trovato == 1)
cout << "La colonna " << k << " di mat1 e' uguale alla colonna " << i;
else
cout << " e alla colonna " << i;
}
}
if (trovato != 0)
cout << " di mat2.\n";
}

return;
}
*********************************************************************************
HEADER.H:
#include<iostream>
#include<fstream>
#include<string>

using namespace std;

void carica_matrice(string file, int** &mat, int &n);
void stampa_matrice_quadrata(int** mat, int n);
void confronta(int** mat1, int n1, int** mat2, int n2);

Nessun commento :

Posta un commento