Oppure

Loading
26/10/09 17:30
zaire90
Mi aiutate con questo programma per favore?? Funziona male!!

/*  QUESTO PROGRAMMA LEGGE DA TASTIERA UN NUMERO INTERO POSITIVO m<=25
    E UN NUMERO INTERO POSITIVO n<=50 E SUCCESSIVAMENTE GLI ELEMENTI DI UNA
    MATRICE 'A' AD m RIGHE E n COLONNE CHE VENGONO INTRODOTTI DA TASTIERA PER 
    COLONNE. INFINE IL PROGRAMMA DEVE RISCRIVERE LA MATRICE 'A' PER RIGHE     */
    
#include <iostream>
using namespace std;
void leggicolonne(int); void leggirighe(int);        // PROTOTIPI DELLE FUNZIONI
const int size1=25; const int size2=50;
typedef int matrice[size1][size2];
void leggiA(matrice,int,int);
void stampA(matrice,int,int);

int main()
{
     int n,m,elem; matrice A;
     leggicolonne(n);
     leggirighe(m);
     leggiA(A,n,m);
     stampA(A,n,m);
     cout<<"\n\n\n\n";
     system("PAUSE");
     return 10;
}

void leggicolonne(int n)
{
     cout<<"\nScrivi il numero delle colonne:            n = ";
     cin>>n;
     while ((n<1)||(n>50))
          {
           cout<<"\nn deve essere positivo e minore o uguale a 50!";
           cout<<"\n\n\nScrivi il numero delle colonne:            n = ";
           cin>>n;
          }
     return;
}

void leggirighe(int m)
{
     cout<<"\n\nScrivi il numero delle righe:              m = ";
     cin>>m;
     while ((m<1)||(m>25))
          {
           cout<<"\nn deve essere positivo e minore o uguale a 25!";
           cout<<"\n\n\nScrivi il numero delle righe:              m = ";
           cin>>m;
          }
     return;
}

void leggiA(matrice A,int n,int m)
{
     cout<<"\n\nSCRIVI ADESSO GLI ELEMENTI DELLE MATRICE A["<<m<<"]["<<n<<"]";
     cout<<" PER COLONNE:";
     for (int i=1;i<=n;i++)
         for (int j=1;j<=m;j++)
             {
              cout<<"\n\nA["<<j<<"]["<<i<<"] = ";
              cin>>A[j][i];
             }
     return;
}

void stampA(matrice A,int n,int m)
{
     cout<<"\n\nIL PROGRAMMA ADESSO RISTAMPERA' GLI ELEMENTI, PER RIGHE:";
     for (int i=1;i<=n;i++)
         for (int j=1;j<=m;j++)
             cout<<"\n\nA["<<i<<"]["<<j<<"] = "<<A[i][j];
      return;
}   
     


aaa
26/10/09 17:45
lorenzo
la mia sfera di cristallo al momento è in sciopero quindi........che cosa non funziona?
aaa
26/10/09 17:50
zaire90
Beh fino adesso ciò che non funziona è il primo ciclo for, quello dove scrivo gli elementi per colonne: cioè se metto n=2 e m=2 invece di farmi (giustamente) scrivere solo 4 elementi,mi scrive A[1][1], A[2][1], A[3][1], A[4][1]...e non si ferma più!!

Eppure mi sembra che il ciclo sia giusto...
aaa
26/10/09 17:53
Guglielmo
Quando leggi il numero di righe e colonne passi per valore le due variabili alle funzioni. Se vuoi fare in maniera simile alla tua passa le variabili m ed n per riferimento.
Ultima modifica effettuata da Guglielmo 26/10/09 17:54
aaa
26/10/09 17:53
zaire90
Beh fino adesso ciò che non funziona è il primo ciclo for, quello dove scrivo gli elementi per colonne: cioè se metto n=2 e m=2 invece di farmi (giustamente) scrivere solo 4 elementi,mi scrive A[1][1], A[2][1], A[3][1], A[4][1]...e non si ferma più!!

Eppure mi sembra che il ciclo sia giusto...
aaa
26/10/09 18:00
zaire90
Quindi devo mettere la "&" da qualche parte vero???...MI puoi dire dove??
aaa
26/10/09 18:05
Guglielmo
Il prototipo e la definizione delle funzioni:
void leggirighe(int& n);
void leggicolonne(int& m);
...

Comunque se non capisci cosa vogliono dire, fallo come lo sapresti fare normalmente. Anche perchè non ha senso scrivere cose che non si conoscono.
aaa
26/10/09 18:25
zaire90
Mmmmmmmm....Si ho fatto come dici tu e in effetti funziona. Però non è che potresti spiegarmi bene che ruolo ha la "&"??
Perchè inoltre chiamo la funzione (ad esempio leggicolonne(n)) passandogli un intero mentre invece nella funzione vera e propria prende in imput un indirizzo(appunto metttendo la "&";)???
aaa