nansu Δημοσ. 15 Δεκεμβρίου 2011 Δημοσ. 15 Δεκεμβρίου 2011 (επεξεργασμένο) καλησπέρα!! είμαι αρχάρια στον προγραμματισμό και αντιμετωπίζω κάποια δυσκολια στην εργασία που μας έχουν βάλει...μπορεί κάποιος να με βοηθήσει και να μου εξηγήσει που κάνω λάθος στο παρακάτω πρόγραμμα και δεν μου τρέχει? Επεξ/σία 19 Δεκεμβρίου 2011 από nansu
Tmark Δημοσ. 15 Δεκεμβρίου 2011 Δημοσ. 15 Δεκεμβρίου 2011 Καταρχάς βάλε code tags στον κώδικα να είναι πιο ευανάγνωστος. Για παράδειγμα: > { while(s[length]!='\0') length++; if (length==0) return (0); else return s[length-1]; }
CtrlFreak Δημοσ. 15 Δεκεμβρίου 2011 Δημοσ. 15 Δεκεμβρίου 2011 Προσπαθείς να περάσεις πίνακα σε συνάρτηση. Δεν γίνεται έτσι απλά πρέπει να χρησιμοποιήσεις δείκτες... νομίζω.
gallaki Δημοσ. 15 Δεκεμβρίου 2011 Δημοσ. 15 Δεκεμβρίου 2011 Προσπαθείς να περάσεις πίνακα σε συνάρτηση. Δεν γίνεται έτσι απλά πρέπει να χρησιμοποιήσεις δείκτες... νομίζω. Αμα περασεις πινακα δεν.χρειαζεται pointer τον παιρνει ετσι τον πινακα κ οι αλλαγες μενουν. Για μια μεταβλητη χρειαζεται pointer
thanos713 Δημοσ. 15 Δεκεμβρίου 2011 Δημοσ. 15 Δεκεμβρίου 2011 >#include<stdio.h> #include<stdlib.h> char endchar(char s[]); void reverse(char s[]); void cluster(char s[]); int length=0; int i=0; int main() { char s[20]; printf("dwse mia sumboloseira:\n"); scanf("%s",s); printf("o teleutaios xaraktiras einai o:%c\n",endchar(s)); reverse(s); printf("h antistrofh einai:%s\n", s); printf("dwse mia sumboloseira me mono b kai c\n"); scanf("%s",s); cluster(s); printf("%s\n", s); getchar(); getchar(); } char endchar(char s[]) { while(s[length]!='\0') length++; if (length==0) return (0); else return s[length-1]; } void reverse(char s[]) { char c; char *p, *pp; p = s; if (!p) return; pp = p + 1; if (*pp == '\0') return; c = *p; reverse(pp); while (*pp != '\0') { *p = *pp; p++; pp++; } *p = c; return; } void cluster(char s[]) { int j, len; char *p; char temp; i = 0; len = strlen(s); p = s; for (i = (len - 1); i > 0; i--) { for (j = 1; j <= i; j++) { if (*(p+j-1) > *(p+j)) { temp = *(p+j-1); *(p+j-1) = *(p+j); *(p+j) = temp; } } } } Κάτι τέτοιο;
nansu Δημοσ. 15 Δεκεμβρίου 2011 Μέλος Δημοσ. 15 Δεκεμβρίου 2011 Σας ευχαριστώ πάρα πολύ όλους!!!! Και σίγουρα thano κάτι τέτοιο είναι τέλειο!!!!!!!!!σε ευχαριστώ πολύ πολύ!!!!!
thanos713 Δημοσ. 15 Δεκεμβρίου 2011 Δημοσ. 15 Δεκεμβρίου 2011 Αν επιτρέπεται, για πού είναι αυτή η άσκηση;
nansu Δημοσ. 15 Δεκεμβρίου 2011 Μέλος Δημοσ. 15 Δεκεμβρίου 2011 η μια από τις 10 ασκήσεις που μας έχουν βάλει στο μαθημα προγραμματισμού της σχολή μου(προτιμώ να μην πω σε ποια σχολή είμαι από εδώ) και η μόνη που δεν μου έτρεχε σωστα...
nansu Δημοσ. 15 Δεκεμβρίου 2011 Μέλος Δημοσ. 15 Δεκεμβρίου 2011 αα και τελικα δεν ειναι η μονη που δεν μου τρεχει σωστα...και δεν εκπλησσομαι καθολου!!!
Christos75 Δημοσ. 15 Δεκεμβρίου 2011 Δημοσ. 15 Δεκεμβρίου 2011 Αν έχεις την καλοσύνη, δώσε μας και την εκφώνηση της άσκησης...
defacer Δημοσ. 17 Δεκεμβρίου 2011 Δημοσ. 17 Δεκεμβρίου 2011 καλησπέρα!! είμαι αρχάρια στον προγραμματισμό και αντιμετωπίζω κάποια δυσκολια στην εργασία που μας έχουν βάλει...μπορεί κάποιος να με βοηθήσει και να μου εξηγήσει που κάνω λάθος στο παρακάτω πρόγραμμα και δεν μου τρέχει? Έχε υπόψη όταν διατυπώνεις τις ερωτήσεις σου πως δεν είμαστε πάνω απ' τον ώμο σου ούτε μέσα στο μυαλό σου. Όταν λοιπόν λες "δεν μου τρέχει", εσύ ξέρεις πολύ καλά τι εννοείς αλλά εμείς όχι -- επομένως είναι πρακτικά αδύνατον να σε βοηθήσουμε αν δε γίνεις πιο συγκεκριμένη. Εννοείς πως το πρόγραμμα δεν κάνει compile? Αν ναι, ποιά είναι τα μηνύματα λάθους του compiler? Ποιές ακριβώς είναι οι γραμμές στους αριθμούς των οποίων αυτά αναφέρονται; Αν το πρόγραμμα κάνει μεν compile αλλά κρασάρει ή δεν παράγει το επιθυμητό αποτέλεσμα: σε ποιό ακριβώς σημείο γίνεται αυτό; Τι εισόδους δίνεις μέχρι εκείνο το σημείο; Αν παίρνεις λανθασμένη έξοδο, ποιά είναι η έξοδος που περίμενες να πάρεις; Δίνοντας όλες αυτές τις πληροφορίες απο πριν διευκολύνεις εμάς και αυξάνεις κατά πολύ τις πιθανότητες να πάρεις μια καλή απάντηση σε σύντομο χρονικό διάστημα. Θα σου πρότεινα κάποια στιγμή αν θέλεις να διαβάσεις αυτή τη σελίδα η/και την περίληψή της, που αναπτύσσουν περισσότερο και με γενικότερους όρους αυτά που είπα παραπάνω. Η καλή ερώτηση θα πάρει και καλή απάντηση.
aLe3ouLa Δημοσ. 17 Δεκεμβρίου 2011 Δημοσ. 17 Δεκεμβρίου 2011 Σε μια γρήγορη ματιά που της έριξα: 1) Χρησιμοποιείς τη συνάρτηση strlen() χωρίς να έχεις εισάγει την βιβλιοθήκη string.h 2) >void reverse (char s[]){ char *t; length =strlen(s); for(i=0; i=length-1; i++) *(t-1)=*(s+length-1-i); while(*s++=*t++); } η for χρησιμοποείται ως: >for (arxikopoihsh; sunthiki ;bhma){ entoles; } η συνθήκη είναι μια λογική πράξη εσύ έχεις βάλει να κάνει μια εκχώρηση, ή θα βάλεις i == length -1 ή i < length. Το while από κάτω πραγματικά δε καταλαβαίνω τί κάνει το 3ο error μου το βγάζει εδώ: >void cluster(char s[]){ int length; char temp; while(s[length]!='\0') { length++; if (s[length]=='b') { temp=s[length]; s[length]=s[length+1]; s[length+1]=temp; } } while(s[length]!='\0') { length++; printf("%c\n",s[length]); } το length μου λεει ότι επισκιάζει global declaration, δοκίμασα να του αλλάξω όνομα, δε βγάζει σφάλμα αλλά δε ξέρω αν υπάρχει λογικό σφάλμα μέσα και ένα λογικό σφάλμα που παρατήρησα: > char endchar(char s[]) { while(s[length]!='\0') length++; if (length==0) return (0); else return s[length-1]; } Όσο το s[length] είναι διάφορο του \0?? Τί είναι το length; δε το περνάς στη συνάρτηση, και μετά το αυξάνεις χωρις αρχικοποιήση κιόλας; :S αρχικοποιήσε το length στο 0 , όταν δημιουργείς μια μεταβλητή στην αρχή πιθανόν να έχει σκουπίδια μέσα.
Timonkaipumpa Δημοσ. 17 Δεκεμβρίου 2011 Δημοσ. 17 Δεκεμβρίου 2011 Ένα συμπέρασμα βλέπω εγώ.. Εάν θες άμεση λύση στην άσκηση γράψου στο insomnia με γυναικείο όνομα! Αλλιώς θα βγουν διάφοροι περίεργοι να σου λένε να την λύσεις μόνος σου ή να γράψεις πρώτα τον κώδικα και τι λάθη σου βγάζει αλλιώς βοήθεια γιοκ. Με γυναικείο όνομα σε 3 - 4 post έχεις έτοιμη την λύση και ας μην ξέρεις ακόμα και αυτά πιυ λογικά θα έπρεπε να ξέρεις για να φτάσεις στο σημείο στο οποίο ζητάς βοήθεια. Υ.Γ. Φυσικά εξαιρούνται οι ρομαντικοί 30άρηδες (ή και 40 παρά κάτι ) που ακόμα και τώρα λένε τα ίδια
thanos713 Δημοσ. 17 Δεκεμβρίου 2011 Δημοσ. 17 Δεκεμβρίου 2011 Ένα συμπέρασμα βλέπω εγώ.. Εάν θες άμεση λύση στην άσκηση γράψου στο insomnia με γυναικείο όνομα! Αλλιώς θα βγουν διάφοροι περίεργοι να σου λένε να την λύσεις μόνος σου ή να γράψεις πρώτα τον κώδικα και τι λάθη σου βγάζει αλλιώς βοήθεια γιοκ. Με γυναικείο όνομα σε 3 - 4 post έχεις έτοιμη την λύση και ας μην ξέρεις ότι πρέπει να αρχικοποιείς μεταβλητές πριν τους κάνεις ++ ή ό,τι άλλο επισύμανε η aleksoula. Υ.Γ. Φυσικά εξαιρούνται οι ρομαντικοί 30άρηδες (ή και 40 παρά κάτι ) που ακόμα και τώρα λένε τα ίδια Χαχαχα +1, έχεις απόλυτο δίκιο.
Timonkaipumpa Δημοσ. 17 Δεκεμβρίου 2011 Δημοσ. 17 Δεκεμβρίου 2011 Όσο το s[length] είναι διάφορο του \0?? Τί είναι το length; δε το περνάς στη συνάρτηση, και μετά το αυξάνεις χωρις αρχικοποιήση κιόλας; :S αρχικοποιήσε το length στο 0 , όταν δημιουργείς μια μεταβλητή στην αρχή πιθανόν να έχει σκουπίδια μέσα. Το length είναι μια global μεταβλητή. Δες τον αρχικό κώδικα. Οπότε μία χαρά μπορεί να το χρησιμοποιήσει μέσα στην συνάρτησή της.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα