kotopoulos Δημοσ. 2 Νοεμβρίου 2010 Δημοσ. 2 Νοεμβρίου 2010 θελω να κανω ενα προγραμμα το οποιο να του δινω μια συμβολοσειρα κ να ψαχνει σε ενα λεξικο κ να βρισκει ολους τους πιθανους συνδυασμους που μπορουν να γινουν με αυτα τα γραμματα...ξερω οτι σε τζαβα ειναι πιο δυσκολο αλλα πρεπει συγκεκριμενα σε αυτη τη γλωσσα ... εχω ενα κομματι κωδικα το οποιο περνει χαρακτηρες απο το αρχειο... αλλα εχει 2 προβληματα 1) κοιταει μονο τον πρωτο χαρακτηρα του αρχειου + 2)τον εμφανιζει κινεζικα... καμια ιδεα τι να κανω..?σας παραθετω τον κωδικα.. public class Reader { public static void main(String[] args) { String strFilePath = "C:\\gwl.txt"; try {FileInputStream fin = new FileInputStream(strFilePath); DataInputStream din = new DataInputStream(fin); char ch = din.readChar(); if(ch == 'a){ System.out.println("Char : " + ch); } else { System.out.println("Char : " + ch);} for (i = 0; i < r - 1; i++) { max = i; for (k = i + 1; k < r; k++) { if (res[k].length() > res[max].length()) max = k; } temp = res; res = res[max]; res[max] = temp; } din.close(); } catch (FileNotFoundException fe) { System.out.println("FileNotFoundException : " + fe); } catch (IOException ioe) { System.out.println("IOException : " + ioe); } } }
Directx Δημοσ. 2 Νοεμβρίου 2010 Δημοσ. 2 Νοεμβρίου 2010 Το θέμα αυτό το είχα συναντήσει ξανά πριν μερικούς μήνες αλλά για γλώσσα C - ρίξε μια ματιά εδώ και εδώ, μπορεί να βοηθήσει.
RubiksCube Δημοσ. 2 Νοεμβρίου 2010 Δημοσ. 2 Νοεμβρίου 2010 Δεν είναι καθόλου δύσκολο σε java. Απλά χρεάζεσαι το σωστό data structure. Σκάναρε το λεξικό σου λέξη προς λέξη, κάνε sort τους χαρακτήρες κάθε λέξης πχ the -> eht Μετά (πριν προχωρήσεις στην επόμενη λέξη) βάλε σε ένα hash table το key "eht" και value μια λίστα από String μέ ένα στοιχείο "the". Αν συναντήσεις άλλη λέξη με τα ίδια γράμματα θα προστεθεί στη λίστα. Όταν τελειώσεις μπορείς να βρεις όλους τους αναγραμματισμούς μιας λέξης πολύ γρήγορα (Ο(1)).
kotopoulos Δημοσ. 2 Νοεμβρίου 2010 Μέλος Δημοσ. 2 Νοεμβρίου 2010 το προβλημα μου αρχικα ειναι αυτο που ειπα κ στο αρχικο ποστ οτι οταν παει να διαβασει απο το αρχειο διαβαζει μονο τον πρωτο χαρακτηρα του αρχειου κ τιποτα αλλο κ οτι στην εμφανισει το βγαζει κινεζικο.. το πως θα γινει μετα θα το βρω.. αρχικα θελω να λυσω αυτο το προβλημα
RubiksCube Δημοσ. 2 Νοεμβρίου 2010 Δημοσ. 2 Νοεμβρίου 2010 Λογικό είναι να διαβάζει μόνο ένα χαρακτήρα αφού χρησιμοποιείς din.readChar(). Πρέπει να χρησιμοποιήσεις την readln() για να διαβάσεις ολόκληρη την γραμμή (και να την βάλεις σε ένα String).
kotopoulos Δημοσ. 2 Νοεμβρίου 2010 Μέλος Δημοσ. 2 Νοεμβρίου 2010 ευχαριστω κυβε! νταξει αφου λυθηκε αυτο συνεχιζω κανονικα..αν χρειαστω κατι θα επιστρεψω
kotopoulos Δημοσ. 8 Νοεμβρίου 2010 Μέλος Δημοσ. 8 Νοεμβρίου 2010 πως θα κανω συγκριση ενα προς ενα τα γραμματα?? δεν εχω καταφερει ακομη να βρω τον τροπο.. κυβε για αυτο που ελεγες για την ταξινομηση της γραμματοσειρας πιο πανω ετσι οπως το σκεφτηκα εγω τουλαχιστον δεν θα βρει ολες τις λεξεις που μπορει να φτιαξεις με τα γραμματα που εχεις.. εκτος κ αν το εχω καταλαβει λαθος..
RubiksCube Δημοσ. 8 Νοεμβρίου 2010 Δημοσ. 8 Νοεμβρίου 2010 Αυτό που είχα προτείνει θα σου δίνει όλες τις λέξεις που σχηματίζονται ακριβώς με τα ίδια γράμματα αλλά άλλη σειρά, δηλαδή τους αναγραμματισμούς. Δεν θα σου δίνει όμως λέξεις που σχηματίζονται με υποσύνολο των γραμμάτων. Θα βρεις το ακριβές πρόγραμμα εδώ, στην παράγραφο που λέγεται πολυχάρτες (multimaps).
kotopoulos Δημοσ. 9 Νοεμβρίου 2010 Μέλος Δημοσ. 9 Νοεμβρίου 2010 μμ αυτο σκεφτηκα..εγω θελω κ με υποσυνολο...
virxen75 Δημοσ. 9 Νοεμβρίου 2010 Δημοσ. 9 Νοεμβρίου 2010 πως θα κανω συγκριση ενα προς ενα τα γραμματα??δεν εχω καταφερει ακομη να βρω τον τροπο.. http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#charAt%28int%29
RubiksCube Δημοσ. 9 Νοεμβρίου 2010 Δημοσ. 9 Νοεμβρίου 2010 μμ αυτο σκεφτηκα..εγω θελω κ με υποσυνολο... Ε απλά θα φτιάξεις τον αλγόριθμο που βρίσκει όλα τα υποσύνολα ενός συνόλου και για κάθε ένα θα ψάξεις στον πολυχάρτη. Δεν είναι πολύ δύσκολος, αναδρομικά τουλάχιστον βγαίνει σε λίγες γραμμές.
kotopoulos Δημοσ. 9 Νοεμβρίου 2010 Μέλος Δημοσ. 9 Νοεμβρίου 2010 Ε απλά θα φτιάξεις τον αλγόριθμο που βρίσκει όλα τα υποσύνολα ενός συνόλου και για κάθε ένα θα ψάξεις στον πολυχάρτη. Δεν είναι πολύ δύσκολος, αναδρομικά τουλάχιστον βγαίνει σε λίγες γραμμές. το εχω κανει κ δουλευει με το μονο προβλημα οτι εμφανιζει καποιες λεξεις που δεν θα επρεπε... πχ οταν δινω τα γραμματα ι ι σ π τ εμφανιζει κ καποιες λεξεις που δεν εχουν αυτα τα γραμματα.. κατα τα αλλα δουλευει...δεν ειναι σωστος απο αποψη χρονου γτ κανει αρκετες πραξεις που μπορουν να αποφευχθουν αλλα αρχικα θελω να το κανω να δουλεψει σωστα κ μετα θα τον κανω πιο καλο.. αργοτερα που θα μπορεσω θα ανεβασω κ τον κωδικα
kotopoulos Δημοσ. 10 Νοεμβρίου 2010 Μέλος Δημοσ. 10 Νοεμβρίου 2010 στο spoiler ειναι ο κωδικας..αυτο που μ κανει ειναι οτι εμφανιζει καποιες λεξεις που περιεχουν γραμματ που δεν εχω δωσει στην γραμματοσειρα πιο συγκεκριμενα για γραμματοσειρα (i i p s t) οι λαθος λεξεις που εμφανιζει ειναι αυτες Char : Ai Char : ND Char : Nis Char : VA Char : VD Char : Vitsi Char : WS κ αυτες τις εμφανιζει αμεσως ενω τις κανονικες λεξεις που επρεπε να εμφανισει καθυστερει λιγο.. ανεβασα κ το λεξικο που εχω >http://rapidshare.com/files/429967042/gwl.txt import java.io.DataInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.swing.JOptionPane; public class Reader { public static void main(String[] args) { String ch,test_letters; char[] res = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; char test[], list[]; int i, j, flag,freqtbl[]; freqtbl = new int[26]; test_letters = JOptionPane.showInputDialog("Δωσε γραμματοσειρα "); test = test_letters.toCharArray(); try { FileInputStream fin = new FileInputStream("C:\\gwl.txt"); DataInputStream din = new DataInputStream(fin); ch = din.readLine(); while (ch != null) { for (i = 0; i < 26; i++) { freqtbl=0; } flag=0; list = ch.toCharArray(); for (i = 0; i < test.length; i++) { for (j = 0; j < 26; j++) { //συγκρινει ενα ενα τα γραμματα που δωσαμε σαν εισοδο με το αλφαβητο if (res[j] == test) { //κ οταν βρει ιδιο γραμμα αυξανει κατα ενα την τιμη του πινακα freqtbl[j]++; } } } for (i = 0; i < list.length; i++) { for (j = 0; j < 26; j++) { if (res[j] == list) { //συγκρινει ενα ενα τα γραμματα της λεξης απο το αρχειο με το αλφαβητο freqtbl[j]--; //κ οταν βρει ιδιο γραμμα μειωνει κατα ενα την τιμη του πινακα } } } j = 0; while (j < 26 && flag == 0) { if (freqtbl[j] < 0) { flag = 1; //αν βρει οτι υπαρχει αρνητικη τιμη σημαινει οτι η λεξει του αρχειου εχει γραμμα που } //δεν εχει η εισοδος που δωσαμε j++; } if (flag == 0 && list.length > 1) { //αν δεν εχει αρνητικη τιμη ο πινακας κ να εμφανισει λεξεις που εχουν παραπανω απο ενα γραμμα System.out.println("Char : " + ch); } ch = din.readLine(); } } catch (FileNotFoundException fe) { System.out.println("FileNotFoundException : " + fe); } catch (IOException ioe) { System.out.println("IOException : " + ioe); } } }
virxen75 Δημοσ. 10 Νοεμβρίου 2010 Δημοσ. 10 Νοεμβρίου 2010 (επεξεργασμένο) αλλαγές > if (res[j] == test[i] || (res[j]+'A'-'a')==test[i]) { //κ οταν βρει ιδιο γραμμα αυξανει κατα ενα την τιμη του πινακα freqtbl[j]++; } } } for (i = 0; i < list.length; i++) { for (j = 0; j < 26; j++) { if (res[j] == list[i] || (res[j]+'A'-'a')==list[i]) { //συγκρινει ενα ενα τα γραμματα της λεξης απο το αρχειο με το αλφαβητο freqtbl[j]--; //κ οταν βρει ιδιο γραμμα μειωνει κατα ενα την τιμη του πινακα } Επεξ/σία 10 Νοεμβρίου 2010 από virxen75
kotopoulos Δημοσ. 10 Νοεμβρίου 2010 Μέλος Δημοσ. 10 Νοεμβρίου 2010 αν δώσεις γραμματοσειρά a b cτότε η λέξη abca είναι έγκυρη? οχι... πρεπει να φτιαχνεται με τα γραμματα που εχεις δωσει.. σκεψου να παιζεις scramble..κ προσπαθεις να φτιαξεις μια λεξη με τα γραμματα που εχεις στο χερι σ!
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα