karabouzouk... Δημοσ. 31 Μαρτίου 2009 Δημοσ. 31 Μαρτίου 2009 Προγραμμα (απο)κωδικοποίησης ενώς κειμένου txt με τον αλγόριθμο του Καίσαρα... Δλδ αν το κείμενο ήταν το "ΑΒ" κωδικοποιημένο με κλειδί 3 θα ήταν το "ΔΕ"...Προσθέτεις όσα γράμματα είναι το κλειδί.... τι εχω λάθος και δεν τρέχει... >#include<stdio.h> void code(char, char, int); void decode(char, char, int); int main(void){ int ap, k; char paths[255], pathd[255]; printf("\n1 - Kwdikopoihsh arxeiou.."); printf("\n2 - Apokwdikopoihsh arxeiou.."); printf("\n0 - EXIT programme"); printf("\n\nEpelekse leitourgia..> "); scanf("%d", &ap); while (ap==1 || ap==2){ if (ap==1){ printf("Dwse onoma arxeiou pros kwdikopoihsh..> "); scanf("%s", &paths); printf("Dwse onoma arxeiou gia apothhkeush ths kwdikopoihshs..> "); scanf("%s", &pathd); while (k<0 || k>24){ printf("Dwse kleidi gia thn kwdikopoihsh sto diasthma [0,24]..> "); scanf("%d", &k); } code(paths, pathd, k); } else if (ap==2){ printf("Dwse onoma arxeiou pros apokwdikopoihsh..> "); scanf("%s", &paths); printf("Dwse onoma arxeiou gia apothhkeush ths apokwdikopoihshs..> "); scanf("%s", &pathd); while (k<0 || k>24){ printf("Dwse kleidi gia thn apokwdikopoihsh sto diasthma [0,24]..> "); scanf("%d", &k); } decode(paths, pathd, k); } printf("\n1 - Kwdikopoihsh arxeiou.."); printf("\n2 - Apokwdikopoihsh arxeiou.."); printf("\n0 - EXIT programme"); printf("\n\nEpelekse leitourgia..> "); scanf("%d", &ap); } return 0; } void code(char source[255], char dest[255], int k){ FILE *s, *d; char c; int m; if (!(s=fopen(source,"r")) || !(d=fopen(dest,"w"))){ printf("\nSfalma anoigmatos arxeiou..."); return; } while ((c=fgetc(s))!=NULL){ if (c>="A" && c<="Z"){ if(c+k>90){ m=c+k-25; }else m=k+c; fputc(m,d); }else fputc(c,d); } } void decode(char source[255], char dest[255], int k){ FILE *s, *d; char c; int m; if (!(s=fopen(source,"r")) || !(d=fopen(dest,"w"))){ printf("\nSfalma anoigmatos arxeiou..."); return; } while ((c=fgetc(s))!=NULL){ if (c>="A" && c<="Z"){ if(c-k<65){ m=c-k+25; }else m=c-k; fputc(m,d); }else fputc(c,d); } } ο compiler έβγαλε..... >Running "C:\cygwin\bin\make.exe -f Makefile CONF=Debug" in C:\Documents and Settings\user 1\Επιφάνεια εργασίας\netbeans progr\kwdikopoihsh_kaisaras /usr/bin/make -f nbproject/Makefile-Debug.mk SUBPROJECTS= .build-conf make[1]: Entering directory `/cygdrive/c/Documents and Settings/user 1/Επιφάνεια εργασίας/netbeans progr/kwdikopoihsh_kaisaras' mkdir -p build/Debug/Cygwin-Windows gcc.exe -c -g -o build/Debug/Cygwin-Windows/kwdikopoihsh_kaisaras.o kwdikopoihsh_kaisaras.c kwdikopoihsh_kaisaras.c: In function `main': kwdikopoihsh_kaisaras.c:28: warning: passing arg 1 of `code' makes integer from pointer without a cast kwdikopoihsh_kaisaras.c:28: warning: passing arg 2 of `code' makes integer from pointer without a cast kwdikopoihsh_kaisaras.c:39: warning: passing arg 1 of `decode' makes integer from pointer without a cast kwdikopoihsh_kaisaras.c:39: warning: passing arg 2 of `decode' makes integer from pointer without a cast kwdikopoihsh_kaisaras.c: At top level: kwdikopoihsh_kaisaras.c:52: error: conflicting types for 'code' kwdikopoihsh_kaisaras.c:4: error: previous declaration of 'code' was here kwdikopoihsh_kaisaras.c:52: error: conflicting types for 'code' kwdikopoihsh_kaisaras.c:4: error: previous declaration of 'code' was here kwdikopoihsh_kaisaras.c: In function `code': kwdikopoihsh_kaisaras.c:62: warning: comparison between pointer and integer kwdikopoihsh_kaisaras.c:63: warning: comparison between pointer and integer kwdikopoihsh_kaisaras.c:63: warning: comparison between pointer and integer kwdikopoihsh_kaisaras.c: At top level: kwdikopoihsh_kaisaras.c:78: error: conflicting types for 'decode' kwdikopoihsh_kaisaras.c:5: error: previous declaration of 'decode' was here kwdikopoihsh_kaisaras.c:78: error: conflicting types for 'decode' kwdikopoihsh_kaisaras.c:5: error: previous declaration of 'decode' was here kwdikopoihsh_kaisaras.c: In function `decode': kwdikopoihsh_kaisaras.c:88: warning: comparison between pointer and integer kwdikopoihsh_kaisaras.c:89: warning: comparison between pointer and integer kwdikopoihsh_kaisaras.c:89: warning: comparison between pointer and integer make[1]: *** [build/Debug/Cygwin-Windows/kwdikopoihsh_kaisaras.o] Error 1 make[1]: Leaving directory `/cygdrive/c/Documents and Settings/user 1/Επιφάνεια εργασίας/netbeans progr/kwdikopoihsh_kaisaras' make: *** [.build-impl] Error 2 Build failed. Exit value 2. Και επίσης να ρωτήσω πώς βγαίνω από μια void συνάρτηση...το return σκέτο δεν ξέρω πως μου ήρθε αλλά δεν προκαλεί αυτό το πρόβλημα όπως βλέπω.. Ευχαριστώ για τον χρόνο σας....
dark_banishing Δημοσ. 31 Μαρτίου 2009 Δημοσ. 31 Μαρτίου 2009 Στα lines 4 και 5 που έχεις τον ορισμό των συναρτήσεων βάλε > void code(char [], char [], int ); void decode(char [], char [], int); Ο λόγος προφανής νομίζω.. Με το return σωστά βγαίνεις από void συνάρτηση όπως λες. Επίσης αυτά τα warnings που σου βγάζει δεν τα κοίταξα αλλά καλό θα ήταν να τους ρίξεις μια ματιά να δεις τι παίζει..
karabouzouk... Δημοσ. 31 Μαρτίου 2009 Μέλος Δημοσ. 31 Μαρτίου 2009 Δεν είναι και η καλύτερη ώρα για να το δώ τέτοιο λάθος... Πάντως μετράς....Να σαι καλά..!!! ---------- Το μήνυμα προστέθηκε στις 01:31 ---------- Βασικά δεν το δοκίμασες αν τρέχει ε..? αν μπορείς να κάνεις τον κόπο γιατί κολλάει μόλις φτάνει στην κλήση της συνάρτησης.... τι να φταίει...??
dark_banishing Δημοσ. 31 Μαρτίου 2009 Δημοσ. 31 Μαρτίου 2009 Λοιπόν έλα.. Έχεις κάνει ένα αριθμό από λάθη.. Καταρχήν σβήσε το != NULL και κάντο !=EOF, επίσης στο τέλος των δυο συναρτήσεων πρόσθεσε > fclose (s); fclose (d); Είναι επειδή ανοίγεις το αρχείο, πρέπει και να το κλείσεις μετά.. Δεύτερον συγκρίνεις το c που είναι char με το "Α" που είναι string. Το σωστό είναι να το συγκρίνεις με το 'Α' που είναι char και αυτό. Τρίτον και πιο σημαντικό. Ψάχνεις να βρεις άμα το γράμμα είναι μεταξύ Α έως Ζ αλλά κεφαλαία. Πρέπει να κοιτάς μήπως ειναι και μεταξύ a-z με μικρά. Αυτά..
Evgenios1 Δημοσ. 31 Μαρτίου 2009 Δημοσ. 31 Μαρτίου 2009 Το πρωτο while καντω do while , για τα γραμματα .... αντι να ψαχνεσε κεφαλαια ή πεζα ή και αριθμους, απλος παρε ολα τα char 1-254(εκτος του 7 .. ειναι beep) (κοιμαμαι ορθιος )
karabouzouk... Δημοσ. 31 Μαρτίου 2009 Μέλος Δημοσ. 31 Μαρτίου 2009 Λοιπόν έλα.. Έχεις κάνει ένα αριθμό από λάθη.. Καταρχήν σβήσε το != NULL και κάντο !=EOF, επίσης στο τέλος των δυο συναρτήσεων πρόσθεσε > fclose (s); fclose (d); Είναι επειδή ανοίγεις το αρχείο, πρέπει και να το κλείσεις μετά.. Δεύτερον συγκρίνεις το c που είναι char με το "Α" που είναι string. Το σωστό είναι να το συγκρίνεις με το 'Α' που είναι char και αυτό. Τρίτον και πιο σημαντικό. Ψάχνεις να βρεις άμα το γράμμα είναι μεταξύ Α έως Ζ αλλά κεφαλαία. Πρέπει να κοιτάς μήπως ειναι και μεταξύ a-z με μικρά. Αυτά.. Εντάξει την βρήκα την άκρη...μεχρι να δω την απάντηση τα είχα διςρθώσει τα πιό πολλά από αυτά.....Όσο για τα κεφαλαία μικρα στο συγκεκριμένο δεν με ενδιέφερε να κοιτάξω για μικρά...! Ευχαριστώ..!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.