Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - creazione di una matrice!
Forum - C/C++ - creazione di una matrice!

Avatar
gluglu85 (Normal User)
Newbie


Messaggi: 11
Iscritto: 09/09/2010

Segnala al moderatore
Postato alle 12:28
Domenica, 09/01/2011
Salve dopo avere costruito un programma di modeste dimensioni mi è saltato in mente di provare a mettere una matrice al posto di un vettore, purteoppo non son riuscito... Ragazzi chiedo a voi una mano, il programma seguente è il problema originario, ho messo un paio di commenti per semplificare!
quindi se al posto del vettore voglio mettere una matrice come dovrei affronatre il problema:-|???


//PRGOGGRAMMA CHE SOMMA E FA IL PRODOTTO DEGLI ELEMENTI DEL VETTORE UTILIZZANDO LE FUNZIONI
#include <cstdlib>
#include <iostream>

using namespace std;

int vet[50];//dimensione max vettore
int somma(int dim);
int prodotto(int dim);
void lettura_vettore(int dim);
void stampa(int dim);


int main(int argc, char *argv[])
{  
    int dimensione;//dimensione del vettoree
    int s;//somma degli elementi del vettore
    int p;//prodotto degli elementi del vettore
    
    cout<<"inserisci dimensione del vettore"<<endl;
    cin>>dimensione;
    
    lettura_vettore(dimensione);
    s=somma(dimensione);
    p=prodotto(dimensione);
    
    stampa(dimensione);
    cout<<"somma del vettore= "<<s<<endl;
    cout<<"prodotto del vettore= "<<p<<endl;

    system("PAUSE");
    return EXIT_SUCCESS;
}

int somma(int dim)
{  
    int i;//contatore
    int sum=0;//somma
    
    for(i=0;i<dim;i++)
    {
      sum+=vet;
    }

    return sum;
}

int prodotto(int dim)
{   int i;//contatore
    int pro=1;//prodotto
    
    for(i=0;i<dim;i++)
    {
      pro*=vet;
    }

    return pro;
}
void lettura_vettore(int d)
{  
    int i;//contatore
    
    cout<<"leggo vettore"<<endl;
    for(i=0;i<d;i++)
    {
    cout<<i+1<<") ";
    cin>>vet;
    }

    return;
}
void stampa(int dim)
{  
    int i;//contatore
    
    cout<<"stampo vettore"<<endl;
    for(i=0;i<dim;i++)
    {
    cout<<i+1<<") ";
    cout<<vet<<endl;

    }
    cout<<endl;
    return ;

}

grazie in anticipo!:k:

PM Quote
Avatar
Giarados (Ex-Member)
Pro


Messaggi: 69
Iscritto: 25/07/2010

Segnala al moderatore
Postato alle 13:43
Domenica, 09/01/2011
Notifico tutto ciò che ho trovato di errato/sconsigliato:
ERRORE -> Per riferirti ad un elemento dell'array devi utilizzare l'operatore []. Il solo nome dell'array è un puntatore costante.

MOLTO SCONSIGLIATO -> Chiedere all'utente la dimensione dell'array quando questo è statico (50 elementi nel tuo caso) senza avvertire del range degli indici e senza effettuare un controllo sull'input da tastiera. Ricevi un bel segmentation fault se viene inserito un numero meggiore o uguale a 50.

SCONSIGLIATO -> Utilizzare variabili globali e scrivere funzioni che operano su esse.

Posto di sotto come lo modificherei io il programma (i numeri valori vengono settati tramite rand()):
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <iomanip>
  4. using namespace std;
  5.  
  6. int sum(const int * const * const, const int , const int );
  7. int product(const int * const * const , const int , const int );
  8.  
  9. int main(void)
  10. {
  11.         int columns,rows;
  12.         int **multidimensionalArray;
  13.  
  14.         do
  15.         {
  16.                 cout<<"Columns : ";
  17.                 cin>>columns;
  18.         }
  19.         while(columns<=0);
  20.  
  21.         do
  22.         {
  23.                 cout<<"Rows : ";
  24.                 cin>>rows;
  25.         }
  26.         while(rows<=0);
  27.  
  28.         multidimensionalArray=new int*[rows];
  29.  
  30.         for(int i=0; i<rows; i++)
  31.                 multidimensionalArray[i]=new int[columns];
  32.  
  33.  
  34.         srand(time(0));
  35.         for(int i=0; i<rows; i++)
  36.                 for(int j=0; j<columns; j++)
  37.                         multidimensionalArray[i][j]=rand()%100 +1 ;
  38.  
  39.         for(int i=0; i<rows; i++)
  40.                 for(int j=0; j<columns; j++)
  41.                 {
  42.                         if(j % columns == 0)
  43.                                 cout<<endl;
  44.  
  45.                         cout<<setw(4)<<multidimensionalArray[i][j]<<' ';
  46.                 }
  47.  
  48.         cout<<endl;
  49.  
  50.         cout<<"Total sum : \t"<<sum(multidimensionalArray,columns,rows)<<endl;
  51.         cout<<"Total product : \t"<<product(multidimensionalArray,columns,rows)<<endl;
  52.  
  53. return 0;
  54. }      
  55.  
  56. int sum(const int * const * const aMultidimensionalArray, const int columns, const int rows)
  57. {
  58.         int result=0;
  59.  
  60.         for(int i=0; i<rows; i++)
  61.                 for(int j=0; j<columns; j++)
  62.                         result+=aMultidimensionalArray[i][j];
  63.  
  64.         return result;
  65. }
  66.  
  67. int product(const int * const * const aMultidimensionalArray, const int columns, const int rows)
  68. {
  69.         int result=1;
  70.  
  71.         for(int i=0; i<rows; i++)
  72.                 for(int j=0; j<columns; j++)
  73.                         result*=aMultidimensionalArray[i][j];
  74.  
  75.         return result;
  76. }



PM Quote
Avatar
gluglu85 (Normal User)
Newbie


Messaggi: 11
Iscritto: 09/09/2010

Segnala al moderatore
Postato alle 14:38
Domenica, 09/01/2011
ok proverò a modificarlo, grazie :k:

PM Quote