Visual Basic 6 - Programmazione - | BMWpassion forum e blog
  1. PROMO MICHELIN pneumatici estivi e all season: CASHBACK FINO A €90 Clicca Qui!

Visual Basic 6 - Programmazione -

Discussione in 'Informatica e computer' iniziata da ilbmwista, 4 Febbraio 2011.

  1. ilbmwista

    ilbmwista

    26.641
    1.361
    9 Dicembre 2008
    Reputazione:
    10.000.000
    Bmw 320ci E46///M
    Ragazzi ho un problema da risolvere, sto creando un programma che deve generare n vettori (da input) i quali devono essere solo numeri non primi, una volta fatto ciò, stamparli e estrarre solo quelli pari ed ordinarli in maniera crescente !

    mi date una mano cortesemente ?

    Riporto qui sotto il codice che sono riuscito a compilare:

    Private Sub Command1_Click()
    Cls
    'dichiarazione variabili
    Dim x() As Integer
    Dim i As Integer
    Dim n As Integer
    Dim r As Integer
    Dim iflag As Integer
    Dim j As Integer
    n = InputBox("inserire numero elementi", "numero elementi")
    Do While n
     
    Ultima modifica di un moderatore: 4 Febbraio 2011
  2. Scrondo

    Scrondo Presidente Onorario BMW

    11.651
    8.336
    10 Aprile 2009
    Reputazione:
    1.653.038.047
    BMW G21 - Q5
    VB6 non è certo il mio "cavallo di battaglia", ma vediamo se la memoria mi aiuta..

    Private Sub Command1_Click()

    Cls

    'dichiarazione variabili

    Dim x() As Integer

    Dim i As Integer

    Dim n As Integer

    Dim r As Integer

    Dim iflag As Integer

    Dim j As Integer

    n = InputBox("inserire numero elementi", "numero elementi")

    Do While n

    MsgBox "n deve essere >0"

    n = InputBox("inserire numero elementi", "numero elementi")

    Loop

    ReDim x(n)

    'genera vettore casuale

    For i = 1 To n

    Randomize

    x(i) = Int(Rnd * n) + 1

    Next i

    'numero primo

    For i = 1 To n

    iflag = 0

    For j = 2 To x(i) - 1

    r = x(i) Mod j

    If r = 0 Then iflag = 1

    Next j

    If iflag = 1 Then

    Print i, x(i), "non primo"

    Else

    Print i, x(i)

    End If

    Next i

    End Sub

    Ad una prima occhiata, non mi pare che il codice da te riportato sia in grado di riconoscere correttamente i numeri primi, non è che il problema sta li..?

    Ma non ho un compilatore per VB6 a portata di mano, e non ci metto la mano sul fuoco, quindi prendi quello che ti ho detto con le molle.....
     
    Ultima modifica di un moderatore: 4 Febbraio 2011
  3. ilbmwista

    ilbmwista

    26.641
    1.361
    9 Dicembre 2008
    Reputazione:
    10.000.000
    Bmw 320ci E46///M
    Ma hai ricopiato o hai modificato ciò che ho scritto io come codice ? :rolleyes::-k

    A riconoscere i numeri primi me li riconosce, il problema è che a me interessa che mi stampi SOLO i numeri NON Primi ...:rolleyes:

    P.s. Se hai installato Excel allora ce l'hai il compilatore VB6 ;) /emoticons/wink@2x.png 2x" width="20" height="20">
     
  4. Scrondo

    Scrondo Presidente Onorario BMW

    11.651
    8.336
    10 Aprile 2009
    Reputazione:
    1.653.038.047
    BMW G21 - Q5
    Diciamo che l'ho riportato a "memoria" "secondo logica", ed è ovvio che quella da te presentata qui non è la formattazione corretta... :wink:

    E no, non ho excel su questo computer..

    Bho..

    Se mi dici che te li riconosce mi fido, il mio VB è più che arrugginito (però non vedo la routine...), allora il problema potrebbe essere nelle istruzioni di stampa, hai provato a rimuovere:

    Print i, x(i)


     
  5. ilbmwista

    ilbmwista

    26.641
    1.361
    9 Dicembre 2008
    Reputazione:
    10.000.000
    Bmw 320ci E46///M
    Private Sub Command1_Click()

    Cls

    'dichiarazione variabili

    Dim x() As Integer

    Dim i As Integer

    Dim n As Integer

    Dim r As Integer

    Dim iflag As Integer

    Dim j As Integer

    n = InputBox("inserire numero elementi", "numero elementi")

    Do While n

    MsgBox "n deve essere >0"

    n = InputBox("inserire numero elementi", "numero elementi")

    Loop

    ReDim x(n)

    'genera vettore casuale

    For i = 1 To n

    Randomize

    x(i) = Int(Rnd * n) + 1

    Next i

    'numero primo

    For i = 1 To n

    iflag = 0

    For j = 2 To x(i) - 1

    r = x(i) Mod j

    If r = 0 Then iflag = 1

    Next j

    If iflag = 1 Then

    Print i, x(i), "non primo"

    Else


    Print i, x(i)


    End If

    Next i

    End Sub

    Avevo già provato ad eliminare quello in rosso ma nulla!:rolleyes:
     
  6. Scrondo

    Scrondo Presidente Onorario BMW

    11.651
    8.336
    10 Aprile 2009
    Reputazione:
    1.653.038.047
    BMW G21 - Q5
    Eppure per me il problema sta nel riconoscimento dei numeri primi..

    Ti metto un link ad una vecchia routine per il riconoscimento dei numeri primi che avevo in archivio, prova a dare un'occhio..

    http://digilander.libero.it/le0/routine.txt
     
  7. ilbmwista

    ilbmwista

    26.641
    1.361
    9 Dicembre 2008
    Reputazione:
    10.000.000
    Bmw 320ci E46///M
    Ti ringrazio per il link, ma son sicuro che il riconoscimento dei numeri primi è OK, il problema ripeto è dire al programma, tramite comando DO WHILE di continuare a cercare (casualmente...solo numeri NON PRIMI) e stamparmeli finchè non si raggiunge n vettori (scelti da input in precedenza)....senza stamparmi anche i numeri primi !...:rolleyes::-k
     
  8. ilbmwista

    ilbmwista

    26.641
    1.361
    9 Dicembre 2008
    Reputazione:
    10.000.000
    Bmw 320ci E46///M
    Il problema sostanzialmente e scrivere la parte di codice al posto del ciclo For i = 1 to n (prima del codice del generatore di numeri casuali) con un ciclo DO UNTIL !
     
  9. ilbmwista

    ilbmwista

    26.641
    1.361
    9 Dicembre 2008
    Reputazione:
    10.000.000
    Bmw 320ci E46///M
    Riaggiorno questo 3d dato che sono riuscito a risolvere dopo vari grattacapi... il mio "problema" , se può essere utile a qualcuno..ben venga..! ;) /emoticons/wink@2x.png 2x" width="20" height="20">

    Cadevo nel seguente errore: Non dichiaravo una variabile come "contatore" e quindi il programma mi riportava tutti i numeri senza far selezioni di ciò che mi interessava a me..

    Riporto solo la parte "corretta" ;) /emoticons/wink@2x.png 2x" width="20" height="20">

    Quindi come dichiarazione variabili c'è da aggiungere

    Dim conta as integer

    conta=0

    Bisognava cambiare il ciclo for con un ciclo do while

    quindi:

    Do while conta

    ISTRUZIONE

    conta=conta+1

    Print conta

    a(conta)= vettore istruzione

    Loop

    Tutto qui!8-[
     
    Ultima modifica di un moderatore: 15 Febbraio 2011

Condividi questa Pagina