Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Pierock
    Registrato dal
    Dec 2008
    Messaggi
    102

    [C++] vero , falso o 68 !

    Salve ragazzi...
    so ke molto probabilmente la soluzione è davanti ai miei occhi.... ma sono un po' in panne..

    ho realizzato questa funzione ricorsiva ke ha il compito di cercare un elemento all'interno di un vettore ordinato!

    codice:
    template<class T> 
    bool Dizionario<T>::RICBIN(T e, int i, int j){    
             int m;        
             if (i>j)            
                    return (false);        
              else            
                   {            
                     m=(i+j)/2;              
                     if (e == elem[m])                  
                     return (true);            
                     else if (elem[m] > e)                   
                            RICBIN(e,i,m-1);                   
                       else                   
                      RICBIN(e,m+1,j);           
                        }           
    }
    ...secondo le mie previsioni... doveva restituirmi in output "1" se l'elemento è presente... "0" se nn è presente!!!

    ... il mio stupore sta nel fatto ke nn so per quale ASSURDO motivo... (dato ke è definita come bool) .. mi restituisca "68"!

    ..sono scemo io o è impazzito il mio compilatore?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    In C/C++ il valore false è definito come 0.
    Qualunque valore diverso da 0 è true.

    C'è scritto in tutti i manuali/guide/libri.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    io ho dei dubbi che questa ricerca binaria funzioni a dovere. A parte l'indentazione che lascia a desiderare, ma qui credo che c'è un qualche errore:

    codice:
    else if (elem[m] > e)                   
      return RICBIN(e,i,m-1);                   
    else                   
      return RICBIN(e,m+1,j);
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

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.