Ho fatto questo ma con scarsi risulati:
main.cpp
#include <cstdlib>
#include <iostream>
#include "lib.h"
using namespace std;
int main(){
matrice m;
int riemp, ind_min, ind_max;
sella s;
leggi_mat (m, riemp, "mat.txt");
stampa_mat (m, riemp);
calcola_ind_min (m, riemp);
calcola_ind_max (m, riemp);
trovasella (m, riemp, ind_min, ind_max, s);
system("PAUSE");
return EXIT_SUCCESS;
}
lib.cpp
#include <iostream>
#include <cstdlib>
#include "lib.h"
using namespace std;
void leggi_mat ( matrice m, int & riemp, const char* filename){
int i, j;
FILE* fp;
fp= fopen (filename, "r");
if (!fp){
cout << " il file" <<filename <<" non e' stato trovato, impossibile proseguire l'elaborazione.";
system ("pause");
exit (1);
}
fscanf (fp, "%d", &riemp);
for (i=0; i<riemp; i++)
for (j=0; j<riemp; j++)
fscanf (fp, "%d", & m[j]);
fclose (fp);
}
void stampa_mat (const matrice m, int riemp){
int i, j;
for (i=0; i<riemp; i++){
cout<< "\n";
for (j=0; j<riemp; j++)
cout << m[j] <<" ";
}
}
int calcola_ind_min ( const matrice m, int riemp) {
int i, ind_min=0;
int min_riga = m[riemp];
for (i=0; i<riemp; i++)
if( m[riemp] < min){
min_riga= m[riemp];
ind_min= i;
}
return ind_min;
}
int calcola_ind_max (const matrice m, int riemp){
int j, ind_max=0;
int max_col = m[j][riemp];
for (j=0; j<riemp; j++)
if (m[j][riemp]> max_col){
max_col= m[j][riemp];
ind_max= i;
}
return ind_max;
}
void trovasella (const matrice, int riemp, int ind_min, int ind_max, sella s){
bool puntosella= true;
while (! s.puntosella ){
for (i=0; i<riemp; i++)
for (j=0; i<riemp; j++)
if ( m [ ind_min][riemp] == m[riemp][ind_max]){
s.puntosella=true;
i++;
}
}
if (s.puntosella=true){
s.val= m[ind_min][ind_max];
cout <<"\nIl valore di sella e' : " << s.val;
}
else cout <<"\n Il punto di sella non esiste";
}
lib.h
const int MAX_DIM = 30;
typedef int matrice [MAX_DIM][MAX_DIM];
struct dati {
bool puntosella;
int val;
};
typedef dati sella [MAX_DIM];
void leggi_mat (matrice, int &, const char*);
void stampa_mat (const matrice, int);
int calcola_ind_min ( const matrice, int);
int calcola_ind_max ( const matrice, int);
void trovasella (const matrice, int, int, int, sella);