Visual studio 2015 c++

di il
20 risposte

20 Risposte - Pagina 2

  • Re: Visual studio 2015 c++

    Ma non fai prima a scrivere
    
    	for (i = 0; i < DIM - b; i++)
    	{
    		if (a[i] == a[i + b])
    		{
    			cont++;
    			t = 1;
    		}
    		temp = a[i];
    		a[i] = a[i + b];
    		a[i + b] = temp;
    	}
    
    ?
    E poi che esercizio sarebbe? Fare uno swap a caso dell'array?
  • Re: Visual studio 2015 c++

    ylenia987654321 ha scritto:


    Mmmh 11?
    Quindi vai oltre DIM ... ecco l'errore...
  • Re: Visual studio 2015 c++

    Ah giusto, dovrei metterlo all'interno dell'altro if allora?
  • Re: Visual studio 2015 c++

    Weierstrass ha scritto:


    Ma non fai prima a scrivere
    
    	for (i = 0; i < DIM - b; i++)
    	{
    		if (a[i] == a[i + b])
    		{
    			cont++;
    			t = 1;
    		}
    		temp = a[i];
    		a[i] = a[i + b];
    		a[i + b] = temp;
    	}
    
    ?
    E poi che esercizio sarebbe? Fare uno swap a caso dell'array?
    ma così il cont non servirebbe a nulla, cioè io ho messo il cont di modo che alla fine del ciclo "analizzo"questo cont, se cont> 0 (ovvero se vi sono elementi tali per cui a == a[i+b]) t diventa 1
     if (a[i] == a[i + b])
    		{
    			cont++;
    		}
    		if ((i + b) >= 0 && (i + b) <= 9)
    		{
    			temp = a[i];
    			a[i] = a[i + b];
    			a[i + b] = temp;
    		}
    		if (cont > 0)
    		{
    			t = 1;
    		}
  • Re: Visual studio 2015 c++

    Se fai un'obiezione del genere all'esame ti bocciano

    L'analisi alla fine del ciclo la fai quando sei fuori dal for.
    Quindi al limite, per ottimizzare, puoi fare
    
    	for (i = 0; i < DIM - b; i++)
    	{
    		if (a[i] == a[i + b])
    		{
    			cont++;
    		}
    		temp = a[i];
    		a[i] = a[i + b];
    		a[i + b] = temp;
    	}
    	
    	if (cont)
    		t = 1;
    


    Che comunque ai fini pratici è equivalente a quanto scritto prima: se t è già uguale a uno, risettarlo a uno cosa cambia?

    E comunque sì: una tra cont e t è una variabile inutile. Ma sembra inutile anche il resto del codice. Cosa avresti dovuto fare, per la cronaca?
  • Re: Visual studio 2015 c++

    Weierstrass ha scritto:


    Se fai un'obiezione del genere all'esame ti bocciano

    L'analisi alla fine del ciclo la fai quando sei fuori dal for.
    Quindi al limite, per ottimizzare, puoi fare
    
    	for (i = 0; i < DIM - b; i++)
    	{
    		if (a[i] == a[i + b])
    		{
    			cont++;
    		}
    		temp = a[i];
    		a[i] = a[i + b];
    		a[i + b] = temp;
    	}
    	
    	if (cont)
    		t = 1;
    


    Che comunque ai fini pratici è equivalente a quanto scritto prima: se t è già uguale a uno, risettarlo a uno cosa cambia?

    E comunque sì: una tra cont e t è una variabile inutile. Ma sembra inutile anche il resto del codice. Cosa avresti dovuto fare, per la cronaca?
    la traccia è: Per ogni posizione i del vettore a, la funzione deve scambiare il valore in posizione a con il valore in posizione a[i+b]. Attenzione! Non devono essere scambiati valori in posizioni non presenti nel vettore. La funzione deve inserire nella variabile t il valore 1 se sono stati scambiati almeno due valori identici, 0 altrimenti.
    le tracce che usa sono tutte inutili e difficili.
Devi accedere o registrarti per scrivere nel forum
20 risposte