Gambas-it

Gambas3 => Programmazione => Topic aperto da: vuott - 02 Maggio 2017, 02:09:49

Titolo: Funzione che determini il massimo numero intero positivo X per cui x^x =< y
Inserito da: vuott - 02 Maggio 2017, 02:09:49
In un forum del linguaggio C ho trovato un post con richiesta di aiuto per risolvere questo problema:
" Dato un numero reale positivo Y immesso da tastiera, si scriva un programma in linguaggio C che determini qual è il massimo numero intero positivo X tale per cui sia valida la relazione x^x =< y "


Ho trovato una soluzione che, ripensata in linguaggio Gambas, appare come segue:

Codice: [Seleziona]
Public Sub Main()

  Dim x, y As Long
  Dim s As String
 
    Print "Inserisci un numero intero positivo..."
    Input s
    y = CLong(Val(s))
 
    While ((x + 1) ^ (x + 1)) <= y
      Inc x
    Wend

    Print "\nIl risultato è: "; x

End


Voi avete altre soluzioni ?   (http://i686.photobucket.com/albums/vv227/ziufili/immy%20forum/emoticons/hmm.gif)


Titolo: Re:Funzione che determini il massimo numero intero positivo X per cui x^x =< y
Inserito da: Arco - 02 Maggio 2017, 15:58:09
Spero di non dire una stupidata ma il numero più grande di X non è la radice quadrata di Y. Se serve solo l'intero basta non considerare i decimali.
Titolo: Re:Funzione che determini il massimo numero intero positivo X per cui x^x =< y
Inserito da: vuott - 02 Maggio 2017, 16:09:46
Dunque quale codice proporresti per cui il risultato di x, elevato al medesimo valore di se medesimo, non sia superiore a y nota ?

 y =< xx
Titolo: Re:Funzione che determini il massimo numero intero positivo X per cui x^x =< y
Inserito da: Arco - 02 Maggio 2017, 18:02:24
on posso provarlo ma così dovrebbe funzionare.
Codice: [Seleziona]
Public Sub Main()

  Dim x, y As Long
  Dim s As String
 
    Print "Inserisci un numero intero positivo..."
    Input s
    y = Val(s)
 
     x = Sqr(y)

    Print "\nIl risultato è: "; x
End
Titolo: Re:Funzione che determini il massimo numero intero positivo X per cui x^x =< y
Inserito da: vuott - 02 Maggio 2017, 18:40:55
Ho provato il tuo codice.
Inserendo ad esempio il valore di y = 26, mi restituisce 5.
...però 5 ^ 5 (ossia 55 ) = 3125, che pertanto è ben superiore a 26. 
Io credo che il numero positivo, elevato a se medesimo, inferiore o uguale - in questo caso - a 26 debba essere "2" (infatti 33 = 27, già superiore a 26).  :-X
Titolo: Re:Funzione che determini il massimo numero intero positivo X per cui x^x =< y
Inserito da: Top Fuel - 02 Maggio 2017, 21:45:18
Il problema è piuttosto semplice, se ho capito bene.
Basta fare la radice quadrata di Y e prendere la parte intera:
Codice: [Seleziona]
x = Int(Sqr(y))
Ho capito bene almeno? ;D

Edit: ho capito male, come non detto... :rolleyes:
Titolo: Re:Funzione che determini il massimo numero intero positivo X per cui x^x =< y
Inserito da: Franco_da_vc - 02 Maggio 2017, 23:10:57
Ciao a tutti,

L'ora è tarda è oggi i problemi oggi mi si sono accalcati, tra l'altro era il primo giorno di lavoro dopo 10 di ferie e vi lascio capire in che stato ho ritrovato l'ufficio...... io dissento da quanto scritto da Top Fuel e da Arco perchè non si tratta di fare x^2, ma x^x, come vi ha fatto notare Vuott, qui il problema è prettamente matematico, ad occhio è un numero compreso tra 2 e 3, ma come dimostrarlo?

Ci ho provato a pensarlo ma mi è deflagrata la testa :mad:
Titolo: Re:Funzione che determini il massimo numero intero positivo X per cui x^x =< y
Inserito da: Franco_da_vc - 02 Maggio 2017, 23:23:01
L'unica cosa che non ho capito Vuott è perchè hai posto x+1 elevato a x+1,

    While ((x + 1) ^ (x + 1)) <= y
      Inc x
    Wend

non vedresti meglio While (x^x)<=y
Titolo: Re:Funzione che determini il massimo numero intero positivo X per cui x^x =< y
Inserito da: vuott - 02 Maggio 2017, 23:49:19
non si tratta di fare x^2, ma x^x

Esattamente.   :)



L'unica cosa che non ho capito Vuott è perchè hai posto x+1 elevato a x+1,
non vedresti meglio While (x^x)<=y
Se io applico l'operazione da te segnalata, alla fine io ottengo il valore della variabile "x" aumentato di un'unità rispetto a quello corretto.
Pertanto il ragionamento che io invece gli faccio fare è..... "preventivo"  ;D . Ossia, "Se x+1 elevato ad x+1 è inferiore o uguale al valore di "y", allora compi il ciclo (...che comporta un incremento della variabile "x"); altrimenti esci.".
In altre parole, se facendo fare il ciclo (che comporta inesorabilmente da codice l'incremento di un'unità della variabile "x"), il risultato di "x" elevata a se stessa (xx) non diventa superiore alla variabile "y", allora mi sta bene: il ciclo si faccia. Altrimenti salta e mostrami il risultato.


Titolo: Re:Funzione che determini il massimo numero intero positivo X per cui x^x =< y
Inserito da: Arco - 03 Maggio 2017, 11:07:14
Ho confuso il simbolo.
Ho visto oggi che il simbolo è elevazione e non moltiplicazione come avevo mal visto ieri.
Mi sa che devo cambiare gli occhiali :hard: