Oppure

Loading
19/10/10 12:21
ciao888
Il programma che ho scritto presenta un menù che ho costruito attraverso cout, poi ci sono 2 casi: a e b,nel caso a costruisco una matrice quadrata che abbia una dimensione di massimo 10 righe e 10 colonne e poi inserisco i valori di ogni elemento della matrice, nel caso b devo sommare i valori di ogni colonna della matrice.Ci saranno sicuramente degli errori ma è tipo la seconda volta che scrivo un programma con array, avevo già posto questa domanda più volte ma mi è stata cancellata, penso perchè lo scopo del programma non era comprensibile, spero adesso di essere stata esaustiva
 #include <cstdlib>
 #include <iostream>
 using namespace std;
 void Somma(int M[], int d );
 int d;
 int M[d][d]; //matrice quadrata, d è la sua dimensione(max10)
 int riga, col;
 int caso;
 int main (void){
 int opzione;

 cout << "MENU'" << endl;//costruisco il menù del mio programma
 cout << " Scegliere una lettera corrispondente all'operazione da svolgere :" << endl;
  cout <<"a) costruisci la matrice quadrata" << endl;
  cout<< "b) calcola la somma di ogni colonna della matrice :" << endl;
  cin >> opzione;
  
    caso=a //costruisce una matrice quadrata e scelgo la sua dimens.(max10)
    cout << " scegli la dimensione della matrice quadrata (max 10):";
   cin >> d;
   if (( d >= 2) && ( d<= 10))
    cout << d;
    else cout << "errore" << endl;
    
     cout << "inserisci gli elementi della matrice :";
     for ( riga=0; riga <= d; riga++){
     for ( col = 0; col <= d; col++){
     cin >> M [riga] [col];}}
     break;}}
     
     void Somma(int M[], int d)// somma i valori di tutte le colonne della matrice
     {
     caso = b;
     int somma = 0;
     for ( col = 0; col <= d ; col++){
     for ( riga = 0; col <= d; riga++){
    somma += M [d][d];}}
    return somma; 
    }
    
     cout << somma << endl;}
     

Ultima modifica effettuata da ciao888 19/10/10 12:35
aaa
19/10/10 12:38
qual è l'errore?
19/10/10 12:39
HeDo

a parte la formattazione assolutamente improponibile, non ti chiedi il motivo per cui il moderatore sia dovuto intervenire PESANTEMENTE per limitare il tuo spam?
hai aperto 7 thread in un paio d'ore o pure meno, assolutamente senza ne capo ne coda.

essere alle prime armi non giustifica la pessima netiquette.

cmq il primo errore lampante che mi salta all'occhio è quel
int M[d][d]

non puoi dichiarare un array statico con indici variabili, puoi farlo solo e solo se d è una costante (o #define).
aaa
19/10/10 12:43
ciao888
Ne ho aperti più di uno perchè mi ero sbagliata, non sapevo come si modificava la domanda, adesso l'ho capito, sì infatti M[d][d] sicuramente non va, è che non so come porlo visto che d deve essere scelto e va da 2 a 10, poi un'altra cosa che non va è la somma, non so come scriverla
aaa
19/10/10 13:46
ciao888
comunque adesso ho corretto il programma in questo modo, dovrebbe essere corretto ma Dev C++ mi dà errore sulla riga somma_colonna
#include <iostream>
 using namespace std;
 char r;
 int M[10][10];
 int vet[10][10];
 int d;
 
 void leggi_matrice(int d, int M[][10]){
 cout<<" inserisci i valori della matrice";
 for ( int i = 0; i <= d; i++){
     for (int j = 0; j <= d; j++){
     cout << "M["<< i <<"]["<< j <<"]=";
     cin >> M [i] [j];}}}
     
 void somma_colonna(int d, int M[][10], int v[]){
     int somma = 0;
     for ( int i = 0; i <= d ; i++){
     for ( int j = 0; j <= d; j++){
    somma += M [j][i];
    v[i] = somma;
    somma = 0;}}}
    
    int main(void)
    {
    int opzione;
 cout << "MENU'" << endl;
 cout << " Scegliere una lettera corrispondente all'operazione da svolgere :" << endl;
  cout <<"a) costruisci la matrice quadrata" << endl;
  cout<< "b) calcola la somma di ogni colonna della matrice :" << endl;
  cin >> opzione;
   
   switch(opzione)
   {
  
    case 'a':
    cout << " scegli la dimensione della matrice quadrata (max 10):";
   cin >> d;
   if (( d >= 2) && ( d<= 10))
    cout << d;
    else cout << "errore" << endl;
    
     cout << "inserisci gli elementi della matrice :";
     leggi_matrice(d, M);
     break;
     
    case 'b':
    cout << " questa opzione somma i valori delle colonne";
    somma_colonna(d, M, v);
     break;}}

aaa
19/10/10 13:49
breath
int d;
int M[d][d];

questa parte è sbagliata,hai inizializzo d ma a questo non hai dato un valore,ciò vuol dire che alla matrice non hai dato una dimensione definita , e quindi da errore.la "d" in questione va utilizzata come indice o se vuoi utilizzarlo per dimensionare la matrice devi fare
int d = 10;
int M[d][d];

oppure definisci d come costante invece che variabile in questo modo
#define d 10
int M[d][d];

poi ho notato che hai utilizzato le variabili "a" e "b" però queste non le hai dichiarate,ci vogliono:
int a ;
int b ;

qua invece hai messo un array invece di una matrice , ci vuole un altro "[]"
void Somma(int M[], int d)


ci sono altri errori ma è meglio se li scopri da sola dato che sei agli inizi , in ogni caso se non sai dove sbattere la testa riposta qua il programma leggermente corretto che ti diamo una mano
aaa
19/10/10 13:55
ciao888
esatto, non so dove sbattere la testa, poi io parto proprio da zero, l'ho corretto così:
#include <iostream>
 using namespace std;
 char r;
 int M[10][10];
 int v[10][10];
 int d == 10;
 int a;
 int b;
 
 void leggi_matrice(int d, int M[][10]){
 cout<<" inserisci i valori della matrice";
 for ( int i = 0; i <= d; i++){
     for (int j = 0; j <= d; j++){
     cout << "M["<< i <<"]["<< j <<"]=";
     cin >> M [i] [j];}}}
     
 void somma_colonna(int d, int M[][10]){
     int somma = 0;
     for ( int i = 0; i <= d ; i++){
     for ( int j = 0; j <= d; j++){
    somma += M [j][i];
    v[i] = somma;
    somma = 0;}}}
    
    int main(void)
    {
    int opzione;
 cout << "MENU'" << endl;
 cout << " Scegliere una lettera corrispondente all'operazione da svolgere :" << endl;
  cout <<"a) costruisci la matrice quadrata" << endl;
  cout<< "b) calcola la somma di ogni colonna della matrice :" << endl;
  cin >> opzione;
   
   switch(opzione)
   {
  
    case 'a':
    cout << " scegli la dimensione della matrice quadrata (max 10):";
   cin >> d;
   if (( d >= 2) && ( d<= 10))
    cout << d;
    else cout << "errore" << endl;
    
     cout << "inserisci gli elementi della matrice :";
     leggi_matrice(d, M);
     break;
     
    case 'b':
    cout << " questa opzione somma i valori delle colonne";
    somma_colonna(d, M);
     break;}}
     

se potete ditemi dove sono gli errori così userò questo programma come esempio per gli altri che farò
aaa
19/10/10 13:58
breath
mi scrivi che errori da il compilatore o dove ?
aaa