moyrgos Δημοσ. 14 Νοεμβρίου 2009 Δημοσ. 14 Νοεμβρίου 2009 για σας θέλω μια μικρή βοήθεια στην visual basic θέλω να φτιάξω ενα πρόγραμμα που θα διαβάζει ενα αριθμό π.χ (123456) και να πολλαπλασιαζει κάθε ψιφίο ξεχωριστά π.χ(1*1,2*1,3*1,4*1,5*1,6*1) μπορείτε να με βοηθείσετε ??? ΕΥΧΑΡΙΣΤΩ !!!!
moyrgos Δημοσ. 14 Νοεμβρίου 2009 Μέλος Δημοσ. 14 Νοεμβρίου 2009 δεν ξέρω πως να το κάνω εχω βάλει ένα τεξ μποξ που γράφεις την τιμή και ενα κουμπί υπολογισμός και θελω οταν πατας το υπολογισμός να πέρνει ενα ενα τα ψιφία που είναι στο τεξ μποξ και οχι ολο τον αριθμο !
Alchemist` Δημοσ. 14 Νοεμβρίου 2009 Δημοσ. 14 Νοεμβρίου 2009 δεν ξέρω πως να το κάνω εχω βάλει ένα τεξ μποξ που γράφεις την τιμή και ενα κουμπί υπολογισμός και θελω οταν πατας το υπολογισμός να πέρνει ενα ενα τα ψιφία που είναι στο τεξ μποξ και οχι ολο τον αριθμο ! Καταρχάς πρέπει να βρίσκεις πόσα ψηφία έχει ο αριθμός... ένας τρόπος που σκέφτηκα μόλις τώρα για να το κάνεις είναι να ξεκινήσεις έναν ατέρμων βρόγχο, στον οποίο κάθε φορά τεστάρεις αν ο αριθμός σου είναι μεγαλύτερος από πολλαπλάσια του 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 Υ.Γ. ο κώδικας που έβαλα είναι GML όχι VBasic... φαντάζομαι όμως πως είναι κατανοητός...
moyrgos Δημοσ. 14 Νοεμβρίου 2009 Μέλος Δημοσ. 14 Νοεμβρίου 2009 βασικα θελω να φτιαξω ενα μετατροπέα δυαδικου συστηματοσ σε 10αδικο 8αδικο 16δικο και το αντιστροφο !!!! π.χ 2αδικο -> 10 . 10αδικο -> 2 γιατι 0*2^0=0 και 1*2^1=2 .... και 0+2=2!! δεν ξερω αν με καταλαβες !!! ευχαριστω παντος !
nikos903 Δημοσ. 14 Νοεμβρίου 2009 Δημοσ. 14 Νοεμβρίου 2009 βασικα θελω να φτιαξω ενα μετατροπέα δυαδικου συστηματοσ σε 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. Στην άσκηση αυτή τι υποτίθεται θα χρησιμοποιήσετε; Έχετε μάθει καμία 'παράξενη' εντολή που θα σε βοηθούσε;
moyrgos Δημοσ. 14 Νοεμβρίου 2009 Μέλος Δημοσ. 14 Νοεμβρίου 2009 εχω βαλει 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αδικο !
nikos903 Δημοσ. 14 Νοεμβρίου 2009 Δημοσ. 14 Νοεμβρίου 2009 Μπορείς να ανεβάσεις τον κώδικα αυτόν που έχεις κάνει για να μην δοκιμάζω απο την αρχή ή έχει όλο το τμήμα σου την ίδια άσκηση και θα πέσει αντιγραφή; ;ρ
Alchemist` Δημοσ. 14 Νοεμβρίου 2009 Δημοσ. 14 Νοεμβρίου 2009 βασικα θελω να φτιαξω ενα μετατροπέα δυαδικου συστηματοσ σε 10αδικο 8αδικο 16δικο και το αντιστροφο !!!! π.χ 2αδικο -> 10 . 10αδικο -> 2 γιατι 0*2^0=0 και 1*2^1=2 .... και 0+2=2!! δεν ξερω αν με καταλαβες !!! ευχαριστω παντος ! Αυτό ζήτησες στο πρώτο ποστ... θέλω να φτιάξω ενα πρόγραμμα που θα διαβάζει ενα αριθμό π.χ (123456) και να πολλαπλασιαζει κάθε ψιφίο ξεχωριστά Πάντως αυτά που σου είπα διαχωρίζουν τα ψηφία εναν αριθμό, αντί λοιπόν να τα πολλαπλασιάζεις με τα υπόλοιπα ψηφία (όπως έκανα εγώ), πολλαπλασία τα με ότι άλλο θες για να γίνει η μετατροπή... Μπορείς να το καταφέρεις με πολύ μικρές αλλαγές στον υπάρχον κώδικα... Δεν μου φαίνεται ιδιαίτερα δύσκολο...
moyrgos Δημοσ. 14 Νοεμβρίου 2009 Μέλος Δημοσ. 14 Νοεμβρίου 2009 Αυτό ζήτησες στο πρώτο ποστ... Πάντως αυτά που σου είπα διαχωρίζουν τα ψηφία εναν αριθμό, αντί λοιπόν να τα πολλαπλασιάζεις με τα υπόλοιπα ψηφία (όπως έκανα εγώ), πολλαπλασία τα με ότι άλλο θες για να γίνει η μετατροπή... Μπορείς να το καταφέρεις με πολύ μικρές αλλαγές στον υπάρχον κώδικα... Δεν μου φαίνεται ιδιαίτερα δύσκολο... μια χαρα το εγραψες μπορο να πω απλα δεν εχω ιδεταιρο επιπεδο στον προγραματισμο ! θελω πολυ ακομα δλδ ... παρολα αφτα βρικα μια εντολη στην Vbasic που πενρει το πληθος τον ψηφίων και αλλη μια που τις οριζεις απο που να αρχισει να μετραει και να βγαζει ψηφία ...
Kaka7 Δημοσ. 14 Νοεμβρίου 2009 Δημοσ. 14 Νοεμβρίου 2009 για σας θέλω μια μικρή βοήθεια στην 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
Evgenios1 Δημοσ. 14 Νοεμβρίου 2009 Δημοσ. 14 Νοεμβρίου 2009 Τσεκαρε το παρακαρω που ειναι σε 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(); } } }
virxen75 Δημοσ. 14 Νοεμβρίου 2009 Δημοσ. 14 Νοεμβρίου 2009 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 δεν είναι στο δυαδικό σύστημα η μετατροπή γίνεται όμως.
moyrgos Δημοσ. 15 Νοεμβρίου 2009 Μέλος Δημοσ. 15 Νοεμβρίου 2009 σας ευχαριστω ολους πολυ !!! !!! για την ακριβεια το εκενα ως εξης : 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 ) και θελω να περνει της τιμες απο το υπολοιπο και μετα να της διαβαζει αναποδα !!
virxen75 Δημοσ. 15 Νοεμβρίου 2009 Δημοσ. 15 Νοεμβρίου 2009 > 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
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.