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

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

Δημοσ.
οχι...

πρεπει να φτιαχνεται με τα γραμματα που εχεις δωσει..

σκεψου να παιζεις scramble..κ προσπαθεις να φτιαξεις μια λεξη με τα γραμματα που εχεις στο χερι σ!

 

άρα μπορεις να πεις ότι αν το μέγεθος της λέξης είναι μεγαλύτερο από το σύνολο

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

  • Απαντ. 31
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσ.

>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[i] = 0;
         }
         flag = 0;
         list = ch.toCharArray();
         for (i = 0; i < test.length; i++) {
            for (j = 0; j < 26; j++) { //συγκρινει ενα ενα τα γραμματα που δωσαμε σαν εισοδο με το αλφαβητο
                   if (res[j] == test[i]) { //κ οταν βρει ιδιο γραμμα αυξανει κατα ενα την τιμη του πινακα
                             freqtbl[j]++;
                   }
             }
        }
        for (i = 0; i < list.length; i++) {
              for (j = 0; j < 26; j++) {
                   if (res[j] == list[i]) { //συγκρινει ενα ενα τα γραμματα της λεξης απο το αρχειο με το αλφαβητο
                          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);
  }
}
}

 

Βάζε το σε code (αυτό με τη δίεση) για να διαβάζεται..!

Δημοσ.

ναι..

αυτο που λες γινετε στο τελος στον πινακα freqtbl

γιατι αν καποιο γραμμα απο τη λεξη δεν υπαρχει στη γραμματοσειρα που δινεις

η τιμη σε εκεινη τη θεση θα ειναι 0 κ με το -- που θα γινει θα παει -1

οποτε

if (freqtbl[j] < 0) {

flag = 1;

}

εδω θα γινει το flag 1 κ δεν θα μπαινει στην if οποτε δεν θα εμφανιζει τπτ

Δημοσ.

μία πιο απλή λύση είναι

 

1)ταξινομεις την γραμματοσειρά του χρήστη από το μικρότερο γράμμα στο μεγαλύτερο

2)αρχιζεις το loop για να διαβάσεις τις λέξεις από το αρχείο

-ταξινομεις την λέξη που διαβάζεις από το αρχείο από το μικρότερο γράμμα στο μεγαλύτερο

-ελέγχεις αν

η λέξη έχει μήκος <= του μήκους της γραμματοσειράς του χρήστη

και

αν η λέξη αποτελεί μέρος της γραμματοσειράς του χρήστη ή είναι ίση(indexOf>=0)

τέλος loop

Δημοσ.

virxen75 με τις αλλαγες που ειπες δουλεψε κανονικα αλλα μπορεις να εξηγησεις λιγο τι ακριβως κανει

για να το εμπεδωσω κιολας :)

Δημοσ. (επεξεργασμένο)

δεν λάμβανες υπόψιν το case των γραμματων

 

άλλο α και άλλο Α

 

 

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

 

>
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,chtest,test_letters,test;
test_letters = JOptionPane.showInputDialog("Δωσε γραμματοσειρα ");
test = getAZ(test_letters);
System.out.println("test="+test);
try {
	FileInputStream fin = new FileInputStream("gwl.txt");
	DataInputStream din = new DataInputStream(fin);
	ch = din.readLine();
	while (ch != null) {
		chtest=getAZ(ch);
		if ((chtest.length()<=test.length()) && (chtest.length()>1) && check(chtest,test) )
			System.out.println("Char : " + ch);

	ch = din.readLine();
	}
} catch (FileNotFoundException fe) {

	System.out.println("FileNotFoundException : " + fe);

} catch (IOException ioe) {
	System.out.println("IOException : " + ioe);
}
}
private static boolean check(String file,String user){
int i,count=-1;
for (i=0;i<file.length();i++){
	count=user.indexOf(file.charAt(i),count+1);
	if (count<0)	
		return false;
}
return true;
}
private static String getAZ(String a){
int i,j;
String AZ="";
char test[]=a.toCharArray();
for (i=0;i<test.length;i++)
for (j=0;j<test.length;j++)
	if (test[j]>test[i]){
		char temp=test[j];
		test[j]=test[i];
		test[i]=temp;
	}
for (i=0;i<test.length;i++)
	if (test[i]!=' ')
		AZ=AZ.concat(""+test[i]);
return AZ;
}
}

Επεξ/σία από virxen75
Δημοσ.

virxen75 μπορουμε με καποιο τροπο να το κανουμε να το εμφανιζει σε πινακα??

(γινετε δηλαδη απλα αν μπορεις να με βοηθησεις να το υλοποιησω)

θελω πχ στη μια στηλη να εχει ενα αριθμο που αυξανεται ωστε να δειχνει ποσες λεξεις βρηκε

κ διπλα μια στηλη με τις λεξεις..

Δημοσ.

έτσι εννοείς?

 

 

|1|σγφσσδφ|

|2|δφγδσφγδγγ|

.........

 

και σε ποιον κώδικα?(τον δικό σου ή τον δικό μου)

 

 

μπορείς να κάνεις χρήση του ArrayList<String> lekseis=new ArrayList<String>();

και όταν βρεις μία λέξη--->lekseis.add("lexsi"); για να την προσθέσεις

 

περισσότερα εδώ

http://leepoint.net/notes-java/data/collections/lists/arraylist.html

Δημοσ.
το εχω κανει κ δουλευει με το μονο προβλημα

οτι εμφανιζει καποιες λεξεις που δεν θα επρεπε...

πχ οταν δινω τα γραμματα ι ι σ π τ

εμφανιζει κ καποιες λεξεις που δεν εχουν αυτα τα γραμματα..

κατα τα αλλα δουλευει...δεν ειναι σωστος απο αποψη χρονου γτ κανει αρκετες

πραξεις που μπορουν να αποφευχθουν αλλα αρχικα θελω να το κανω να δουλεψει σωστα κ μετα θα τον κανω πιο καλο..

 

αργοτερα που θα μπορεσω θα ανεβασω κ τον κωδικα

 

Δεν γίνεται αυτό παρά μόνο αν έχεις λάθη μέσα στον πολυχάρτη. Επίσης δεν κάνει περιττές πράξεις. Δηλαδή το να βρεις τη λίστα μέ όλες τις λέξεις που φτιάχνονται από μια σειρά γραμμάτων είναι O(1) αφού χρησιμοποιείς hashmap. Μετά για να σκανάρεις τη λίστα είναι γραμμικός χρόνος (linear time) στο μέγεθος της λίστας, που συνήθως είναι το πολύ 5-6 λέξεις.

Δημοσ.

virxen75 τωρα προλαβα κ κοιταξα αυτο που εδωσες..

δεν θελω ετσι ..θελω οπως ειπα κ λιγο πιο πριν..απλα να εχει κ λιγα γραφικα γιατι ειναι για ενα μαθημα κ θελω να φαινεται λιγο κομψο...

δοκιμασα αυτο που μ εδωσες ειναι καλο τα βγαζει κ ταξινομημενα αλλα τα βγαζει κ το ενα διπλα στο αλλο κ αν ειναι πολλες λεξεις αντε να βγαλεις ακρη...

ευχαριστω παντως για τη βοηθεια σ !

Δημοσ.
virxen75 τωρα προλαβα κ κοιταξα αυτο που εδωσες..

δεν θελω ετσι ..θελω οπως ειπα κ λιγο πιο πριν..απλα να εχει κ λιγα γραφικα γιατι ειναι για ενα μαθημα κ θελω να φαινεται λιγο κομψο...

δοκιμασα αυτο που μ εδωσες ειναι καλο τα βγαζει κ ταξινομημενα αλλα τα βγαζει κ το ενα διπλα στο αλλο κ αν ειναι πολλες λεξεις αντε να βγαλεις ακρη...

ευχαριστω παντως για τη βοηθεια σ !

 

μάλλον αυτό θες

 

>
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import java.util.Vector;
import javax.swing.JFrame;

public class Reade1r {
private static JTable table1;
  public static void main(String[] args) {
  	int count=0;
   Vector<String> columnNames = new Vector<String>();
   Vector<Vector> rowData = new Vector<Vector>();

   columnNames.addElement("A/A");
   columnNames.addElement("ANAGRAM WORD");
   table1 = new JTable(rowData, columnNames);
   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("gwl.txt");
     DataInputStream din = new DataInputStream(fin);
     ch = din.readLine();
     while (ch != null) {
        for (i = 0; i < 26; i++) {
           freqtbl[i] = 0;
         }
         flag = 0;
         list = ch.toCharArray();
         for (i = 0; i < test.length; i++) {
            for (j = 0; j < 26; j++) { //συγκρινει ενα ενα τα γραμματα που δωσαμε σαν εισοδο με το αλφαβητο
                   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]--; //κ οταν βρει ιδιο γραμμα μειωνει κατα ενα την τιμη του πινακα
}
               }
         }
         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);
                  count++;
                  		Vector<String> rowOne = new Vector<String>();
   						rowOne.addElement(""+count);
   						rowOne.addElement(ch);
                     	rowData.addElement(rowOne);
           }
           ch = din.readLine();
      }
} catch (FileNotFoundException fe) {

         System.out.println("FileNotFoundException : " + fe);

} catch (IOException ioe) {
         System.out.println("IOException : " + ioe);
  }
  JFrame frame1=new JFrame("Results");
  frame1.add(table1);
     frame1.setSize(400,300);
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame1.setVisible(true);
}
}

Δημοσ.

virxen75 εισαι αρχοντας :)

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

ευχαριστω :)

  • 1 μήνα μετά...
Δημοσ.

Καλησπερα κ καλη χρονια..

εχω να παραδωσω μια εργασια την δευτερα για ενα μαθημα..

εχω ετοιμο τον κωδικα(χαρη στη βοηθεια σας)απλα θελω στον πινακα που δημιουργει με τα αποτελεσματα να εχει κ μια μπαρα κυλισης...

παραθετω τον κωδικα...

ευχαριστω πολυ για τη βοηθεια σας :)

 

>package anagramatismos;

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.JScrollPane;


public class Main {

   private static JTable table1;

   public static void main(String[] args) {
       int count = 0;
       Vector<String> columnNames = new Vector<String>();
       Vector<Vector> rowData = new Vector<Vector>();
       JPanel panel = new JPanel();
       JFrame frame = new JFrame();
       columnNames.addElement("A/A");
       columnNames.addElement("ANAGRAM WORD");
       table1 = new JTable(rowData, columnNames);
       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("gwl.txt");
           DataInputStream din = new DataInputStream(fin);
           ch = din.readLine();
           while (ch != null) {
               for (i = 0; i < 26; i++) {
                   freqtbl[i] = 0;
               }
               flag = 0;
               list = ch.toCharArray();
               for (i = 0; i < test.length; i++) {
                   for (j = 0; j < 26; j++) { //συγκρινει ενα ενα τα γραμματα που δωσαμε σαν εισοδο με το αλφαβητο
                       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]--; //κ οταν βρει ιδιο γραμμα μειωνει κατα ενα την τιμη του πινακα
                       }
                   }
               }
               j = 0;
               while (j < 26 && flag == 0) {
                   if (freqtbl[j] < 0) {
                       flag = 1;
                   }
                   j++;
               }
               if (flag == 0 && list.length > 1) { //αν δεν εχει αρνητικη τιμη ο πινακας κ να εμφανισει λεξεις που εχουν παραπανω απο ενα γραμμα
                   count++;
                   Vector<String> rowOne = new Vector<String>();
                   rowOne.addElement("" + count);
                   rowOne.addElement(ch);
                   rowData.addElement(rowOne);
               }
               ch = din.readLine();
           }
       } catch (FileNotFoundException fe) {

           System.out.println("FileNotFoundException : " + fe);

       } catch (IOException ioe) {
           System.out.println("IOException : " + ioe);
       }
       JFrame frame1 = new JFrame("Results");
       frame1.add(table1);
       frame1.setSize(400, 1500);
       frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame1.setVisible(true);
   }
}

Δημοσ.
>
..................
       JFrame frame1 = new JFrame("Results");
       JScrollPane jsp=new JScrollPane(table1);//<-----------------1
       frame1.add(jsp);//<------------------------2
       frame1.setSize(400, 400);//<-------------------3
       frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame1.setVisible(true);
   }
}

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

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