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

Πλήθος λέξεων x γραμμάτων σε έγγραφο


ulb

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

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

Καλησπέρα και καλή χρονιά,

Έχω μια άσκηση που θέλει να υλοποιήσουμε ένα πρόγραμμα όπου θα βρίσκει το πλήθος των λέξεων τριών γραμμάτων, τεσσάρων κλπ σε ένα έγγραφο.
Ψάχνω λοιπόν κάποιο τρόπο ώστε να μετράω πόσες φορές υπάρχουν λέξεις 3 γραμμάτων για παράδειγμα στο έγγραφο, ώστε να επαληθεύσω τα αποτέλεσματα μου.

Δοκίμασα με το Notepad ++ αλλά δίχως επιτυχία και φαίνεται ότι και ο όγκος του εγγράφου το ζορίζει στην αναζήτηση.

2RjvHyu.png

Ευχαριστώ εκ τον προτέρων!

Επεξ/σία από ulb
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Με ποια γλώσσα προγραμματισμού; Μπορώ να σου δώσω κάποια code snippets σε Java, αλλά όχι ολόκληρη την λύση!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

2 ώρες πριν, asxs είπε

Με ποια γλώσσα προγραμματισμού; Μπορώ να σου δώσω κάποια code snippets σε Java, αλλά όχι ολόκληρη την λύση!

Δεν με απασχολεί, ψάχνω απλά με ποιο τρόπο να κάνω επαλήθευση τα αποτελέσματα.

Ψάχνω δηλαδή στο αρχείο (έγγραφο) να δω πόσες φορές υπάρχουν λέξεις με τρία γράμματα πχ ώστε να δω αν τα αποτελέσματα του προγράμματος συμπίπτουν.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Θα εχεις ενα πινακα int μήκους 50 ( ας πουμε δεν υπάρχει λεξη με πανω απο 50 γραμματα), θα τρέξεις το αρχειο σου και για καθε λεξη που βρισκεις θα αυξανεις τη συγκεκριμενη θεση του πινακα κατα 1.

Π.χ. αν η λέξη ηταν μήκους 5 θα πεις a[5]++;  

while((word=getNextword())!=null)
{
   a[word.length]++;
}

for(i=1; i<50; i++)
   print("Λεξεις με μηκος " + i +" : ", a[i]);

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Unit testing λεγεται φιλε μου. Βαζεις κανα 2 κειμενα με γνωστο αριθμο λεξεων (δεν χρειαζεται να ειναι μεγαλα, 2-3 σειρες το καθενα) και ελεγχεις τα αποτελέσματα. 

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

Δεν μπορώ να το κάνω κάπως εύκολα και γρήγορα με ένα Notepad++ όπως ψάχνω μια λέξη (πχ test), στο Word, στη γραμμή εντολών ή σε κάτι αντίστοιχο;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
14 λεπτά πριν, ulb είπε

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

Δεν μπορώ να το κάνω κάπως εύκολα και γρήγορα με ένα Notepad++ όπως ψάχνω μια λέξη (πχ test), στο Word, στη γραμμή εντολών ή σε κάτι αντίστοιχο;

Όπως σου απάντησα παραπάνω, αυτό που θέλεις είναι unit testing, δεν χρειαζεται να τεσταρεις το ιδιο κειμενο δε και καλα, αλλά άλλα, μικροτερα κειμενα. Αυτο που ψαχνεις δεν εχει πρακτικη αξια, οποτε δυσκολο να βρεις προγραμματάκι να το κανει.  

Και στην τελική αυτό που θέλεις να κανείς είναι τόσο απλό, που δεν χρειάζεσαι και καμία τρελή επαλήθευση. Κάνε debug τις πρωτες 2 γραμμες, αμα τα αποτελέσματα που παίρνεις είναι σωστά, έτσι θα είναι και για τις υπόλοιπες. Άμα θέλεις δε και καλά, χρημοποιησε ένα ονλάιν regex, και βάζε regex για 1-2-3... μεγέθους λέξεις και σημείωνε τα αποτελέσματα. 

Επεξ/σία από Papakaliati
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
16 λεπτά πριν, ulb είπε

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

Δεν μπορώ να το κάνω κάπως εύκολα και γρήγορα με ένα Notepad++ όπως ψάχνω μια λέξη (πχ test), στο Word, στη γραμμή εντολών ή σε κάτι αντίστοιχο;

Καλή χρονιά, σ' αυτό που ρωτάς...

Στο notepad++:

1. Πατάς ctrl + F (αναζήτηση)

2. Στο πεδίο "search mode" επιλέγεις "Regular expression"

3. Στο πεδίο αναζήτησης γράφεις (έστω ότι θες να ψάξεις λέξεις με ακριβώς 3 γράμματα): \b(\w{3})\b

4. Μετακινείς τον δρομέα στην αρχή του κειμένου και επιλέγεις "Count" 

5. Στο κάτω μέρος θα σου εμφανιστεί πόσες φορές βρέθηκαν λέξεις με μήκος 3. 

6. Αν θες να ψάξεις για λέξεις με 6 γράμματα, αλλάζεις τον αριθμό 3 σε 6 κ.ο.κ. 

Κάνε τις δοκιμές σου και τσέκαρε τα αποτελέσματα με το πρόγραμμά σου. 

Σημείωση: Το \w ταιριάζει οποιοδήποτε γράμμα ή αριθμό. Αν θες να συμπεριλάβεις στην αναζήτηση λέξεις που περιέχουν συγκεκριμένους χαρακτήρες θα πρέπει να αλλάξεις τη φράση ταιριάσματος. Αλλά δε νομίζω ότι χρειάζεται στην περίπτωσή σου.

 

Επεξ/σία από marios28
  • Thanks 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@marios28 & @htaccess Σας ευχαριστώ! Αυτό το τόσο απλό έψαχνα αλλά δεν θυμόμουν την σωστή σύνταξη τους και είχα χάσει την μπάλα. Ευχαριστώ και πάλι!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

38 λεπτά πριν, ulb είπε

@marios28 & @htaccess Σας ευχαριστώ! Αυτό το τόσο απλό έψαχνα αλλά δεν θυμόμουν την σωστή σύνταξη τους και είχα χάσει την μπάλα. Ευχαριστώ και πάλι!

@ulb δεν χρειάζεται να "θυμάσαι" τίποτα, το googlareis και το βρίσκεις. Η δοκιμάζεις στο regex.com μέχρι να βρεις το σωστό regex. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

Αρα θα κατσεις να κανεις 20 φορες πχ το Search?
γιατι μπορει να υπαρχουν και λεξεις που ειναι πανω απο 20 γραμματα 
Η σωστη απαντηση ειναι αυτο που σου ειπε ο albNik και η υλοποιηση εδω. https://zgameprovider.com/count/


 


 

Επεξ/σία από papmel
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

16 λεπτά πριν, papmel είπε

Αρα θα κατσεις να κανεις 20 φορες πχ το Search?
γιατι μπορει να υπαρχουν και λεξεις που ειναι πανω απο 20 γραμματα 
Η σωστη απαντηση ειναι αυτο που σου ειπε ο albNik και η υλοποιηση εδω. https://zgameprovider.com/count/

H "σωστή" απάντηση στην ερώτησή του είναι ό,τι τον βολεύει (1 λεπτό θα του πάρει για να αλλάξει τον αντίστοιχο αριθμό και να πατήσει 10 φορές το search) για να επαληθεύσει/τεστάρει το πρόγραμμά του και όχι για να ξανακάνει άλλη μια υλοποίηση που θα τεστάρει την πρώτη. Αυτό έγραψε πολλές φορές.

Η δική σου απάντηση, (το link) είναι η βέλτιστη λύση σ' αυτό που ρώτησε. Αυτό ήθελε εξ' αρχής. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν χρειάζεται να αλλάξει κανένα αριθμό, το γράφει σε bash script και το τρέχει μία φορά.

#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24;
do 
echo "counter: $i" && grep -o -w "\w\{$i\}" filename | wc -w 
done

Εώς 24 γράμματα, αν θέλει παραπάνω προσθέτει.  :)

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

18 λεπτά πριν, htaccess είπε

Δεν χρειάζεται να αλλάξει κανένα αριθμό, το γράφει σε bash script και το τρέχει μία φορά.

Εώς 24 γράμματα, αν θέλει παραπάνω προσθέτει.  :)

Άψογα. Πάντως αναφέρθηκα στη λύση μέσω notepad++. Τελωσπάντων με οποιονδήποτε τρόπο ο άνθρωπος εξυπηρετήθηκε.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα
  • Δημιουργία νέου...