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

Visual Basic προβληματισμός !


moyrgos

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

Δημοσ.

για σας θέλω μια μικρή βοήθεια στην visual basic θέλω να φτιάξω ενα πρόγραμμα που θα διαβάζει ενα αριθμό π.χ (123456) και να πολλαπλασιαζει κάθε ψιφίο ξεχωριστά π.χ(1*1,2*1,3*1,4*1,5*1,6*1) μπορείτε να με βοηθείσετε ???

 

 

 

ΕΥΧΑΡΙΣΤΩ !!!!

Δημοσ.

δεν ξέρω πως να το κάνω εχω βάλει ένα τεξ μποξ που γράφεις την τιμή και ενα κουμπί υπολογισμός και θελω οταν πατας το υπολογισμός να πέρνει ενα ενα τα ψιφία που είναι στο τεξ μποξ και οχι ολο τον αριθμο !

Δημοσ.
δεν ξέρω πως να το κάνω εχω βάλει ένα τεξ μποξ που γράφεις την τιμή και ενα κουμπί υπολογισμός και θελω οταν πατας το υπολογισμός να πέρνει ενα ενα τα ψιφία που είναι στο τεξ μποξ και οχι ολο τον αριθμο !

 

Καταρχάς πρέπει να βρίσκεις πόσα ψηφία έχει ο αριθμός... ένας τρόπος που σκέφτηκα μόλις τώρα για να το κάνεις είναι να ξεκινήσεις έναν ατέρμων βρόγχο, στον οποίο κάθε φορά τεστάρεις αν ο αριθμός σου είναι μεγαλύτερος από πολλαπλάσια του 10 (10,100,1000...)... Έτσι αν ας πουμε έχουμε τον αριθμό 587... Στην πρώτη επανάληψη συγκρίνετε με το 10, είναι μεγαλύτερος οπότε έχει 2 ψηφία τουλάχιστον, στην 2η συγκρίνεται με το 100, επίσης είναι μεγαλύερος, οπότε έχει 3 ψηφία τουλάχιστον, στην 3η συγκρίνεται με το 1000, είναι μικρότερος οπότε έχει 3 ψηφία. Ο βρόγχος σταματάει με break; όταν ο αριθμός είναι μικρότερος από κάποιο πολλαπλάσιο

 

Για να μην επηρεάζεται η σύγκριση παίρνουμε αρχικά την απόλυτη τιμή του αριθμού

 

//--------------------------------

var i,j,g,number,digits; //number Ο αριθμός π έδωσε ο χρήστης, digits ο αριθμός των ψηφίων

 

g = 10

digits = 1

number = abs(number)

while (i<30) do {

if (number > g) then {

digits = digits + 1

g = g*10

}

else {break;}

}

//-----------------------------

Για να βρούμε τώρα τον πολλάπλασιασμό 5*8*7, πρέπει αρχικά να ξεχωρίσουμε τα ψηφία... Κάνουμε λοιπόν έναν βρόγχο και πάλι... Σε κάθε επανάληψη βρίσκουμε το υπόλοιπο της ακέραιας διαίρεσης (Mod) με πολλαπλάσια του 10... ¨Ετσι στην πρώτη επανάληψη έχουμε 587mod10 = 7 , έχουμε μια μεταβλητή που κρατάει το αποτέλεσμα του mod (result) και μια που κρατάει το συνολικό γινόμενο (sum), έτσι το sum = sum*result, δλδ sum = 1*7=7...

τέλος θα κάνουμε το 587 div 10 (ακέραια διαίρεση) για να αφαιρέσουμε το τελευταίο ψηφίο, οπότε number = number div 10 = 58

Στην δεύτερη επανάληψη θα κάνουμε την ίδια δουλεια, δηλαδή 58 mod 10 = 8 = result

sum = sum*result = 7*8 = 56 και τέλος number = 58 div 10 = 5

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

 

var result,sum;

g = 1

sum = 1

while (g<digits+1) do {

result = ((number)mod(10))

sum = sum*result

g = g + 1

number = (number) div (10)

}

show_message("Το αποτελεσμα είναι: "+string(sum))

 

Δεν δοκίμασα αν λειτουργεί, ίσως έχω κάνει κάποιο λάθος αλλά κάπως έτσι είναι κ ο κώδικας... Γιατί πάντως να θέλει να υπολογίσει κάποιος κάτι τέτοιο??? :S :P

 

Υ.Γ. ο κώδικας που έβαλα είναι GML όχι VBasic... φαντάζομαι όμως πως είναι κατανοητός...

Δημοσ.

βασικα θελω να φτιαξω ενα μετατροπέα δυαδικου συστηματοσ σε 10αδικο 8αδικο 16δικο και το αντιστροφο !!!! π.χ 2αδικο -> 10 . 10αδικο -> 2 γιατι 0*2^0=0 και 1*2^1=2 .... και 0+2=2!! δεν ξερω αν με καταλαβες :) !!! ευχαριστω παντος !

Δημοσ.
βασικα θελω να φτιαξω ενα μετατροπέα δυαδικου συστηματοσ σε 10αδικο 8αδικο 16δικο και το αντιστροφο !!!! π.χ 2αδικο -> 10 . 10αδικο -> 2 γιατι 0*2^0=0 και 1*2^1=2 .... και 0+2=2!! δεν ξερω αν με καταλαβες :) !!! ευχαριστω παντος !

Δηλαδή θες να παίρνεις απο οποιοδήποτε αρηθμιτικό σύστημα και να μετατρέπεις σε 2-8-10δικό σωστά? Για να γίνει αυτό πρέπει να του καθωρίζεις τι του δίνεις input για να μην μπερδεύεται (μπορείς να βάλεις 3 textboxe's που να έχουν αρχική τιμή 0 και όταν αλλάξεις κάποιο να ψάχνει το πρόγραμμα για το box που δεν είναι 0 και να παίρνει την σωστή τιμή και να μετατρέπει στα άλλα συστήματα). Μετά με διαδοχικές διαιρέσεις μπορείς να πάς απο 10-->2 και μετά με πολλαπλασιασμούς απο 2-->8 και απο 2-->10.

Στην άσκηση αυτή τι υποτίθεται θα χρησιμοποιήσετε; Έχετε μάθει καμία 'παράξενη' εντολή που θα σε βοηθούσε;

Δημοσ.

εχω βαλει 4 οπτιον μποχ που διλωνεις σε τη συστημα ειναι ο αριθμος στο τεξτ μποξ (2αδικο,8αδικο,10αδικο,16αδικο) και με το που πατήσεις το κουμπι υπολογισμός παει και γραφει αναλογος το συστημα που εχουμε επιλεξη σε αλλα 3 τεξτ μποχ το αποτελεσμα π.χ (αν ο αριθμος που θελουμε να μετατρέψουμε ειναι το 10 σε 2αδικο παταμε το υπολογισμος και γραφει στα τεξτ μποξ του 8αδικου , 10αδικου , 16αδικου το αποτελεσμα που ειναι 2 ) ... εκει που "κρασαρω" ειναι πως θα του πω να περνει απο τον αρχικο αριθμο π.χ(10010) τα ψιφία ξεχωριστα και να τα πολλαπλασιαζει !! ... σκέφτηκα κατι αλλα δεν ξέρω αν γινεται να ... να περνει τα ψιφια και να τα αποθηκευη σε καποιο πινακα ... δεν ξερω αν γινεται στην vBasic

 

---------- Το μήνυμα προστέθηκε στις 13:42 ----------

 

απο οτι εψαξα η VBasic οριζει το 8αδικο με Oct(x) και το 16αδικο με Hex(x) αλλα δεν αναφέρει πουθενα για 2αδικο και 10αδικο !

Δημοσ.

Μπορείς να ανεβάσεις τον κώδικα αυτόν που έχεις κάνει για να μην δοκιμάζω απο την αρχή ή έχει όλο το τμήμα σου την ίδια άσκηση και θα πέσει αντιγραφή; ;ρ

Δημοσ.
βασικα θελω να φτιαξω ενα μετατροπέα δυαδικου συστηματοσ σε 10αδικο 8αδικο 16δικο και το αντιστροφο !!!! π.χ 2αδικο -> 10 . 10αδικο -> 2 γιατι 0*2^0=0 και 1*2^1=2 .... και 0+2=2!! δεν ξερω αν με καταλαβες :) !!! ευχαριστω παντος !

 

Αυτό ζήτησες στο πρώτο ποστ...

 

θέλω να φτιάξω ενα πρόγραμμα που θα διαβάζει ενα αριθμό π.χ (123456) και να πολλαπλασιαζει κάθε ψιφίο ξεχωριστά

 

Πάντως αυτά που σου είπα διαχωρίζουν τα ψηφία εναν αριθμό, αντί λοιπόν να τα πολλαπλασιάζεις με τα υπόλοιπα ψηφία (όπως έκανα εγώ), πολλαπλασία τα με ότι άλλο θες για να γίνει η μετατροπή... Μπορείς να το καταφέρεις με πολύ μικρές αλλαγές στον υπάρχον κώδικα... Δεν μου φαίνεται ιδιαίτερα δύσκολο...

Δημοσ.
Αυτό ζήτησες στο πρώτο ποστ...

 

 

 

Πάντως αυτά που σου είπα διαχωρίζουν τα ψηφία εναν αριθμό, αντί λοιπόν να τα πολλαπλασιάζεις με τα υπόλοιπα ψηφία (όπως έκανα εγώ), πολλαπλασία τα με ότι άλλο θες για να γίνει η μετατροπή... Μπορείς να το καταφέρεις με πολύ μικρές αλλαγές στον υπάρχον κώδικα... Δεν μου φαίνεται ιδιαίτερα δύσκολο...

 

μια χαρα το εγραψες μπορο να πω απλα δεν εχω ιδεταιρο επιπεδο στον προγραματισμο !

θελω πολυ ακομα δλδ :rolleyes: ... παρολα αφτα βρικα μια εντολη στην Vbasic που πενρει το πληθος τον ψηφίων και αλλη μια που τις οριζεις απο που να αρχισει να μετραει και να βγαζει ψηφία ...

Δημοσ.
για σας θέλω μια μικρή βοήθεια στην visual basic θέλω να φτιάξω ενα πρόγραμμα που θα διαβάζει ενα αριθμό π.χ (123456) και να πολλαπλασιαζει κάθε ψιφίο ξεχωριστά π.χ(1*1,2*1,3*1,4*1,5*1,6*1) μπορείτε να με βοηθείσετε ???

 

 

 

ΕΥΧΑΡΙΣΤΩ !!!!

 

δεν ξέρω πως να το κάνω εχω βάλει ένα τεξ μποξ που γράφεις την τιμή και ενα κουμπί υπολογισμός και θελω οταν πατας το υπολογισμός να πέρνει ενα ενα τα ψιφία που είναι στο τεξ μποξ και οχι ολο τον αριθμο !

 

 

Λογικά αφού ο αριθμός θα εισάγεται μέσα σε ένα text box θα είναι string και όχι αριθμός. 'Αρα αυτό που πρέπει να κάνεις είναι να μετατρέψεις το string σε αριθμό.

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

 

>Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim arithmos() As Char = TextBox1.Text.ToCharArray
       Dim i As Integer = 0
       Dim temp As Integer = 0
       For i = 0 To arithmos.Length() - 1
           temp = CInt(Val(arithmos(i))) * 2
           ListBox1.Items.Add(temp)   
' το listbox δεν χρειάζεται πουθενά απλά ήταν για να δω αν λειτουργεί όταν το δοκίμασα
       Next
   End Sub

Δημοσ.

Τσεκαρε το παρακαρω που ειναι σε c# (οχι πολυ μακρια απο vb)

>using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
   class Program
   {
       static void Main(string[] args)
       {
           //... using System.Linq
           //matheneis to kalytero prama sth .net (Linq)
           //afoy matheis, tha katalabeis to parakatw
           //to parakatw pernei ena string arithmo kai to metatrepei se
           // int array
           string input = "2376";
           var ints = from c in input
                      select int.Parse(c.ToString());
           //na o pinakas soy
           foreach (var item in ints)
           {
               Console.WriteLine(item);
           }
           Console.Read();
       }
   }
}

Δημοσ.

visual basic

 

visual basic 6 ή .NET ?

 

 

βασικα θελω να φτιαξω ενα μετατροπέα δυαδικου συστηματοσ σε 10αδικο 8αδικο 16δικο και το αντιστροφο !!!! π.χ 2αδικο -> 10 . 10αδικο -> 2 γιατι 0*2^0=0 και 1*2^1=2 .... και 0+2=2!! δεν ξερω αν με καταλαβες :) !!! ευχαριστω παντος !

 

σε vb6

=========

φτιάξε μία φόρμα

βάλε 2 textboxes

text1,text2

βάζεις και ένα button -->command1

 

στο text1 βάζεις τον αριθμό προς μετατροπή

στο text2 παίρνεις το αποτέλεσμα

 

 

κάνε διπλό κλικ στο button coomand1 και γράψε τον παρακάτω κώδικα

>
Private Sub Command1_Click()
Dim value As String
value = Trim(Text1.Text)'παίρνω το κείμενο που υπάρχει στο text1 και αφαιρώ
'δεξιά και αριστερά τα κενά
Dim i As Integer
Dim value1 As Long

For i = Len(value) To 1 Step -1//ι=αριθμός ψηφίων,...,1 
value1 = value1 + 2 ^ (Len(value) - i) * CInt(Mid(value, i, 1))
'mid(value,i,1)-->παίρνει το ψηφίο στην θέση i
'CInt(Mid(value, i, 1))-->μετατρέπει το ψηφίο σε ακέραιο
'αν 111-->1*2^2+1*2^1+1*2^0
'άρα στο value1 βρίσκεται ο δυαδικός αριθμός στο δεκαδικό σύστημα
Next
Text2.Text = CStr(value1)

End Sub

 

σημείωση:πρέπει να γίνεται validation input

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

π.χ. 1234 δεν είναι στο δυαδικό σύστημα η μετατροπή γίνεται όμως.

Δημοσ.

σας ευχαριστω ολους πολυ !!! !!!

 

 

 

για την ακριβεια το εκενα ως εξης :

a = 0

g = 0

sum = 0

pow = 0 \\η δυναμε

For g = Len(Number) To 1 Step -1 \\αρχιζει και μετραει απο το τελος

a = CLng(Mid(Number,g,1)) \\απομονωνη τα ψηφια

sum = a*2^Pow+sum

pow=pow+1

next g

 

βασικα τωρα αντιμετοπίζω αλλο πρόβλημα !!!

απο 10αδικο σε 2αδικο

χρειζεται μια επαναληψη που να κανει το εξης

 

do until number = 0

ipoloipo =0

ipoloipo=number mod 2

number = number / 2

exit do

 

πως μπορο να παρω της τιμες του ipoloipo και μετα να της διαβαζει αναποδα !!! π.χ (αν 10αδικος - > 5 τοτε -> 5 mod 2 =1 //Το υπολοιπο

5 / 2 = 2 //Η διεραιση

2 mod 2 = 0 //Το υπολοιπο

2 / 2 = 1 //Η διεραιση

1 mod 2 = 1 //Το υπολοιπο

1 / 2 = 0 // Η διεραιση

αρα στο 2αδικο το 5 θα ειναι 101

)

και θελω να περνει της τιμες απο το υπολοιπο και μετα να της διαβαζει αναποδα !!

Δημοσ.
>
Private Sub Command2_Click()
Dim neg_flag As Boolean

neg_flag = False


Dim value As String
value = Trim(Text1.Text)
Dim i As Integer
Dim value1, remain As Integer
value1 = CInt(value)
value = ""
If (value1 < 0) Then
   value1 = -value1
   neg_flag = True
End If

While (value1 > 0)
   remain = value1 Mod 2
   value1 = value1 \ 2
   value = value + Trim(CStr(remain))
   
Wend
If neg_flag Then value = value + "-"
value = StrReverse(value)
If value = "" Then value = "0"

Text2.Text = value


End Sub

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

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

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