Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    variabile che non cambia di valore in C

    Premetto che sono un principiante.
    la mia domanda e' se inserisco il valore della funzione "ricerca",nella variabile "i"
    il valore rimane l'ultimo che e' stato impostato con for.

    Invece se il valore della funzione lo inserisco nella variabile "result" il programma funziona bene (cioe' il numero 105 non viene trovato).
    Non riesco a comprendere perche non distrugge il valore precedente se uso la variabile i.

    questo sotto e' il programma.
    Grazie in anticipo a chiunque rispondera

    codice:
    #include <stdio.h>
    #define SIZE 13
    
    
    int ricerca(int vett[],int chiave){
    int low=0,high=SIZE,key;
    
    		while(low<=high){
    		     key=(high+low)/2;
    		     if (vett[key]==chiave)
    			   return key;
    			  
                        else
    
                           if (vett[key]>chiave)
    	                 high=key-1;
    			  
                           else
                            low=key+1;   
                    }	
    		
    	return -1;			   
    }					
    					
    main(){
    int i,n=105,vett[SIZE],result;
    
       for(i=0;i<=SIZE-1;i++)
          vett[i]=2*i;
    	
    	 
    	  if (result=ricerca(vett,n)!=-1)
    	     printf("il numero %d e' stato trovato\n",n);
    	  else
                 printf("il numero %d non e' stato trovato!!!",n);	  
       	
    	 
    }
    Con la variabile "result"
    http://imageshack.us/a/img401/9141/variabileresult.jpg

    Con la variabile "i"
    http://imageshack.us/a/img811/6396/variabilei.jpg

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Non ho capito la questione di i e result ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    scusa se ho visto la tua risposta solo adesso.

    In pratica se scrivo if(i=ricerca(vett,n)!=-1)
    mi dice che il numero 105 (che in realta non c'e' nel vettore) lo trova, perche ad "i" e rimasto
    il vecchio valore impostato da for. Invece il valore dovrebbe essere -1,cioe quello restituito da
    return per non aver trovato il valore.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma a cosa ti serve quella variabile ? Non capisco perché non scrivi

    if (ricerca(vett,n)!=-1)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    su questo hai perfettamente ragione.
    era solo curiosita dato che non mi era mai successo che scrivendo in quel modo
    mi restituiva un valore precedente.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Inserisci delle parentesi

    if ( ( result=ricerca(vett,n) ) !=-1)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    scusami non voglio romperti le scatole
    ma se al posto di result metti "i",anche con le parentesi il risultato e' diverso.

    con la variabile "i" trova 105 quando non dovrebbe.
    la mia curiosita consiste nel capire perche si comporta in questo modo.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da littlefortune
    ma se al posto di result metti "i",anche con le parentesi il risultato e' diverso.

    con la variabile "i" trova 105 quando non dovrebbe.
    la mia curiosita consiste nel capire perche si comporta in questo modo.
    No ... controlla meglio ... con le parentesi non è così.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    scusami quando avevi scritto if ( ( result=ricerca(vett,n) ) !=-1)
    ho provato subito pero il problema e' che con result funziona bene anche senza parentesi.

    E' con "i" che il risultato non torna quello esatto.
    perche con "i" anche con le parentesi da te suggeritemi, mi dice che trova il numero 105 quando
    invece non dovrebbe.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Avevo capito anche prima ma ti dico che ho provato e va ...

    Con quale compilatore lavori? Sei sicuro di ricompilare prima di provare?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.