alan2 Δημοσ. 22 Φεβρουαρίου 2012 Μέλος Δημοσ. 22 Φεβρουαρίου 2012 προσπαθούσα να βρώ τροπο να ελεγχει αν οι γραμμές του πίνακα ειναι μονο αλφαβητικοί χαρακτήρες, δεν απαγορευται κατι η διορθωμένη ιδεα μου >for(k=0;k<StringLength(document_table[x]);k++){ if (isalpha(document_table[x][k])){ legal=true; } else {legal=false ; break;} } } }
migf1 Δημοσ. 22 Φεβρουαρίου 2012 Δημοσ. 22 Φεβρουαρίου 2012 ...δεν απαγορευται κατι... Οπότε σε αυτήν την περίπτωση, προσωπικά περιμένω να ποστάρεις κώδικα που να ακολουθεί αυτά που σου έχουμε προτείνει στο νήμα πριν κοιτάξω την τελευταία σου απορία. Κι αυτό διότι δεν έχει νόημα να ασχολούμαι να απαντάω σε απορίες αφού είτε απαντάω είτε όχι είναι το ίδιο και το αυτό για εκείνον που ρώτησε ΥΓ. Btw, η C παρέχει έτοιμη συνάρτηση για τον υπολογισμό τρέχοντος μήκους ενός c-string, την: strlen().
alan2 Δημοσ. 23 Φεβρουαρίου 2012 Μέλος Δημοσ. 23 Φεβρουαρίου 2012 νομίζω ο παρακάτω κώδικας ειναι μια βελτίωση. >#include<stdio.h> #define M 5 #define N 5 #include <string.h> #include <ctype.h> void initialize (char document_table[][M],int ); int size=5; char document_table[N][M]; int legal; int main(void){ legal=true; do{ initialize ( document_table, size ); }while(legal==false ); scanf("%d"); } void initialize (char document_table[][M],int size ) { int x,k; for(x=0;x<N;x++){ //fgets(document_table[x], sizeof(document_table[x]), stdin); δεν ξερω γιατι δεν δουλευει gets(document_table[x]); for(k=0;k<strlen(document_table[x]);k++){ if (isalpha(document_table[x][k])){ legal=true; } else {legal=false ; break;} } } }
virxen75 Δημοσ. 23 Φεβρουαρίου 2012 Δημοσ. 23 Φεβρουαρίου 2012 1) δηλώνεις global μεταβλητή τον πίνακα σου ----->char document_table[N][M]; και μετά τον περνάς παράμετρο στην συνάρτσηση? --->initialize μήπως να το ξαναδείς? 2) αφού έχεις το ---->#define N 5 τι το θες το size? μήπως είναι το ίδιο? 3)void initialize (char document_table[][M],int size ) για πες μου που χρησιμοποιείς το size και το περνάς σαν παράμετρο στην συνάρτηση?
imitheos Δημοσ. 23 Φεβρουαρίου 2012 Δημοσ. 23 Φεβρουαρίου 2012 Ως εδώ είσαι οκ. Με τη παρούσα μορφή του κώδικα, το size μπορείς να το παραλείψεις πιστεύω. 2) αφού έχεις το ---->#define N 5 τι το θες το size? μήπως είναι το ίδιο? 3)void initialize (char document_table[][M],int size ) για πες μου που χρησιμοποιείς το size και το περνάς σαν παράμετρο στην συνάρτηση? Το παραπάνω quote μου είναι από το μήνυμα 2 και τώρα είμαστε στο μήνυμα 19. Καταλαβαίνω ότι έχεις καλές προθέσεις αλλά γιατί χαραμίζεις τα λόγια σου ? Και στο μήνυμα 49 να φτάσουμε δεν θα το διορθώσει.
migf1 Δημοσ. 23 Φεβρουαρίου 2012 Δημοσ. 23 Φεβρουαρίου 2012 Το παραπάνω quote μου είναι από το μήνυμα 2 και τώρα είμαστε στο μήνυμα 19. Καταλαβαίνω ότι έχεις καλές προθέσεις αλλά γιατί χαραμίζεις τα λόγια σου ? Και στο μήνυμα 49 να φτάσουμε δεν θα το διορθώσει. +1 Καθώς επίσης: εξακολουθεί να χρησιμοποιεί την gets(), εξακολουθεί να χρησιμοποιεί δυσανάγνωστα ονόματα μεταβλητών, σταθερών & συναρτήσεων, εξακολουθεί να χρησιμοποιεί αλλοπρόσαλλη στοίχιση στον κώδικα. Για να είμαι δίκαιος, ίσως μερικά από αυτά να οφείλονται είτε στο ότι ο φίλος alan2 έχει πίεση χρόνου, είτε επειδή είναι άπειρος, είτε και τα δυο. Είτε έτσι όμως είτε αλλιώς, αν είχε ακολουθήσει τις προτροπές μας, το σίγουρο είναι πως α) θα τον έπαιρνε πολύ λιγότερο χρόνο να ολοκληρώσει τον υπόλοιπο κώδικα (θα ήταν ευανάγνωστος) β) θα ανέβαζε 1-2 βαθμούς (ίσως και περισσότερους) την τελική βαθμολογία που θα έπαιρνε για την άσκηση γ) θα είχε μάθει 5 παραπάνω πράγματα από τον μέσο όρο της τάξης του και δ) θα μας έδινε ερέθισμα να τον βοηθήσουμε και στις υπόλοιπες απορίες του.
alan2 Δημοσ. 23 Φεβρουαρίου 2012 Μέλος Δημοσ. 23 Φεβρουαρίου 2012 (επεξεργασμένο) δεν εχω πιεση χρονου, εχω 10 μερες προθεσμια. Να επισημανω οτι void initialize (char document_table[][M],int size ) είναι ο τρόπος με τον οποιο πρέπει να δηλωθεί η συνάρτηση σύμφωνα με την εκφώνηση της άσκησης.οπου size το πληθος των γραμων του πινακα. N o αριθμός των αλφαριθμητικών Μ-1 το μεγιστο μήκος καθενός τους. Επεξ/σία 23 Φεβρουαρίου 2012 από alan2
migf1 Δημοσ. 24 Φεβρουαρίου 2012 Δημοσ. 24 Φεβρουαρίου 2012 δεν εχω πιεση χρονου, εχω 10 μερες προθεσμια. Να επισημανω οτι void initialize (char document_table[][M],int size ) είναι ο τρόπος με τον οποιο πρέπει να δηλωθεί η συνάρτηση σύμφωνα με την εκφώνηση της άσκησης.οπου size το πληθος των γραμων του πινακα. N o αριθμός των αλφαριθμητικών Μ-1 το μεγιστο μήκος καθενός τους. Εμ για αυτό σε ρώτησα για τη εκφώνηση. Πόσταρέ την να ξέρουμε και εμείς τι κατευθύνσεις να δώσουμε
alan2 Δημοσ. 24 Φεβρουαρίου 2012 Μέλος Δημοσ. 24 Φεβρουαρίου 2012 τωρα προσπαθω να φριαξω μια αλλη συναρτηση void word_histogram(char document_table[][M],int size) που θα υπολογιζει τα μήκη των λέξεων που υπάρχουν στο σύνολο των κειμένων που διατηρεί ο πίνακας και θα εμφανίζει το ιστόγραμμα των μηκών με γραφικό τρόπο, πχ ενα* αντιστοιχεί στην εφάνιση μιας λέξης αντιστοιχου μήλους.πχ > void word_histogram(char document_table[][M],int size){ int c,x=0; int freq[9]={0}; char *pch; printf("klithike"); for (x=0;x<size;x++) { pch=strtok(document_table[x]," "); while (pch!=NULL) { pch=strtok(NULL," "); c=StringLength(pch); freq[c]++; } } printf("word zize.......frequency"); for(c=1;c<9;c++){ printf("%d...........%d",c,freq[c]); for(x=0;x<freq[c];x++) printf("*"); printf("\n"); } } που δεν τρεχει ομως σωστα.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα