Πρόγραμμα σε C(εργασία με αρχεία)

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
black_magic
bit level
bit level
Posts: 5
Joined: Mon Nov 05, 2007 10:41 am
Location: Athina

Πρόγραμμα σε C(εργασία με αρχεία)

Post by black_magic » Tue Nov 06, 2007 9:53 am

Γεία σας...χρειαζόμαστε τη βοήθειά σας...Έχουμε την εξής άσκηση:Γράψτε ένα πρόγραμμα της C, το οποίο θα κωδικοποιεί το αρχείο records.dat με απλή χρήση κώδικα αλφαβητικής μετάθεσης κατά 2 χαρακτήρες. Το αποτέλεσμα να αποθηκεύεται στο αρχείο code.dat.
Το αρχείο records.dat είναι απλό αρχείο κειμένου που περιέχει μία εγγραφή (το επώνυμο) σε κάθε γραμμή. Για το code.dat κάθε χαρακτήρας του επωνύμου (του records.dat) μετατρέπεται στον μεθεπόμενο αλφαβητικά χαρακτήρα, πχ. το Α γινεται Γ, το Β γίνεται Δ, ..., το Ψ γίνεται Α και τέλος το Ω γίνεται Β.

Εμείς κάτι έχουμε κάνει αλλά το κυρίως πρόβλημα το έχουμε στο πως να μετατρέπεται στο μεθεπόμενο αλφαβητικό χαρακτήρα????Ευχαριστούμε πολύ...
:roll:
User avatar
tsilochr
Wow! Terabyte level
Wow! Terabyte level
Posts: 3246
Joined: Tue Mar 16, 2004 2:47 pm
Academic status: PhD
Gender:
Location: mm.aueb.gr
Contact:

Post by tsilochr » Tue Nov 06, 2007 10:05 am

διάβαζεις ένα χαρακτήρα, τον κάνεις cast σε int και προσθέτεις 2

//στο περίπου
char character_1='a';
int methepomeno = (int)character+2;
char character_2 = (char)methepomeno;
black_magic
bit level
bit level
Posts: 5
Joined: Mon Nov 05, 2007 10:41 am
Location: Athina

Post by black_magic » Tue Nov 06, 2007 10:30 am

Ευχαριστούμε πολύ ! Θα το προσπαθήσουμε τώρα να το τρέξουμε.
black_magic
bit level
bit level
Posts: 5
Joined: Mon Nov 05, 2007 10:41 am
Location: Athina

Post by black_magic » Tue Nov 06, 2007 7:01 pm

Τελικά δεν μπορέσαμε να το τρέξουμε. Κάτι πιο συγκεκριμένο μπορείτε να μας πείτε? Ουσιαστικά π.χ. το δεύτερο αρχείο θα το ανοίξουμε μόνο για γράψιμο?
User avatar
HdkiLLeR
Venus Project Founder
Venus Project Founder
Posts: 4356
Joined: Tue Jan 27, 2004 4:41 pm
Academic status: Alumnus/a
Gender:
Location: New York, NY
Contact:

Post by HdkiLLeR » Tue Nov 06, 2007 7:29 pm

Δώσε λίγο κώδικα απο το τι έχεις κάνεις μεχρι στιγμής για να μπορέσουν να σου κάνουμε ειδικότερες παρατηρήσεις.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------

"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
black_magic
bit level
bit level
Posts: 5
Joined: Mon Nov 05, 2007 10:41 am
Location: Athina

Post by black_magic » Tue Nov 06, 2007 7:37 pm

#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;
}
User avatar
Einherjar
Venus Project Founder
Venus Project Founder
Posts: 3751
Joined: Tue Jan 27, 2004 4:42 pm
Academic status: Alumnus/a
Gender:
Location: Washington DC, USA
Contact:

Post by Einherjar » Tue Nov 06, 2007 11:57 pm

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;
}
Έχω τις εξής παρατηρήσεις:
  1. Έχεις 2 FILE μεταβλητές με το ίδιο όνομα και άλλα συντακτικά λάθη. Προφανώς έφαγες το 1 στη δεύτερη δήλωση. Πάντως αυτό δε παιρνάει compile.
  2. Πρέπει να κλείσεις και τα 2 αρχεία.
  3. Το feof(fp)==0 είναι ισοδύναμο με το !feof(fp). Το δεύτερο είναι πιο καλή τακτική γραψίματος.
  4. Κάνεις δύσκολη τη ζωή σου: Με τους πίνακες και τις πράξεις. Αφού διαβάσεις έναν χαρακτήρα, δηλαδή x=fgetc(fp); κάνεις x+=2 και γράφεις το x στην έξοδο. Αυτό και τίποτα άλλο.
[Better to understand a little than to misunderstand a lot]
black_magic
bit level
bit level
Posts: 5
Joined: Mon Nov 05, 2007 10:41 am
Location: Athina

Post by black_magic » Wed Nov 07, 2007 12:03 am

Ναί έχεις δίκιο σε όλα... Οι παρατηρήσεις σου ήταν σαφέστατες...Σευχαριστώ πολύ!
Post Reply

Return to “Προγραμματισμός”