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
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.....
Ma hai ricopiato o hai modificato ciò che ho scritto io come codice ? A riconoscere i numeri primi me li riconosce, il problema è che a me interessa che mi stampi SOLO i numeri NON Primi ... P.s. Se hai installato Excel allora ce l'hai il compilatore VB6 /emoticons/wink@2x.png 2x" width="20" height="20">
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)
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!
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
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 !...
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 !
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!