Visual Basic 6 - Programmazione - | BMWpassion forum e blog
  1. Questo sito utilizza i cookies. Continuando a navigare tra queste pagine acconsenti implicitamente all'uso dei cookies. Scopri di più.

Visual Basic 6 - Programmazione -

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

  1. ilbmwista

    ilbmwista

    26.658
    1.358
    9 Dicembre 2008
    Reputazione:
    6.819.844
    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

    5.027
    2.552
    10 Aprile 2009
    Reputazione:
    383.793.173
    F30 320d
    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.658
    1.358
    9 Dicembre 2008
    Reputazione:
    6.819.844
    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

    5.027
    2.552
    10 Aprile 2009
    Reputazione:
    383.793.173
    F30 320d
    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.658
    1.358
    9 Dicembre 2008
    Reputazione:
    6.819.844
    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

    5.027
    2.552
    10 Aprile 2009
    Reputazione:
    383.793.173
    F30 320d
    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.658
    1.358
    9 Dicembre 2008
    Reputazione:
    6.819.844
    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.658
    1.358
    9 Dicembre 2008
    Reputazione:
    6.819.844
    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.658
    1.358
    9 Dicembre 2008
    Reputazione:
    6.819.844
    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