---Zapotek-- Δημοσιεύτηκε Οκτώβριος 23, 2005 #1 Κοινοποίηση Δημοσιεύτηκε Οκτώβριος 23, 2005 Παιδες εχουμε ενα array στην C οπως το παρακατω: char alphabet[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; Οκ, κλασσικα το alphabet[1]=B, alphabet[0]=A κτλ ΠΩΣ ομως θα πουμε οτι B=alphabet[1], A=alphabet[0], κτλ? Εξηγουμαι: printf("%c",alphabet[0]); Θα δωσει "Α" Πως ομως το: Α θα δωσει alphabet[0]? Ειδικοτερα, αυτο που θελω να κανω ειναι: αν ξερω το γραμμα να βρω την θεση του στο alphabet array... Ευχαριστω για τον χρονο σας. Link to comment Share on other sites More sharing options...
trendy Οκτώβριος 23, 2005 #2 Κοινοποίηση Οκτώβριος 23, 2005 Έτσι όπως το έχεις δεν πρέπει να γίνεται γιατί το Α είναι χαρακτήρας, όχι κάποια μεταβλητή. Link to comment Share on other sites More sharing options...
---Zapotek-- Οκτώβριος 23, 2005 Author #3 Κοινοποίηση Οκτώβριος 23, 2005 Ναι το ξερω απλα ψαχνω τροπο, μαλλον με καποιο λοοπ θα γινει, τωρα εχω στο μυαλο μου ολο το project και δυσκολευομαι να βρω λυση σε αυτο. Πρεπει να χαλαρωσω.... Link to comment Share on other sites More sharing options...
DarkSaga Οκτώβριος 23, 2005 #4 Κοινοποίηση Οκτώβριος 23, 2005 γίνεται με if μέσα σε loop αλλά σκέφτεσαι εντελλώς ανάποδαξέχνα το όλο αυτό...τι θες να κάνεις?γενικότερα Link to comment Share on other sites More sharing options...
Vagouridis Οκτώβριος 23, 2005 #5 Κοινοποίηση Οκτώβριος 23, 2005 Εστω λοιπον οτι δινεις το γραμμα Α και θες να εκτυπωθει το alpha[0] .Κανε μια αναζητηση για το γραμμα Α μεσα στα στοιχεια του πινακα σου και βαλε να σου γυρναει το j που ειναι η θεση του πινακα.Δλδfor ( j=0;j<25;j++){if (A==alpha[j])return j;}Ουσιαστικα μετα το περασμα του πινακα θα εχεις την θεση j που βρισκετε το καθε γραμμα.Κανε και μια case οπου θα εχει σαν παραμετρο την j και οταν ειναι j=0 θα εκτυπωνει alpha[0] και αντιστοιχα για καθε jΠαντως γενικοτερα μπορεις να κανεις και την απλη αντιστοιχια και παλι με case και μεταβλητη char το Α , Β να ζητας την αναλογη εκτυπωση αλλα εαν αλλαξει η σειρα των στοιχειων του πινανα την πατησες. Link to comment Share on other sites More sharing options...
---Zapotek-- Οκτώβριος 23, 2005 Author #6 Κοινοποίηση Οκτώβριος 23, 2005 Αρχική απάντηση από DarkSaga γίνεται με if μέσα σε loop αλλά σκέφτεσαι εντελλώς ανάποδα Αυτό είχα στο μυαλό.... Θέλω να κάνω ένα απλό Shift Cipher..... Απλά γράφω και ένα δοκίμιο ταυτόχρονα και είμαι και από διαγώνισμα και νυστάζω και λίγο, είμαι και λίγο ζαλισμένος. Κατά τα άλλα μια χαρά. @Vag Ευχαριστω, μαλλον αυτο θα κανω. Link to comment Share on other sites More sharing options...
Vagouridis Οκτώβριος 23, 2005 #7 Κοινοποίηση Οκτώβριος 23, 2005 Εαν θες εαν τυπικο δωρεαν tutorial με απλα παραδειγματακια ειναι το παρακατω λινκhttp://www.cplusplus.com/doc/tutorial/ Link to comment Share on other sites More sharing options...
---Zapotek-- Οκτώβριος 23, 2005 Author #8 Κοινοποίηση Οκτώβριος 23, 2005 Ευχαριστω, αλλα ειναι για C++... Link to comment Share on other sites More sharing options...
DarkSaga Οκτώβριος 23, 2005 #9 Κοινοποίηση Οκτώβριος 23, 2005 shift cipher? γραμματιζούμενος μου κάνεις εσύ..... αν θες να΄προσθέτεις σε κάθε γρ΄΄αμμα και μετα να αφαιρείς πάρε τα Ascii και παίξε είναι ταχύτερο προσθέτεις αφαιρείς και μεταφράζεις itoa atoi τσέκαρε τες είναι πολύ ακριβό να διατρέχεις τον πίνακα..... με loopes Link to comment Share on other sites More sharing options...
---Zapotek-- Οκτώβριος 23, 2005 Author #10 Κοινοποίηση Οκτώβριος 23, 2005 Αρχική απάντηση από DarkSaga shift cipher? γραμματιζούμενος μου κάνεις εσύ..... Χεχεχε, οπως το παρει κανεις... Link to comment Share on other sites More sharing options...
---Zapotek-- Οκτώβριος 23, 2005 Author #11 Κοινοποίηση Οκτώβριος 23, 2005 Λεπον αυτο εχω τωρα:#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>main(){char str;int len,i,j,x,enc,key;char alphabet[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};printf("Enter string to encrypt: ");scanf("%s",&str);printf("Enter encryption key: [1-25]");scanf("%d",&key);key=key*key;key=sqrt(key);if(key>25){printf("Key must be less than 25\n");exit(0);}len=strlen(&str);printf("The encrypted string is: \n");for(i=0,x=0; i<26,x<len; i++,x++){if(str[x]=alphabet[i]){j=i;}enc = (j + key)%26; printf("%c",alphabet[enc]);} printf("\n");}Το παραπάνω ενδεικτικά το δείχνω.Βγάζει κάτι errors ακόμα αλλά θα τα λύσω.Σας ευχαριστώ όλους για την βοήθεια παιδιά! Link to comment Share on other sites More sharing options...
n1ck0s Οκτώβριος 23, 2005 #12 Κοινοποίηση Οκτώβριος 23, 2005 Πάντως για εγκυκλοπαιδικές γνώσεις ψάξε για ROT13 αλγόριθμο. Απλά ο ROT13 κάνει shift 13 θέσεις. Θες να δεις την μικρότερη υλοποίηση του ROT13;main(a){while(a=~getchar())putchar(~a-1/(~(a|32)/13*2-11)*13);} Link to comment Share on other sites More sharing options...
---Zapotek-- Οκτώβριος 23, 2005 Author #13 Κοινοποίηση Οκτώβριος 23, 2005 DAMN! Ωρες σαν και αυτες αισθανομαι τουλβο... Link to comment Share on other sites More sharing options...
---Zapotek-- Οκτώβριος 23, 2005 Author #14 Κοινοποίηση Οκτώβριος 23, 2005 Οποτε αλλαζει ριζικα το προγραμμα σε αυτο:#include <stdio.h>#include <stdlib.h>main(str){int key;printf("Enter encryption key: [1-25]");scanf("%d",&key);if(key>25){printf("Key must be less than 25\n");exit(0);}printf("Enter string to encrypt:");while(str=~getchar())putchar(~str-1/(~(str|32)/13*2-11)*key);}Πολυ καλος ο τυπος, που το πετυχες? Link to comment Share on other sites More sharing options...
Wolfenstein Οκτώβριος 23, 2005 #15 Κοινοποίηση Οκτώβριος 23, 2005 Αρχική απάντηση από ---Zapotek-- [Σήμερα, στις 13:56] Οποτε αλλαζει ριζικα το προγραμμα σε αυτο:#include <stdio.h>#include <stdlib.h>main([B][COLOR=red]str[/COLOR] [/B]){[B][COLOR=red]int[/COLOR] [/B] key;printf("Enter encryption key: [1-25]");scanf("%d",&key);if(key>25){printf("Key must be less than 25\n");exit(0);}printf("Enter string to encrypt:");while(str=~getchar())putchar(~str-1/(~(str|32)/13*2-11)*key);}Πολυ καλος ο τυπος, που το πετυχες? Μήπως το str ήθελες να το γράψεις στο int?Η λέω βλακίες? :X: Link to comment Share on other sites More sharing options...
Rayden Οκτώβριος 23, 2005 #16 Κοινοποίηση Οκτώβριος 23, 2005 Με το atoi που είπε και κάποιος φίλος παραπάνω μου φαίνεται αρκετά εύκολο, δεδομένου ότι ουσιαστικά έχεις το αλφάβητο στον πίνακα. Αν είχες άλλου είδους στοιχεία δε θα γινόταν. Η μεταβλητή alphabet είναι ουσιαστικά ένας pointer στην αρχή του array.Οπότε εσύ παίρνοντας το alphabet[atoi("A")-65] ουσιαστικά παίρνεις το πρώτο στοιχείο του πίνακα. Το 65 είναι ο ASCII κωδικός του "Α". Πιθανότατα μπορείς να το αντικαταστήσεις και με "Α" (ΜΕ εισαγωγικά). Η παράμετρος της atoi (τσέκαρε τη σύνατξή της γιατί το γράφω στον άερα) είναι το Α,Β κλπ που θες.Για πιο γενικά, θα έπαιρνες το alphabet[x-"Α"], όπου x μια μεταβλητή τύπου char που αντιστοιχεί στο "Α","Β", κλπ δηλ. ό,τι δίνει ο χρήστης. Οπότε η αφαίρεση χ-"Α" δίνει το κατάλληλο offset στον pointer (η index στον πίνακα, όπως θέλεις πες το).Ελπίζω να κατάλαβα τι ακριβώς θες γιατί το διάβασα λίγο στα πεταχτά... Link to comment Share on other sites More sharing options...
---Zapotek-- Οκτώβριος 23, 2005 Author #17 Κοινοποίηση Οκτώβριος 23, 2005 @Wolfenstein To str είναι μεταβλητή, μια χαρά είναι εκεί που βρίσκετε . @Rayden Ευχαριστω πολυ, θα το δοκιμασω οταν βρω χρονο. Ευχαριστω ξανα. Link to comment Share on other sites More sharing options...
Vagouridis Οκτώβριος 23, 2005 #18 Κοινοποίηση Οκτώβριος 23, 2005 καντε μου μια χαρη και δοκιμαστε την atoi με μεταβλητη και οχι με απευθειας εισαγωγη χαρακτηρα να δουμε εαν κανει compile...... Link to comment Share on other sites More sharing options...
Wolfenstein Οκτώβριος 23, 2005 #19 Κοινοποίηση Οκτώβριος 23, 2005 Δεν πρεπέι να την δηλώσεις σαν int? Link to comment Share on other sites More sharing options...
---Zapotek-- Οκτώβριος 23, 2005 Author #20 Κοινοποίηση Οκτώβριος 23, 2005 #include <stdlib.h>int main() {char x='a';int j;j=atoi(&x);}Κανει compile...[ http://www.cppreference.com/stdstring/atoi.html ] Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.