emperor318 Δημοσ. 4 Απριλίου 2009 Δημοσ. 4 Απριλίου 2009 Γειά σας. Δεν είδα αν υπάρχει παρόμοια συζήτηση, αν υπάρχει plz δώστε link Λοιπόν, θέλω μια διαδικασία που να κατασκευάζει ένα string (πολλών χαρακτήρων (έστω WANTED)) του οποίου οι χαρακτήρες θα είναι ίδιοι με αυτούς ενός άλλου string (λιγότερων χαρακτήρων (έστω IRON)), επαναλαμβανόμενους με τη σειρα, και αντιστοιχιζόμενους με τους χαρακτήρες ενός τρίτου string (έστω TEXT). Π.χ. αν: IRON I AM THE BLACK WIZARDS = TEXT I RO NIR ONIRO NIRONIR = WANTED Έχω: FOR (I=0;I=23;I++) { WANTED=IRON[???] } Στο "???" κολλάω...φαντάζομαι θα είναι κάτι που θα σημαίνει: "από 0 έως 3, και μόλις φτάσεις στο 3 ξανάρχισε από το 0, εκτός αν Ι=23", αλλά πώς το γράφω αυτό; ΒΟΗΘΕΙΑ, ΕΠΕΙΓΕΙ!!!
dark_banishing Δημοσ. 4 Απριλίου 2009 Δημοσ. 4 Απριλίου 2009 Για να καταλάβω καλύτερα. Όπου υπάρχει κενό στο text εμείς βάζουμε κενό και στο wanted. Αν δεν υπάρχει κενό αλλά χαρακτήρας, αντικαθιστούμε τον χαρακτήρα αυτόν με κάποιον χαρακτήρα από το IRON ανάλογα με το που βρισκόμαστε. Αυτό θες ;
ippo00 Δημοσ. 4 Απριλίου 2009 Δημοσ. 4 Απριλίου 2009 Αυτό που θες να πείς ειναι i%4 ? edit: Vigenère cipher προσπαθείς να υλοποιήσεις; edit2: Το loop σου ποτέ δεν θα εκτελεστεί αν δεν αλλάξεις το control statement. edit3: Θα πρέπει να δεις τι θα κάνεις με τα κενά. edit4: Το I δεν είναι το ίδιο με το i edit5: τα {} δεν είναι απαραίτητα edit6: enough!
teo64x Δημοσ. 4 Απριλίου 2009 Δημοσ. 4 Απριλίου 2009 Όπως το είπε ο ippo00, αν καταλαβαίνω σωστά την ερώτησή σου. >for(int i=0;i<23;i++) { if(text[i]==" ") wanted[i]=" "; else wanted[i]=iron[i%4]; }
emperor318 Δημοσ. 4 Απριλίου 2009 Μέλος Δημοσ. 4 Απριλίου 2009 Για να καταλάβω καλύτερα. Όπου υπάρχει κενό στο text εμείς βάζουμε κενό και στο wanted. Αν δεν υπάρχει κενό αλλά χαρακτήρας, αντικαθιστούμε τον χαρακτήρα αυτόν με κάποιον χαρακτήρα από το IRON ανάλογα με το που βρισκόμαστε. Αυτό θες ; 1) Ναι, όπου υπάρχει κενό το αφήνει όπως είναι. 2) Ναι, αυτό θελω Αυτό που θες να πείς ειναι i%4 ? edit: Vigenère cipher προσπαθείς να υλοποιήσεις; edit2: Το loop σου ποτέ δεν θα εκτελεστεί αν δεν αλλάξεις το control statement. edit3: Θα πρέπει να δεις τι θα κάνεις με τα κενά. edit4: Το I δεν είναι το ίδιο με το i edit5: τα {} δεν είναι απαραίτητα edit6: enough! Α, ίσως, θα δοκιμάσω, ευχαριστώ! Ναι Vigenere φτιάχνω, και προσπαθώ να φτιάξω το repeated key edits2..6: Ξέρω, απλώς τα έγραψα στα γρήγορα και παρέλειψα μερικά
teo64x Δημοσ. 4 Απριλίου 2009 Δημοσ. 4 Απριλίου 2009 teo64x το " " είναι null terminated, θέλει ' ' Ναι όντως, sorry.
emperor318 Δημοσ. 4 Απριλίου 2009 Μέλος Δημοσ. 4 Απριλίου 2009 Έκανα αυτό για δοκιμή: #include <iostream.h> #include <string.h> char textss[11]; char keysss[5]; char wanted[11]; void main() { int i; strcpy(textss,"iamtheblack"); strcpy(keysss,"iron"); for (i=0;i<=12;i++) { wanted=keysss[i%4]; } cout<<textss<<endl; cout<<wanted<<endl; } όμως βγάζει περισσότερα χαρακτήρες στο wanted
teo64x Δημοσ. 4 Απριλίου 2009 Δημοσ. 4 Απριλίου 2009 Δοκίμασέ το έτσι: >#include <iostream> #include <string.h> char textss[]="iamtheblack"; char keysss[]="iron"; char wanted[256]; int main() { for(int i=0;i<strlen(textss);i++) wanted[i]=keysss[i%strlen(keysss)]; std::cout << textss << std::endl; std::cout << wanted << std::endl; system("pause"); return 0; }
bxenos Δημοσ. 4 Απριλίου 2009 Δημοσ. 4 Απριλίου 2009 Δοκίμασέ το έτσι: μπορείς να μην αφήσεις τα strlen εκτελούντα πολλές φορές χωρίς λόγο, αν αποθηκεύσεις αρχικά το αποτέλεσμα τους σε μεταβλητές ή αν χρησιμοποιήσεις μόνο pointers. > const char *t = textss, *i = keysss; char *w = wanted; assert(*i);//assume i has at least one char while(*t){ *w = *i; if(*(++i)==0) i = keysss; w++; t++; } *w = 0;//make sure it is terminated
Directx Δημοσ. 4 Απριλίου 2009 Δημοσ. 4 Απριλίου 2009 Ναι Vigenere φτιάχνω, και προσπαθώ να φτιάξω το repeated key Πριν αρκετό καιρό είχα ασχοληθεί με το Βιζενέρ μπορεί να φανεί ενδιαφέρον: http://www.insomnia.gr/forum/showpost.php?p=1784494&postcount=88 Καλή τύχη!!
emperor318 Δημοσ. 16 Απριλίου 2009 Μέλος Δημοσ. 16 Απριλίου 2009 Επανήλθα...λοιπόν, όταν το 'χα τεστάρει για ΤΕΧΤ έβαλα κάτι χωρίς κενά όμως τώρα που έβαλα κενά δίνει: TEXT: IAM THE BLACK WANTED: IRO IRO IRONI Όμως εγώ ήθελα: TEXT: IAM THE BLACK WANTED: IRO NIR ONIRO ???
ippo00 Δημοσ. 18 Απριλίου 2009 Δημοσ. 18 Απριλίου 2009 edit3: Θα πρέπει να δεις τι θα κάνεις με τα κενά. Νομίζω καλύτερα να λύσεις το θέμα μόνος σου
emperor318 Δημοσ. 18 Απριλίου 2009 Μέλος Δημοσ. 18 Απριλίου 2009 Μα έβαλα τον έλεγχο, όμως το θέμα είναι ο μετρητής, που δεν θα πρέπει να αυξάνεται μέσα στο if, δηλαδή κάτι σαν το σχόλιο: > for (i=0;i<=13;i++) { if (textss[i]==' ') { wanted[i]=textss[i]; // i=i-1; } else wanted[i]=keysss[i%4]; }
ippo00 Δημοσ. 18 Απριλίου 2009 Δημοσ. 18 Απριλίου 2009 Καταλαβάινεις όμως γιατί δεν σε εξυηρετεί αυτό;
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.