narbi Δημοσ. 7 Απριλίου 2009 Δημοσ. 7 Απριλίου 2009 Εννοώ αν κάνω πρόσθεση δυο μεταβλτών τύπου char τι αποτέλεσμα θα έχω? πχ. char x='a'; char y='b'; char z=x+y; Τι τιμή θα πάρει το z? Γίνεται αυτό?
Evgenios1 Δημοσ. 7 Απριλίου 2009 Δημοσ. 7 Απριλίου 2009 Εννοώ αν κάνω πρόσθεση δυο μεταβλτών τύπου char τι αποτέλεσμα θα έχω? πχ. char x='a'; char y='b'; char z=x+y; Τι τιμή θα πάρει το z? Γίνεται αυτό? 195 , και το c ειναι το 99
ippo00 Δημοσ. 7 Απριλίου 2009 Δημοσ. 7 Απριλίου 2009 Σε C το char είναι απλά ενας αριθμός. Θα μπορούσες να κανεις ας πούμε. > int i = 'a'; printf("%c\n",i); και θα τυπώσει το a
Evgenios1 Δημοσ. 7 Απριλίου 2009 Δημοσ. 7 Απριλίου 2009 κειτα λιγο αυτο http://www.cs.utk.edu/~pham/ascii_table.jpg
narbi Δημοσ. 8 Απριλίου 2009 Δημοσ. 8 Απριλίου 2009 Έφτιαξα και το θέμα με το αρχείο και τώρα δουλεύει..(μόνο του γιατί όλοκληρος ο κώδικας πάλι δε μου δουλεύει..) Έχω μια απορία όσον αφορά στα ορίσματα της γραμμής εντολών..Η σύνταξη της εντολής που θα καλεί το πρόγραμμα θα είναι του στυλ >crypto plaintext.txt key.txt cipher.txt Άρα οι θέσεις του argv που αντιστοιχούν στα αρχεία είναι argv[1][0],argv[1][1],argv[1][2] ή argv[1][0],argv[2][0],argv[3][0]. Στην αρχή είχα την 1η περίπτωση,αλλά τώρα το διόρθωσα στη δευτερη περίπτωση.
T-spoilerGR Δημοσ. 8 Απριλίου 2009 Δημοσ. 8 Απριλίου 2009 αρχικα πραγματικα εντυπωσιαζομαι που εισαι κοριτσι και δινεις τοση βαση στον προγραμματισμο!(πρωτοτυπο για το ΤΕΙ μας) Ο evgenios εδωσε ενα πολυ καλο παραδειγμα για το πως αριθμουνται οι χαρακτηρες.Αυτο μπορει να βοηθησει πολυ στο πως θα γινουν οι πραξεις για την αντιστοιχηση(δεν κοιταξα αν το εχεις πραξει στον κωδικα γιατι τωρα γυρισα κ ειμαι πτωμα) τις θεσεις του argv καλα εκανες και τις αλλαξες γιατι οπως το ειχες στην αρχη στην πρωτη γραμμη του πινακα θα προσπαθουσες να εισαγεις ολες τις εντολες ενω θες για argv0 το πρωτο ορισμα , για argv1 το δευτερο κ.ο.κ. (δν ξερω αν γινομαι σαφης.Τετοια ωρα τετοια λογια να μου πεις...) ---------- Το μήνυμα προστέθηκε στις 04:23 ---------- Α...και πραγματικα φετος ειναι πιο παλουκι η εργασια.Ειναι η δευτερη φορα που το παιρνω και σε σχεση με την προηγουμενη καμια σχεση σε βαθμο δυσκολιας.(βεβαια μαλλον θα ειχα περασει στο προηγουμενο 6μηνο αλλα εγινε ενα μπερδεμα με τον καθηγητη και δεν μου κοιταξε ποτε την 1η εργασια)δεν κραταμε κακιες ομως!
Maniakos Δημοσ. 8 Απριλίου 2009 Δημοσ. 8 Απριλίου 2009 αρχικα πραγματικα εντυπωσιαζομαι που εισαι κοριτσι και δινεις τοση βαση στον προγραμματισμο!(πρωτοτυπο για το ΤΕΙ μας) Μα...δεν δίνει...έτοιμη εργασία ζήτησε να της δώσετε...
T-spoilerGR Δημοσ. 8 Απριλίου 2009 Δημοσ. 8 Απριλίου 2009 Μα...δεν δίνει...έτοιμη εργασία ζήτησε να της δώσετε... στη narbi αναφερομαι
narbi Δημοσ. 8 Απριλίου 2009 Δημοσ. 8 Απριλίου 2009 Ναι,άλλαξα και τη switch με περίπου αυτό που έλεγε ο evgenios ,αλλά και το κομμάτι που διαβάζει τα αρχεία και βάζει τα περιεχόμενα στον πίνακα και το έκανα συνάρτηση.Επίσης άλλαξα και λίγο τον τρόπο που διαβάζει τους πίνακες για να γίνει μετά η πράξη της κρυπτογράφησης.. Αυτό που με προβληματίζει όμως είναι ο τρόπος που μεταφέρω τα ονόματα των αρχείων που δίνονται ως παράμετροι...Δηλ. βάζω τα argv[1][0],argv[2][0],argv[3][0] σε μεταβλητές και μετά αυτές οι μεταβλητές περνιόνται πάλι ως παράμετροι στη συνάρτηση που διαβάζει το αρχείο..Κάτι δε μου κολλάει πολύ καλά ετσι όπως γίνεται..
Billman Δημοσ. 8 Απριλίου 2009 Δημοσ. 8 Απριλίου 2009 > /* No error handling */ int main(int argc, char *argv[]) { char *p1, *p2; for (int i = 0; i < argc; ++i) printf("argv[%d]=%s\n", i, argv[i]); p1 = argv[1]; p2 = argv[2]; printf("%s\n", p1); printf("%s\n", p2); return 0; }
narbi Δημοσ. 8 Απριλίου 2009 Δημοσ. 8 Απριλίου 2009 Ευχαριστώ πολύ για το παράδειγμα Billman. Νομίζω ότι και με αυτές τις αλλαγές που προκύπτουν από το παράδειγμα σου ο κώδικας είναι έτοιμος και δεν απομένουν άλλες αλλαγές. Ευχαριστώ πολύ όλους!
greatst Δημοσ. 8 Απριλίου 2009 Δημοσ. 8 Απριλίου 2009 Evgenios1 σχεδόν σωστή λύση, η σωστή απάντηση είναι return (int)(c - 'a'); Αν και το function του δεν επιστρέφει κάτι... εχεις δικαιο.. οσο για την επιστροφη αντι του return να βαλει ενα num= (που το εχει ως global var Αν δεν κάνω λάθος (αν κάνω θα χαρώ να με διορθώσετε!) στο πρότυπο της γλώσσας C δεν υπάρχει καμιά εγγύηση για τους αριθμούς που θα αντιστοιχούν στους char (για παράδειγμα, δεν υπάρχει καμιά εγγύηση ότι η έκφραση 'a'<'b' είναι αληθής). ---------- Το μήνυμα προστέθηκε στις 17:00 ---------- Μιας και διδάσκω στην τριτοβάθμια εκπαίδευση, μια συμβουλή/προτροπή: Όσον αφορά τους/τις φοιτητές/φοιτήτριες που θέλουν να λύσουν τις εργασίες τους στα φόρουμ (εννοώ το να τους τις λύσουν άλλοι/άλλες), να αφήσουν "την μασημένη τροφή στην άκρη" και να παιδευτούν να λύσουν τις εργασίες τους μόνοι/μόνες τους!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.