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

Άσκηση σε γλωσσά c


mike2012

Ερώτηση

Παιδιά έχω να κάνω μια άσκηση η οποία λέει το έξεις :

 

Γράψτε ένα πρόγραμμα που θα διαβάζει από το πληκτρολόγιο έναν ακέραιο αριθμό

N, στη συνέχεια θα διαβάζει N λέξεις, θα υπολογίζει την πιο συχνή λέξη ανάμεσα στις N και

θα την τυπώνει.

 

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

 

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

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

  • 0

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

 

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

 

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

 

 

 

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

 

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

 

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

 

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

 

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

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

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

 

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

 

Θυμάμαι τουλάχιστον 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

 

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

 

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

 

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

 

 

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

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

 

 

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

 

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

 

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

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

για να μην ξεκιναω καινουριο 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

...

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

...

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

 

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

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Παρακαλώ :)

 

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;
}

 

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

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

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

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

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.