Elemento minore array

di il
3 risposte

Elemento minore array

Ciao, mi servirebbe un aiutino su questo programma, una funzione in particolare, che deve trovare e individuare l'elemento minore di una tabella di numeri introdotta da tastiera; il mio procedimento mi sembra corretto, nn capisco il motivo, ma il programma trova l'elemento minore solo della prima riga, grazie .
#include <iostream>
#define max 50
using namespace std;
double trova_minore( double a[][max], int d1, int d2)
{
int i=0, j=0;
double minore=a[0][0];
for(; i<d1; i++)
{
for( ; j<d2; j++)
{
if( a[j]<minore) minore=a[j] ;
}
}
bool trovato=false;
i=0;
j=0;

for(; !trovato; i++)
{
for( ; !trovato; j++)
{
if( a[j]==minore) {trovato=true; break;}
}
}
cout<<" l'elemento minore è : "<<minore<<" e si trova in posizione : "<<i<<" e "<<j<<endl;
}
int main()
{
     double a[max][max];
    cout<<"Scegli il numero di righe e di colonne della matrice : ";
    int d1, d2;
    cin>>d1>>d2;
    for(int i=0; i<d1; i++)
    {
            cout<<"riga "<<i<<" : ";
            for( int j=0; j<d2; j++)
            {
                 
                 cin>>a[i][j];
            }
            cout<<endl;
    }
   
    for(int i=0; i<d1; i++)
    {
            for( int j=0; j<d2; j++)
            {
                 cout<<a[i][j]<<'\t';
            }
            cout<<endl<<endl;
    }
    trova_minore ( a, d1, d2);
    system("pause"); 
    return 0;
}

3 Risposte

  • Re: Elemento minore array

    Diciamo che il programma potrebbe essere riscritto in un altro modo molto più semplice, provo a scriverti in C la parte della ricerca del minimo: (non conosco il c++ purtroppo, ma la traduzione dovrebbe esserti semplice)
    
    min = a[0][0]
    for(i=0;i<m;i++) //m dimensione righe
    {
        for(j=0;j<n;j++) //n dimensioni colonne
        {
             if(min > a[i][j])
             {
                   min = a[i][j]
             }
         }
    }
    
    Se non è chiaro qualcosa, o qualcuno può tradurlo in C++ è ancora meglio ...spero cmq di averti aiutato a capire la logica cambiando la tua.
  • Re: Elemento minore array

    Ok, ma una volta che ho determinato l'elemento minore, mi serve di stampare anche gli indici che ne determinano la posizione sulla array bidimensionbale, ed è li il problema, perchè mi vengono fuori sempre numeri fissi sembra.
  • Re: Elemento minore array

    È semplice basta una piccola modifica:
    
    min = a[0][0]
    min_i = 0;
    min_j = 0
    for(i=0;i<m;i++) //m dimensione righe
    {
        for(j=0;j<n;j++) //n dimensioni colonne
        {
             if(min > a[i][j])
             {
                   min = a[i][j]
                   min_i = i; //memorizza indice i
                   min_j = j; //memorizza indice j
             }
         }
    }
    
Devi accedere o registrarti per scrivere nel forum
3 risposte