Προς το περιεχόμενο

Εργασια λειτουργικα σε c


irini22

Προτεινόμενες αναρτήσεις

  • Απαντ. 42
  • Δημ.
  • Τελ. απάντηση
Δημοσ.

Εννοώ αν κάνω πρόσθεση δυο μεταβλτών τύπου char τι αποτέλεσμα θα έχω?

πχ.

char x='a';

char y='b';

char z=x+y;

Τι τιμή θα πάρει το z? Γίνεται αυτό?

Δημοσ.
Εννοώ αν κάνω πρόσθεση δυο μεταβλτών τύπου char τι αποτέλεσμα θα έχω?

πχ.

char x='a';

char y='b';

char z=x+y;

Τι τιμή θα πάρει το z? Γίνεται αυτό?

 

195 , και το c ειναι το 99

Δημοσ.

Σε C το char είναι απλά ενας αριθμός. Θα μπορούσες να κανεις ας πούμε.

 

>
int i = 'a';
printf("%c\n",i);

 

και θα τυπώσει το a

Δημοσ.

Έφτιαξα και το θέμα με το αρχείο και τώρα δουλεύει..(μόνο του γιατί όλοκληρος ο κώδικας πάλι δε μου δουλεύει..)

Έχω μια απορία όσον αφορά στα ορίσματα της γραμμής εντολών..Η σύνταξη της εντολής που θα καλεί το πρόγραμμα θα είναι του στυλ

>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η περίπτωση,αλλά τώρα το διόρθωσα στη δευτερη περίπτωση.

Δημοσ.

αρχικα πραγματικα εντυπωσιαζομαι που εισαι κοριτσι και δινεις τοση βαση στον προγραμματισμο!(πρωτοτυπο για το ΤΕΙ μας)

 

Ο evgenios εδωσε ενα πολυ καλο παραδειγμα για το πως αριθμουνται οι χαρακτηρες.Αυτο μπορει να βοηθησει πολυ στο πως θα γινουν οι πραξεις για την αντιστοιχηση(δεν κοιταξα αν το εχεις πραξει στον κωδικα γιατι τωρα γυρισα κ ειμαι πτωμα)

 

τις θεσεις του argv καλα εκανες και τις αλλαξες γιατι οπως το ειχες στην αρχη στην πρωτη γραμμη του πινακα θα προσπαθουσες να εισαγεις ολες τις εντολες ενω θες για argv0 το πρωτο ορισμα , για argv1 το δευτερο κ.ο.κ.

(δν ξερω αν γινομαι σαφης.Τετοια ωρα τετοια λογια να μου πεις...)

 

---------- Το μήνυμα προστέθηκε στις 04:23 ----------

 

Α...και πραγματικα φετος ειναι πιο παλουκι η εργασια.Ειναι η δευτερη φορα που το παιρνω και σε σχεση με την προηγουμενη καμια σχεση σε βαθμο δυσκολιας.(βεβαια μαλλον θα ειχα περασει στο προηγουμενο 6μηνο αλλα εγινε ενα μπερδεμα με τον καθηγητη και δεν μου κοιταξε ποτε την 1η εργασια)δεν κραταμε κακιες ομως!

Δημοσ.
αρχικα πραγματικα εντυπωσιαζομαι που εισαι κοριτσι και δινεις τοση βαση στον προγραμματισμο!(πρωτοτυπο για το ΤΕΙ μας)

 

Μα...δεν δίνει...έτοιμη εργασία ζήτησε να της δώσετε...

Δημοσ.

Ναι,άλλαξα και τη switch με περίπου αυτό που έλεγε ο evgenios ,αλλά και το κομμάτι που διαβάζει τα αρχεία και βάζει τα περιεχόμενα στον πίνακα και το έκανα συνάρτηση.Επίσης άλλαξα και λίγο τον τρόπο που διαβάζει τους πίνακες για να γίνει μετά η πράξη της κρυπτογράφησης.. Αυτό που με προβληματίζει όμως είναι ο τρόπος που μεταφέρω τα ονόματα των αρχείων που δίνονται ως παράμετροι...Δηλ. βάζω τα argv[1][0],argv[2][0],argv[3][0] σε μεταβλητές και μετά αυτές οι μεταβλητές περνιόνται πάλι ως παράμετροι στη συνάρτηση που διαβάζει το αρχείο..Κάτι δε μου κολλάει πολύ καλά ετσι όπως γίνεται..

Δημοσ.
>
/* 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;
}

Δημοσ.

Ευχαριστώ πολύ για το παράδειγμα Billman. Νομίζω ότι και με αυτές τις αλλαγές που προκύπτουν από το παράδειγμα σου ο κώδικας είναι έτοιμος και δεν απομένουν άλλες αλλαγές. Ευχαριστώ πολύ όλους!

Δημοσ.
Evgenios1 σχεδόν σωστή λύση, η σωστή απάντηση είναι

 

return (int)(c - 'a');

 

Αν και το function του δεν επιστρέφει κάτι...

 

εχεις δικαιο.. οσο για την επιστροφη αντι του return να βαλει ενα num= (που το εχει ως global var

 

Αν δεν κάνω λάθος (αν κάνω θα χαρώ να με διορθώσετε!) στο πρότυπο της γλώσσας C δεν υπάρχει καμιά εγγύηση για τους αριθμούς που θα αντιστοιχούν στους char (για παράδειγμα, δεν υπάρχει καμιά εγγύηση ότι η έκφραση 'a'<'b' είναι αληθής). :shifty:

 

---------- Το μήνυμα προστέθηκε στις 17:00 ----------

 

Μιας και διδάσκω στην τριτοβάθμια εκπαίδευση, μια συμβουλή/προτροπή:

 

Όσον αφορά τους/τις φοιτητές/φοιτήτριες που θέλουν να λύσουν τις εργασίες τους στα φόρουμ (εννοώ το να τους τις λύσουν άλλοι/άλλες), να αφήσουν "την μασημένη τροφή στην άκρη" και να παιδευτούν να λύσουν τις εργασίες τους μόνοι/μόνες τους!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...