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

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

Δημοσ.

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

 

Και η δική μου απάντηση για να βρεις πόσες φορές εμφανίζεται μια λέξη ήταν. Το να βρεις αν ένας πίνακας είναι γεμάτος είναι safety measure κατά τη διάρκεια της διαδικασίας κατά την οποία ψάχνεις να βρεις πόσες φορές εμφανίζεται μια λέξη.

 

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

 

Είναι όμως ο πλέον διαδεδομένος τρόπος, και κατά την γνώμη μου είναι θεμελιώδης η κατανόησή του, προκειμένου να μπορέσεις να λύσεις την άσκηση.

 

αυτό που κάνω εγώ είναι ότι δημιουργώ ένα πινάκα κ[1000][1000] και αποθηκευω μια λέξη σα κάθε γραμμή και μετά με την strcmp ελέγχω αν είναι αυτές οι δυο ίδιες αλλά αυτή ελενχει έναν έναν χαρακτήρα και μου αυξάνει τον μετρητή και εγώ θέλω να των αυξήσει μονο μια φορά

...

 

Το ότι δεσμεύεις έναν πίνακα 1000x1000 χαρακτήρων όχι μόνο δεν ενδείκνυται για την συγκεκριμένη άσκηση, αλλά είναι κι εσφαλμένο. Π.χ. τι θα κάνεις αν το Ν που θα σου δώσει ο χρήστης είναι ας πούμε 1001? Οι πίνακές σου θα πρέπει να οριστούν με N στοιχεία στην 1η τους διάσταση (αν είναι 2Δ) ή στην μόνη τους διάσταση (αν είναι 1Δ). Όσα στοιχεία δηλαδή σου δώσει ο χρήστης (όπως λέει η εκφώνηση)... που στην πράξη εν πολλοίς σημαίνει: dynamic (allocated) array. Οτιδήποτε άλλο είναι αχρείαστα inefficient ή/και πολύπλοκο.

 

Επίσης, το να αποθηκεύεις αδιακρίτως όλες τις λέξεις που διαβάζεις μέσα σε έναν πίνακα (επιτρέποντας δηλαδή ίδιες λέξεις σε διαφορετικές θέσεις) και περιπλέκει αχρείαστα τον κώδικα (πολύ περισσότερο από αυτά που σου έχουμε προτείνει στο νήμα) και τον κάνει πάρα πολύ in-efficient (ειδικά αν σκέφτεσαι να τον ταξινομήσεις κιόλας τον πίνακα).

 

Πες ότι τις πέρασες τις λέξεις στον πίνακα, διπλο-τριπλο-περασμένες σε διαφορετικές θέσεις. Κατόπιν πως σκοπεύεις να μετρήσεις ποια εμφανίζεται περισσότερες φορές;

 

Με άλλα λόγια, προσπάθησε να καταλάβεις τι είναι, πως και γιατί χρησιμοποιούμε ιστογράμματα για αυτές τις δουλειές. Είτε από την αρχική μου απάντηση, είτε από τα βιβλία σας, είτε από το Google, είτε από οπουδήποτε αλλού. Αν δεν σε καλύπτει η αρχική μου απάντηση, ευχαρίστως να σου διευκρινήσω τα σημεία που θα μου υποδείξεις.

 

Αρκεί να μην θέλεις να σου γράψω εγώ και το υπόλοιπο 1/4 που έχει απομείνει χωρίς κώδικα σε αυτό το νήμα στη λύση της άσκησης :P

Δημοσ.

Και η δική μου απάντηση για να βρεις πόσες φορές εμφανίζεται μια λέξη ήταν. Το να βρεις αν ένας πίνακας είναι γεμάτος είναι safety measure κατά τη διάρκεια της διαδικασίας κατά την οποία ψάχνεις να βρεις πόσες φορές εμφανίζεται μια λέξη.

 

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

 

Είναι όμως ο πλέον διαδεδομένος τρόπος, και κατά την γνώμη μου είναι θεμελιώδης η κατανόησή του, προκειμένου να μπορέσεις να λύσεις την άσκηση.

 

 

 

Το ότι δεσμεύεις έναν πίνακα 1000x1000 χαρακτήρων όχι μόνο δεν ενδείκνυται για την συγκεκριμένη άσκηση, αλλά είναι κι εσφαλμένο. Π.χ. τι θα κάνεις αν το Ν που θα σου δώσει ο χρήστης είναι ας πούμε 1001? Οι πίνακές σου θα πρέπει να οριστούν με N στοιχεία στην 1η τους διάσταση (αν είναι 2Δ) ή στην μόνη τους διάσταση (αν είναι 1Δ). Όσα στοιχεία δηλαδή σου δώσει ο χρήστης (όπως λέει η εκφώνηση)... που στην πράξη εν πολλοίς σημαίνει: dynamic (allocated) array. Οτιδήποτε άλλο είναι αχρείαστα inefficient ή/και πολύπλοκο.

 

Επίσης, το να αποθηκεύεις αδιακρίτως όλες τις λέξεις που διαβάζεις μέσα σε έναν πίνακα (επιτρέποντας δηλαδή ίδιες λέξεις σε διαφορετικές θέσεις) και περιπλέκει αχρείαστα τον κώδικα (πολύ περισσότερο από αυτά που σου έχουμε προτείνει στο νήμα) και τον κάνει πάρα πολύ in-efficient (ειδικά αν σκέφτεσαι να τον ταξινομήσεις κιόλας τον πίνακα).

 

Πες ότι τις πέρασες τις λέξεις στον πίνακα, διπλο-τριπλο-περασμένες σε διαφορετικές θέσεις. Κατόπιν πως σκοπεύεις να μετρήσεις ποια εμφανίζεται περισσότερες φορές;

 

Με άλλα λόγια, προσπάθησε να καταλάβεις τι είναι, πως και γιατί χρησιμοποιούμε ιστογράμματα για αυτές τις δουλειές. Είτε από την αρχική μου απάντηση, είτε από τα βιβλία σας, είτε από το Google, είτε από οπουδήποτε αλλού. Αν δεν σε καλύπτει η αρχική μου απάντηση, ευχαρίστως να σου διευκρινήσω τα σημεία που θα μου υποδείξεις.

 

Αρκεί να μην θέλεις να σου γράψω εγώ και το υπόλοιπο 1/4 που έχει απομείνει χωρίς κώδικα σε αυτό το νήμα στη λύση της άσκησης :P

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

Δημοσ.

Τι πανε και τους βαζουνε...

 

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

 

Θυμάμαι τουλάχιστον 2 ακόμα νήματα που εγώ προσωπικά έχω δώσει κώδικα και για το ένα και για το άλλο, αλλά δεν θυμάμαι σε ποια.

 

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

 

@mike2012:

 

Παρακαλώ :)

 

Όποια περαιτέρω διευκρίνηση χρειάζεσαι, πόσταρέ την στο νήμα.

 

 

EDIT

 

Κάτι βρήκα μέσω google τελικά:

 

1. http://www.insomnia.gr/topic/424639-%CE%B5%CF%85%CE%BA%CE%BF%CE%BB%CE%B7-%CE%AC%CF%83%CE%BA%CF%83%CE%B7-%CF%83%CF%84%CE%B7%CE%BD-c/page__st__45#entry4365903

2. http://www.insomnia.gr/topic/424639-%CE%B5%CF%85%CE%BA%CE%BF%CE%BB%CE%B7-%CE%AC%CF%83%CE%BA%CF%83%CE%B7-%CF%83%CF%84%CE%B7%CE%BD-c/page__st__75#entry4370574

3. http://www.insomnia.gr/topic/424639-%CE%B5%CF%85%CE%BA%CE%BF%CE%BB%CE%B7-%CE%AC%CF%83%CE%BA%CF%83%CE%B7-%CF%83%CF%84%CE%B7%CE%BD-c/page__st__45#entry4367194

4. http://www.insomnia.gr/topic/432317-%CF%80%CF%81%CF%8C%CE%B2%CE%BB%CE%B7%CE%BC%CE%B1-%CE%BC%CE%B5-%CE%AC%CF%83%CE%BA%CE%B7%CF%83%CE%B7-%CF%83%CF%84%CE%B7%CE%BD-c/#entry4489887

 

Δημοσ.

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

Δημοσ.

Να 'σαι καλά φίλε mike2012 :)

Καλή συνέχεια!

 

ΥΓ. Τελικά με ιστόγραμμα την έλυσες; (και με πεπερασμένο μέγιστο μήκος λέξεων; )

Δημοσ.

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

 

Θυμάμαι τουλάχιστον 2 ακόμα νήματα που εγώ προσωπικά έχω δώσει κώδικα και για το ένα και για το άλλο, αλλά δεν θυμάμαι σε ποια.

 

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

 

 

Ελα τωρα... Ο τυπος δεν ηξερε απο πινακες αρα λογικα δεν τους τα εμαθαν. Και πανε και βαζουν ασκηση που κανει κρα οτι θελει map;;;;; Ελεος.

Δημοσ.

 

 

Ελα τωρα... Ο τυπος δεν ηξερε απο πινακες αρα λογικα δεν τους τα εμαθαν. Και πανε και βαζουν ασκηση που κανει κρα οτι θελει map;;;;; Ελεος.

 

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

 

ΥΓ. Πάντως με απροσδιόριστο μήκος λέξεων, δεν θα την χαρακτηρίζαμε και "piece of cake" (ειδικά αν έπρεπε να το κάνουν κι efficiently).

Δημοσ.

για να μην ξεκιναω καινουριο topic εχω κι εγω μια ασκηση που την εχω κανει,αλλα δεν τρεχει σωστα και μου εχει σπασει το κεφαλι..

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

ο,τι τιμη και αν βαλω ομως,μου επιστρεφει 0.0000000 , γιατι γινεται αυτο??

>
#include <stdio.h>
#include <stdlib.h>

double feet,meters;
double feet_to_meters(double feet);

int main() {
   printf ("\nfeet:");
   scanf("%f", &feet);
   
   printf("Meters : %f", feet_to_meters(feet));
   return 0;
}

double feet_to_meters(double feet){
   meters = feet / 3.28 ;
   return (meters);
}

Δημοσ.

...

ο,τι τιμη και αν βαλω ομως,μου επιστρεφει 0.0000000 , γιατι γινεται αυτο??

...

>
...
   scanf("%f", &feet);
...

 

Διότι η scanf θέλει %lf για να διαβάσει double (με %f αναμένει float).

Δημοσ.

Παρακαλώ :)

 

Btw, consider...

 

>
#include <stdio.h>

// --------------------------------
double feet_to_meters( double feet )
{
   return feet / 3.28 ;
}
// --------------------------------
int main( void )
{
   double feet = 0.0;

   printf ("\nfeet: ");
   scanf("%lf", &feet);

   printf("Meters: %f\n", feet_to_meters(feet));

   return 0;
}

 

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

Δημοσ.

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

και έτσι μου βγήκε με την strcmp

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

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

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

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

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

Σύνδεση

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

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