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

    [Visual Basic2005] Calcoli con numeri superiori a 10 cifre in ciclo for

    Salve a tutti.
    Nonostante abbiamo impostato il tipo Long nelle variabili, non riesco a lavorare con nuemri superiori a 9'999'999'999.
    Nel programma con cui devo lavorare con numeri anche più grandi di questo, inserisco un numero che voglio ed esegue un x numero di volte un ciclo for dove x=numero che scrivo.
    So che il tipo "Long" supporta numeri ben più grandi di 9 miliardi, ma non riesco a lavorarci.
    Ho letto che i numeri con cui si puo' lavorare nel computer sono pari a 2^n dove n=memoria del pc. Come posso usare tale metodo con visual basic?
    Ad esempio, inserisco un numero superiore al miliardo in una TB e lavoro con quel numero, avendo come risultato n^2.

    Grazie per le risposte

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

    Re: [Visual Basic2005] Calcoli con numeri superiori a 10 cifre in ciclo for

    Originariamente inviato da Zio Bill
    Salve a tutti.
    Nonostante abbiamo impostato il tipo Long nelle variabili, non riesco a lavorare con nuemri superiori a 9'999'999'999.
    Mostra il codice ...

    ma non riesco a lavorarci
    Ovvero?

    Ho letto che i numeri con cui si puo' lavorare nel computer sono pari a 2^n dove n=memoria del pc.
    No ... hai letto male ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Mostra il codice ...
    Il codice è lo stesso che ho postato qui: http://forum.html.it/forum/showthrea...readid=1246216

    Ovvero?
    Inserisco un numero superiore a 9999999999 e il programma mi resistuisce come risultati solo 2 e 3 opppure solo 2 (il numero 2 viene rappresentato da codice, non viene calcolato).
    Non so dove stia il problema, avendo usato il tipo Long.

    No ... hai letto male ...
    Grazie per l'informazione...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Non hai usato un Long ma un Integer ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Pardon...l'unica differenza è che ho sostituito Integer con Long.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da Zio Bill
    Pardon...l'unica differenza è che ho sostituito Integer con Long.
    Per tutte le variabili ? Lo mostri il codice attuale ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Eccolo.
    codice:
        Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
            On Error GoTo errore
            Dim count As Long = TextBox1.Text
    
            Me.Label7.Text = "1"
            Control.CheckForIllegalCrossThreadCalls = False
            'eventualmente pulisci il contenuto della TB
            Me.RichTextBox1.Clear()
            'Aggiungo l'unico numero primo pari:
            Me.RichTextBox1.AppendText("2" + " ")
            'Il numero correntemente analizzato:
            'si parte da 3 e si prendono in consi-
            'derazione solo i numeri dispari
            Dim cur As Long = 3
    
            'Col ciclo popolo l'array del risultato
            For i As Long = 1 To count - 1
    start:
    
    
                Dim radq As Long = Math.Sqrt(cur)
                Dim divisore As Long
                'dato che abbiamo solo numeri dispari,
                'si analizzano solo divisori dispari
                'fino alla radice quadrata del numero
                For divisore = 3 To radq Step 2
                    'se il risultato di una divisione
                    'da reto zero, il numero non è primo
                    If (cur Mod divisore) = 0 Then
                        'quindi aumento di due il numero analizzato
                        '(ottenendo il numero disperi successivo)
                        cur += 2
                        'e ricomincio ad analizzare
                        GoTo start
                    End If
                Next
                'se il risultato di nessuna divisione da 0
                'il numero è primo
                Me.RichTextBox1.AppendText(cur)
                Me.RichTextBox1.AppendText(" ")
                Me.ProgressBar1.Maximum = TextBox1.Text
                Me.ProgressBar1.Value += 1
                cur += 2
                trd()
                Label7.Text = Label7.Text + 1
            Next
            MsgBox("Processo completato")
            Label9.BackColor = Color.Red
    
    errore:
            On Error Resume Next
    
    
        End Sub

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Togli la On Error ... ti accorgerai che il problema e' la ProgressBar ... Maximum e Value sono Integer ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Non c'è modo di traformare quel valore in long? A me la progressbar serve...

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ovviamente no ... ma puoi calcolare il valore in proporzione ...
    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.