Matrici e funzioni impostabili

di il
21 risposte

21 Risposte - Pagina 2

  • Re: Matrici e funzioni impostabili

    Usa i tag CODE quando posti codice nel forum, altrimenti non si capisce nulla ...

    Non mostri la dichiarazione della matrice .. in ogni caso può essere
    int matrice[20][20] = { -1 };
    per inizializzarla

    P.S. OCCHIO a if (esiste = VERO) che non fa quello che pensi ... devi usare == e non =
  • Re: Matrici e funzioni impostabili

    Ok grazie dei consigli , credo di aver risolto quell ' aspetto ma non ottengo ancora il risultato desiderato ...... io credo che sia sbagliato il settaggio del parametro for(correggimi se sbaglio però ) perchè la x che è anche indice delle righe aumenta .

    Per ora fuori dal ciclo sto riuscendo ancora a far stampare i numeri che sono diversi da {-1} nel mio caso 0 alla fine della matrice(in realtà devo ancora implementarla bene nel ciclo)
    
    
    int R=4,C=5;
    matrice[R][C] = {0};
    
    void ricerca()
    
    {
    	cout << "inserisci la colonna desiderata "; cin >> y;
    
    	bool esiste = false;
    	do
    	{
    		for (x = 0; x < R;x++)
    		{
    			if (matrice[x][y - 1] ==1)
    
    			{
    				esiste = true;
    				matrice[x - 1][y - 1] ==1;
    				stampaMatrice(matrice);
    			}
    			
    		}
    
    	} while ((!esiste) && (x < R ));
    
    
    	matrice[4][y - 1] = { 1 };
    			stampamatrice(matrice);
    		
    		return ricerca();
    }
    
    
    	
    
    E' un po un pastrocchio , mi occuperò di togliere la stampa di due matrici quindi impartire una condizione in cui la seconda viene stampata solo se il ciclo non da un risultato ..-.

    In ogni caso non riesco proprio a stampare la matrice che voglio ... Nonostante esista un (1) proprio nella parte inferiore della matrice , il programma stampa un ' altra matrice identica e non conta l ' inserimento del [x-1] come indice .... che sia appunto errato il valore di x in tutta la funzione ?

    Non far caso all ' ultima funzione in cui poi stampa la matrice la sto appunto rivedendo.
  • Re: Matrici e funzioni impostabili

    Ok ignora quello che ho scritto prima son tornato al punto di partenza
    void ricerca()
    
    {
    	cout << "inserisci colonna desiderata"; cin >> y;
    
    	bool esiste = FALSO;
    	do
    	{
    		for (x = 0; x < R;x++)
    		{
    			if (matrice[x][y - 1] ==1)
    
    			{
    				esiste == VERO;
    				
    				
    			}
    			
    		}
    		
    	
    		
    	} while ((esiste==FALSO) && (x < R ));
    	
    	if (esiste == VERO)
    
    	{
    		matrice[x - 1][y - 1] =1;
    		stampaMatrice(matrice);
    	}
    
    	else {
    		matrice[5][y - 1] = 1;
    		stampaMatrice(matrice);
    		
    	}
    	return ricerca();
    }


    Non capivo se con attento a quel if esiste==vero ti riferissi solo all ' uguale o cosa , ma mi ritrovo sempre al punto di partenza.

    Sto provando a ragionarci :


    Imposto la matrice e la setto con valori ={0} e cerco il numero 1 , finchè non lo trova(e all ' inizio non lo trova) altrimenti stampa una matrice che l ' 1 l ' ha preso. Mi aspetto/vorrei che dalla successiva in poi selezionando la colonna dove e finito l ' 1 iniziale , sopra quell ' 1 possai inserirci un altro 1 ... ti faccio vedere anche il codice della stampa magari l ' errore è li ma ne dubito dato che i primi numeri li prende.
    Void stampaMatrice(matrice[R][C]) {
    
    
    
    	for (int x = 0; x < R; x++)
    
    	{
    		for (int y = 0; y < C; y++)
    		{
    
    			cout << setw(2) << matrice[x][y];
    
    		}
    		cout << '\n';
    	}
    }
  • Re: Matrici e funzioni impostabili

    Quando inserisci il codice utilizza i tag CODE altrimenti non si capisce nulla ...

    E inserisci anche un main in modo che si possa provare ...
  • Re: Matrici e funzioni impostabili

    oregon ha scritto:


    Quando inserisci il codice utilizza i tag CODE altrimenti non si capisce nulla ...

    E inserisci anche un main in modo che si possa provare ...
    ma io lo vedo il tag code nel mio post .... comunque il main per ora è solo questo



    void main ()
    {
    stampaMatrice(matrice[R][C]);
    
    ricerca();}
    
  • Re: Matrici e funzioni impostabili

    oregon ha scritto:


    Quando inserisci il codice utilizza i tag CODE altrimenti non si capisce nulla ...

    E inserisci anche un main in modo che si possa provare ...
    Sono riuscito a farcela alla fine . La funzione era perfetta e ha lavorato bene ,ora so che non si possono fare più domande per thread ma questa è attinente al problema che sto svolgendo . Vorrei che la funzione ricerca e una sua copia ricerca2 con parametri diversi si alternassero ciclicamente finchè non si decide di fermare il ciclo , però vorrei che l ' implementazione fosse la più semplice ed elegante possibile .


    Mi stavo perdendo in un bicchier d' acqua , almeno questo risolto.
  • Re: Matrici e funzioni impostabili

    Ragazzi alla fine sbattendoci un po la testa ho trovato la soluzione migliore all ' arcano
    
    int occupata=0;
    
    cin>>scelta
    
    
     (int x = 5; x >= 0; x--) {
    			if (matrice[x][scelta - 1] == 0) {
    				matrice[x][scelta - 1] = 1;
    				break;
    			}
    			else {
    				occupata++;
    			}
    		}
    // poi ci si inserisce quello che fa piu comodo.

    //nel mio caso particolare sto realizzando la funzione per un gioco ma va bene anche per la ricerca che stavo utilizzando prima .
    //si setta x=riga+inferiore(nel mio caso la 6-1 perchè gli array partono da indice 0) e il ciclo for dovrebbe essere facilmente intuibile.
    se la coordinata della nostra "scelta"(anche qui -1 per l ' indice degli array) ha ancora il valore iniziale 0 , noi settiamo il valore 1(o quello che volete) e interrompiamo l ' inserimento.
    altrimenti il contatore delle caselle piene aumenta.
    Ho rinunciato all ' idea di far partire il tutto da sopra perchè era troppo complesso per la funzione con cui stavo operando io ma si può fare lo stesso , basta fare il contrario di questa funzione .
Devi accedere o registrarti per scrivere nel forum
21 risposte