Προς το περιεχόμενο

Visual Basic προβλημα (αρχαριος)


ARIANAROS

Προτεινόμενες αναρτήσεις

Δημοσ.

Ξεκινησα visual basic και προσπαθω να κανω ενα προγραμμα οπου θα δινω αριθμους και θα με βρισκει τον μικροτερο.

Για μεγαλυτερο εκανα αυτο ( με 10 αριθμους )

>
Dim a, b, i as integer
a=0
For i= 1 to 10
b=inputbox(" Dose arithmo")
If a<b then
a=b
Else
a=a
End if
Next
Print a

 

Αυτο δουλευει μια χαρα. Οταν ομως κανω την ιδια διαδικασια για να βρω τον μικροτερο δεν δουλευει, απλα με δινει την τιμη που ειχα δωσει στην πρωτη μεταβλητη. Δειτε και θα καταλαβετε

>
Dim a, b, i as integer
a=25
For i= 1 to 10
b=inputbox(" Dose arithmo")
If a>b then
a=b
Else
a=a
End if
Next
Print a "ωρες"

 

Το 25 μπαινει απλα ως μεγαλο ( η τιμες που θα βαζουν οι χρηστες σε αυτο το προγραμμα ειναι παντα μικροτερες ), θα μπορουσα να ειχα βαλει οτιδηποτε αλλο (34,52,86 κλπ.)

Το προγραμμα ομως αντι να λειτουργησει και να με δωσει τον μικροτερο αριθμο, με δινει τον αριθμο 25 ή οπως αλλιως εχω ορισει αρχικα την a.

 

Kαι μια τελευταια ερωτηση. Θελω στο inputbox μεσα στο κειμενο που γραφω να βαλω και μια μεταβλητη. Πως θα γινει αυτο?

 

 

-----Προστέθηκε 27/10/2008 στις 02 : 56 : 05-----

 

 

Sorry για το double post αλλα επειδη χωρις αυτην την απαντηση δεν μπορω να προχωρησω, μηπως κανεις μπορει να βοηθησει ? Αν δεν καταλαβατε την ερωτηση πειτε μου για να προσπαθησω να την αποδωσω καλυτερα.

 

 

-----Προστέθηκε 27/10/2008 στις 09 : 17 : 28-----

 

 

Δεν ξερει κανεις ρε guys ?????????????:cry::cry::cry::cry::cry:

Δημοσ.

Απο την στιγμή που η μεταβλητές είναι δηλωμένες σαν Integer τότε η VB καταλαβαίνει οτι αυτο που θα επιστρέψει απο απο το inputbox είναι Integer και το δειαχειρίζετε αναλόγως . Ο σωστός τρόπος όμως είναι αυτός λεει ο BILCO.

 

Τώρα για να σε βοηθήσω και εγώ όσο μπορω και επειδή ο αλγόριθμος για να κάνεις αυτο που θές είναι πολυ απλος σου προτείνω να βάλεις ένα BREAKPOINT στην γραμμή που αρχικοποιείς την μεταβλητή a (a = 25) πατώντας το πλήκτρο F9 στην συνέχεια πάτησε το πλήκτρο F5 για να εκτελεστεί ο κώδικας που έχεις γράψει . Παρατήρησε οτι σταματάει η εκτέλεση στην γραμμη που έχεις ορισει το BreakPoint . Στην συνέχεια εκτέλεσε τον κώδικα σου γραμμή γραμμή με το πλήκτρο F8 και παρατήρησε πώς αλλάζουν οι μεταβλητές σου περιεχόμενο και πώς εκτελείτε στην εντολή IF που έχεις.

 

Είναι ο μόνος τρόπος για να ανακαλύψεις τα λογικά λάθη που έχει ο κώδικας σου :))

 

Βάλε και ένα i δίπλα στο Next για να δηλώσεις το τέλος του βρογχου επανάληψής . ( for i = 1 to 10

'

'

'

Next i

Δημοσ.
Απο την στιγμή που η μεταβλητές είναι δηλωμένες σαν Integer τότε η VB καταλαβαίνει οτι αυτο που θα επιστρέψει απο απο το inputbox είναι Integer και το δειαχειρίζετε αναλόγως .

 

Η Dim a, b, i as Integer δηλώνει τα a, b ως variant και μόνο το i ως integer. Είναι αυτός ο χαζός τρόπος της basic που θέλει Dim a as Integer, b as Integer, i as Integer για να είναι όλα ακέραιοι ;)

Δημοσ.
Η Dim a, b, i as Integer δηλώνει τα a, b ως variant και μόνο το i ως integer. Είναι αυτός ο χαζός τρόπος της basic που θέλει Dim a as Integer, b as Integer, i as Integer για να είναι όλα ακέραιοι ;)

 

Ti einai oi variants ?????

Δημοσ.

Γεία σου αριανάρος.

 

Αυτή είναι μία άσκηση εύρεσης min max η οποια χρησιμοποιείται σε ολες τις γλώσσες προγραμματισμου στο αρχαριο επιπεδο ως παραδειγμα. Εαν εχεις κανει ψευδοκωδικα στο σχολείο παλαιότερα ή προσφατα πιθανοτατα να εχεις κανει και αυτη την ασκηση. Ετσι ανατρέχοντας σε αυτή μπορείς να την μετατρεψεις σε VB.

 

Οσο αφορά τον κωδικα που παραθέτεις, θα μου επιτρεψεις να διαφωνήσω με τον τροπο που αρχικοποιείς την μεταβλητη α. καλύτερο θα ήτανε να οριζεις την πρωτη τιμη που εισάγεις ως min ή max και να κανεις συγκριση με τις επομενες τιμες.

 

Σου παραθέτω και τον παρακάτω κώδικα.

>
Sub MinMax()

Dim a As Integer, b As Integer, min As Integer, max As Integer, i As Integer

For i = 1 To 3

b = InputBox("Dose arithmo")

   If i = 1 Then
       min = b
       max = b
   ElseIf i <> 1 Then
       If b > max Then
           max = b
       ElseIf b < min Then
           min = b
       End If
   End If
Next i

MsgBox ("min " & min & " max " & max)
End Sub

 

Για ότι θες εδώ είμαστε.

Δημοσ.

Θα προτείνω κάτι άλλο, λίγο πιο advanced - αν μπορεί να θεωρηθεί έτσι- χρησιμοποιώντας το inputbox για να πάρει τιμές και μετά μια bubblesort...

 

>

       Dim a(10) As Integer
       Dim i As Integer, min As Integer, max As Integer
       Dim pass As Integer, j As Integer, n As Integer, hold As Integer
       
       i = 0
       While i < 10
            a(i) = InputBox("Give number")
            i = i + 1
       Loop
           
       n = UBound(a) - LBound(a)
       pass = 1
       
       Do While (pass <= n - 1)
           For j = 0 To n - 1 - pass
               If (a(j) > a(j + 1)) Then
                   hold = a(j)
                   a(j) = a(j + 1)
                   a(j + 1) = hold
               End If
           Next j
           pass = pass + 1
       Loop

       max = a(9)
       min = a(0)

       MsgBox("Ο μέγιστος αριθμός είναι " & max & " και ο μικρότερος: " & min)


Δημοσ.
Θα προτείνω κάτι άλλο, λίγο πιο advanced - αν μπορεί να θεωρηθεί έτσι- χρησιμοποιώντας το inputbox για να πάρει τιμές και μετά μια bubblesort...

 

 

Σωστός. Αλλά θα το μπερδεψεις το παλικαρι.

  • 4 εβδομάδες αργότερα...
Δημοσ.

Παιδια, επαναφερω το θεμα στ ζωη γιατι σαν αρχαριος εχω κι εγω απορια (πολυ γελοια, για αυτο θα χαρω πολυ που λογικα θα δω αμεσως πολλες και σωστες απαντησεις) κ για να μην ανοιγω χωρις λογω καινουριο θεμα, την ποσταρω εδώ. Λοιπον.Θα ήθελα να μου πειτε κατι πολυ απλο (για αρχη :P): τρεχωντας το προγραμμα, εμφανιζεται ενα textbox και εκει μεσα ο χρήστης, γραφει την ηλικία του. μετα παταει ενα commnad button.Αν είναι κατω των 18 να εμφανιστει μήνυμα που να λεει "εισαι κατω των 18" ή κατι τετοιο αν είναι ανω των 18 να αλλαζει το backcolor της φορμασ μου σε μπλε πχ. ΣΑΣ ΙΚΕΤΕΥΩ πειτε μου των σωστο κωδικα για να παρω μια ιδεα, ΣΑΣ ΘΕΡΜΟΠΑΡΑΚΑΛΩ!! ενω ολα τα βαζω σωστα(νομιζω δλδ), το προγραμμα κανει αλλα αντ'αλλων!!! πως να χρησιμοποιησω την if και MsgBox( για το μηνυμα που θα εμφανιζει). γραψτε μου για να δω επιτελουσ τα συντακτικα μου λαθη! αυτη η MsgBox, μου χει σπασει τα νευρα. :(:(:(

ΧΙλια ευχαριστω..

Δημοσ.
Παιδια, επαναφερω το θεμα στ ζωη γιατι σαν αρχαριος εχω κι εγω απορια (πολυ γελοια, για αυτο θα χαρω πολυ που λογικα θα δω αμεσως πολλες και σωστες απαντησεις) κ για να μην ανοιγω χωρις λογω καινουριο θεμα, την ποσταρω εδώ. Λοιπον.Θα ήθελα να μου πειτε κατι πολυ απλο (για αρχη :P): τρεχωντας το προγραμμα, εμφανιζεται ενα textbox και εκει μεσα ο χρήστης, γραφει την ηλικία του. μετα παταει ενα commnad button.Αν είναι κατω των 18 να εμφανιστει μήνυμα που να λεει "εισαι κατω των 18" ή κατι τετοιο αν είναι ανω των 18 να αλλαζει το backcolor της φορμασ μου σε μπλε πχ. ΣΑΣ ΙΚΕΤΕΥΩ πειτε μου των σωστο κωδικα για να παρω μια ιδεα, ΣΑΣ ΘΕΡΜΟΠΑΡΑΚΑΛΩ!! ενω ολα τα βαζω σωστα(νομιζω δλδ), το προγραμμα κανει αλλα αντ'αλλων!!! πως να χρησιμοποιησω την if και MsgBox( για το μηνυμα που θα εμφανιζει). γραψτε μου για να δω επιτελουσ τα συντακτικα μου λαθη! αυτη η MsgBox, μου χει σπασει τα νευρα. :(:(:(

ΧΙλια ευχαριστω..

βαλε πρωτα εσυ τον κωδικα σου ωστε να σου τα διορθωσει καποιος, καλυτερα ετσι....

Δημοσ.

Βασικά η msgbox είναι πολύ απλή στη χρήση, ουσιαστικά μπορείς να χρησιμοποιήσεις μια μεταβλητή που να καταχωρείται εκεί η τιμή της απάντησης που θα λαμβάνεις...

Θέλεις να παραθέσεις των κώδικά σου .... για να σε καθοδηγήσουμε παραπάνω?

Δημοσ.

Private Sub Command1_Click()

Dim age As Integer

age = Val(Text1.Text)

If age < 18 Then

MsBox("Είσαι κατω των 18, λύπαμαι", "vbOKOnly")

Else

Form1.BackColor = vbBlue

End If

 

End Sub

 

 

Οριστε παιδια! ευχαριστω παρα πολυ, κ σοορυ που σας ταλαιπωρω με γελοια πραματα.. ευχαριστω...

Δημοσ.

Στο visual studio 6 αν ζητας αυτο που καταλαβα εκανα το παρακατω.

Αν καταλαβα καλα θες απλα ενα textbox που θα γραφει ο αλλος την ηλικια του και αν ειναι κατω των 18 να του βγαζει msgbox που να λεει εισαι κατω των 18.

Αν ειναι ανω των 18 θα αλλαζει το χρωμα της φορμας ( σε μπλε ) και θα βγαινει msgbox που θα λεει

οτι εισαι ανω των 18. Αρκει απλα να βαλεις το textbox και το command button στη φορμα σου και στο command button να βαλεις τον εξης κωδικα :

 

>
Private Sub Command1_Click()
Dim age As Integer
age = Text1.Text
If age < 18 Then
   MsgBox "You are under 18"
Else
   BackColor = RGB(0, 0, 255)
   MsgBox " You are above ( i akrivos ! ) 18 "
End If
End Sub

 

Τωρα αν θες να βαλει πρωτα 18 χρωνων, η φορμα να γινει μπλε, και μετα να πατησει κατι κατω απο 18 και να επαναφερθει το αρχικο χρωμα δεν εχω ιδεα πως γινεται καθως ειμαι ο αρχαριος που ανοιξε το θεμα. Μην ξεχασεις να μας πεις αν δουλεψε .

 

Υ.Γ. Οτι θες να ζητησεις, οτι κι αν ειναι αυτο, οσο χαζο κι αν νομιζεις οτι ειναι, εδω ειμαστε να βοηθησουμε.

Υ.Γ. 2 Ηταν η πρωτη φορα που μπορεσα να βοηθησω ( αν οντως βοηθησα ) και αισθανομαι πολυ ωραια !!!! Που να βοηθουσα και σαν ολους εσας του insomnia !!!!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...