IL PROGRAMMA NON MI Dà ERRORE MA POI MI COMPARE LA SCHERMATA

di Anonimizzato7811 il
32 risposte

32 Risposte - Pagina 2

  • CON CHE ERRORE?
    metti questo sotto cin >> opzione
    
    __asm("int 3");
    
  • Adesso con char opzione va però una volta che ho scritto la matrice non mi fa andare all'opzione b
  • Per forza il programma dopo l'inserimento della matrice esce. E' così che l'hai concepito.
  • Quando faccio compile non me lo dice l'errore, il programma adesso va ma una volta fatto a non mi fa andare a b
  • Come devo fare per farlo continuare?grazie per i consigli dati finora comunque
  • Ti posto il programma completo se no quì facciamo notte. Così studi tutti gli errori.
    
    #include <iostream>
    using namespace std;
    char r;
    int M[10][10];
    int v[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)
    {
    	char opzione = 0;
    	do
    	{
    		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 << endl << " scegli la dimensione della matrice quadrata (max 10):" <<endl;
    					cin >> d;
    					if (( d >= 2) && ( d<= 10))
    						cout << d;
    					else 
    						cout << "errore" << endl;
    					cout << "inserisci gli elementi della matrice :" <<endl;
    					leggi_matrice(d, M);
    				}
    			break;
    			case 'b':
    				{
    					cout << " questa opzione somma i valori delle colonne" << endl;
    					somma_colonna(d, M, v);
    					for(int i = 0; i < d; i++)
    					{
    						cout << v[i] << endl;
    					}
    				}
    			break;
    		}
    	}while(opzione != 'e');
    }
    
  • Ok grazie tante, adesso va, è tipo una settimana che programmo qualcosa, quindi non ho ancora le idee chiare, ho solo l'ausilio del libro
  • Ok grazie tante, adesso va, è tipo una settimana che programmo qualcosa, quindi non ho ancora le idee chiare, ho solo l'ausilio del libro
  • OK ci siamo passati tutti ma bisogna capire quello che si fa. Dire non funziona oppure adesso funziona secondo me sei al punto di partenza. Adesso che va ci sono delle cose che non ti sono chiare? Il perche abbiamo dovuto cambiare opzione da int a char oppure perche è stato messo il do-while con l'opzione 'e' alla fine ecc.
  • Char perchè opzione è un carattere? il do while è perchè mi scrive il menù ogni volta
  • OK il do-while l'hai capita. la funzione cin (tramite l'operatore >> ) convalida se cio che tu metti sia un intero nel caso di "int opzione". Siccome tu inserisci 'a' lui non può convertirlo nel range dei numeri da 0 a 9 e quindi siamo costretti a dichiarare opzione come char. se tu fossi in C puro e usassi la funzione scanf lui se ne frega e lo fa funzionare in quanto char è definito come unsigned int e tutto andrebbe bene ma in C++ la funzione cin è un pò + sveglia e non te lo fa fare.
  • Ah ok, quindi è perchè lo uso col cin, altrimenti avrei potuto mettere anche int, invece quando ho cin per i numeri devo mettere int e per le parole char
  • Si giusto. cin è la ""funzione" che trasferisce ciò che tu metti dalla tastiera nella varibile scelta. Fai sta prova:
    togli cin e cambia da char opzione a int opzione.
    
    int opzione = 0;
    scanf("%d",&opzione);
    
    il resto lascialo uguale. Vedrai che funzionerà.
  • Ok, grazie per la disponibilità, mi sei stato molto utile
  • Una cosa, noi nel programma abbiamo utilizzato d per la dimensione, ho visto che nel programma fatto dal professore vi è l'utilizzo di r,che è una lettera che ci dice quando vogliamo smettere, praticamente scrive:
    for(int j = 0; j<r; j++), ed indica con n la dimensione;non poteva anche lui utilizzare la dimensione per dire fino a quando for deve durare?
Devi accedere o registrarti per scrivere nel forum
32 risposte