Page 1 of 1
Πρόγραμμα σε C(εργασία με αρχεία)
Posted: Tue Nov 06, 2007 9:53 am
by black_magic
Γεία σας...χρειαζόμαστε τη βοήθειά σας...Έχουμε την εξής άσκηση:Γράψτε ένα πρόγραμμα της C, το οποίο θα κωδικοποιεί το αρχείο records.dat με απλή χρήση κώδικα αλφαβητικής μετάθεσης κατά 2 χαρακτήρες. Το αποτέλεσμα να αποθηκεύεται στο αρχείο code.dat.
Το αρχείο records.dat είναι απλό αρχείο κειμένου που περιέχει μία εγγραφή (το επώνυμο) σε κάθε γραμμή. Για το code.dat κάθε χαρακτήρας του επωνύμου (του records.dat) μετατρέπεται στον μεθεπόμενο αλφαβητικά χαρακτήρα, πχ. το Α γινεται Γ, το Β γίνεται Δ, ..., το Ψ γίνεται Α και τέλος το Ω γίνεται Β.
Εμείς κάτι έχουμε κάνει αλλά το κυρίως πρόβλημα το έχουμε στο πως να μετατρέπεται στο μεθεπόμενο αλφαβητικό χαρακτήρα????Ευχαριστούμε πολύ...

Posted: Tue Nov 06, 2007 10:05 am
by tsilochr
διάβαζεις ένα χαρακτήρα, τον κάνεις cast σε int και προσθέτεις 2
//στο περίπου
char character_1='a';
int methepomeno = (int)character+2;
char character_2 = (char)methepomeno;
Posted: Tue Nov 06, 2007 10:30 am
by black_magic
Ευχαριστούμε πολύ ! Θα το προσπαθήσουμε τώρα να το τρέξουμε.
Posted: Tue Nov 06, 2007 7:01 pm
by black_magic
Τελικά δεν μπορέσαμε να το τρέξουμε. Κάτι πιο συγκεκριμένο μπορείτε να μας πείτε? Ουσιαστικά π.χ. το δεύτερο αρχείο θα το ανοίξουμε μόνο για γράψιμο?
Posted: Tue Nov 06, 2007 7:29 pm
by HdkiLLeR
Δώσε λίγο κώδικα απο το τι έχεις κάνεις μεχρι στιγμής για να μπορέσουν να σου κάνουμε ειδικότερες παρατηρήσεις.
Posted: Tue Nov 06, 2007 7:37 pm
by black_magic
#include <stdio.h>
int main(){
int i;
char x;
char alfabita[28]= "abcdefghijklmnopqrstuvwxyzab";d.c
FILE * fp=fopen("record.c"."r");
FILE * fp = fopen("here.c","w");
while(feof(fp)==0){
x=fgetc(fp);
for (i=0; i<=26; i++)
{
if (x == alfabita){
i=i+2;
x=alfabita;
fputc(x,fp1);
i=26;
}
}
}
fclose(fp);
return o;
}
Posted: Tue Nov 06, 2007 11:57 pm
by Einherjar
black_magic wrote:Code: Select all
#include <stdio.h>
int main(){
int i;
char x;
char alfabita[28]= "abcdefghijklmnopqrstuvwxyzab";d.c
FILE * fp=fopen("record.c"."r");
FILE * fp = fopen("here.c","w");
while(feof(fp)==0){
x=fgetc(fp);
for (i=0; i<=26; i++)
{
if (x == alfabita[i]){
i=i+2;
x=alfabita[i];
fputc(x,fp1);
i=26;
}
}
}
fclose(fp);
return o;
}
Έχω τις εξής παρατηρήσεις:
- Έχεις 2 FILE μεταβλητές με το ίδιο όνομα και άλλα συντακτικά λάθη. Προφανώς έφαγες το 1 στη δεύτερη δήλωση. Πάντως αυτό δε παιρνάει compile.
- Πρέπει να κλείσεις και τα 2 αρχεία.
- Το feof(fp)==0 είναι ισοδύναμο με το !feof(fp). Το δεύτερο είναι πιο καλή τακτική γραψίματος.
- Κάνεις δύσκολη τη ζωή σου: Με τους πίνακες και τις πράξεις. Αφού διαβάσεις έναν χαρακτήρα, δηλαδή x=fgetc(fp); κάνεις x+=2 και γράφεις το x στην έξοδο. Αυτό και τίποτα άλλο.
Posted: Wed Nov 07, 2007 12:03 am
by black_magic
Ναί έχεις δίκιο σε όλα... Οι παρατηρήσεις σου ήταν σαφέστατες...Σευχαριστώ πολύ!