THMMY.gr

Μαθήματα Βασικού Κύκλου => Δομημένος Προγραμματισμός => Topic started by: pepe on May 18, 2010, 10:01:46 am



Title: [Δομημένος Πρ.] Εργασία G 09/10
Post by: pepe on May 18, 2010, 10:01:46 am

   

Εργασία G (Hμ/νία λήξης δηλώσεων: 24/05/2010)
Εργασία G

Για την καταχώρηση των εισερχομένων κλήσεων που έγιναν προς έναν αριθμό τηλεφώνου η εταιρία κρατά ένα αρχείο κλήσεων για κάθε συνδρομητή. Το όνομα του αρχείου ταυτίζεται με τον αριθμό κλήσης του συνδρομητή. Όταν ο συνδρομητής έχει μια εισερχόμενη κλήση αναζητείται το αντίστοιχο αρχείο το οποίο ανοίγει για να προστεθεί στο τέλος του ο αριθμός του τηλεφώνου από το οποίο έγινε η κλήση.

Να γραφεί το πρόγραμμα το οποίο αρχικά δημιουργεί ένα αρχείο με το όνομα numpers. Στη συνέχεια να διαβάζει τους αριθμούς κλήσης των συνδρομητών της εταιρίας και τους καταχωρεί με τη μορφή strings στο αρχείο. Αυτά τα strings θα είναι τα ονόματα των αρχείων που θα αντιστοιχούν σε κάθε συνδρομητή. Το πρόγραμμα να ορίζει μια ατέρμονα ανακύκλωση σε κάθε επανάληψη της οποίας να διαβάζεται ο αριθμός κλήσης ενός συνδρομητή και ο αριθμός του τηλεφώνου που πραγματοποίησε την κλήση. Στη συνέχεια να αναζητείται στο αρχείο numpers το όνομα του αρχείου που αντιστοιχεί στον συνδρομητή, να ανοίγει το αντίστοιχο αρχείο συνδεόμενο με ένα δυαδικό κανάλι και να καταχωρείται σε αυτό ο αριθμός του τηλεφώνου που τον κάλεσε. Η ανακύκλωση να σταματά αν ως αριθμός του συνδρομητή δοθεί το 0. Στην περίπτωση αυτή το πρόγραμμα να εκτυπώνει για κάθε συνδρομητή τους αριθμούς των τηλεφώνων που τον έχουν καλέσει.

Βοηθητικές παρατηρήσεις

Ο αριθμός του συνδρομητή να διαβάζεται και να καταχωρείται με τη μορφή string ενώ ο αριθμός του τηλεφώνου που τον καλεί με τη μορφή ακεραίου τύπου long.

Για την καταχώρηση και ανάγνωση των ονομάτων των αρχείων που αντιστοιχούν στους συνδρομητές να χρησιμοποιήσετε τις συναρτήσεις fscanf και fprintf.

Για τη σύγκριση των strings μπορείτε να χρησιμοποιήσετε έτοιμες συναρτήσεις που διαθέτει ο μεταγλωττιστής που χρησιμοποιείτε. (Η σχετική συνάρτηση στον μεταγλωττιστή της Borland είναι η strcmp και ορίζεται στο αρχείο string.h).

 


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 19, 2010, 08:35:17 am
Στη συνέχεια να διαβάζει τους αριθμούς κλήσης των συνδρομητών της εταιρίας και τους καταχωρεί με τη μορφή strings στο αρχείο.

Τι θέλει να πει ο ποιητής? Το 6934567890 πχ θα πρέπει να το κάνουμε κάτι του στυλ gamwtonekfwniti?


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: stavri on May 19, 2010, 12:49:22 pm
Το αρχείο numbrers θα είναι αρχείο κειμένου ή δυαδικό αρχείο???


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Ευχαριστο Διαλειμμα on May 19, 2010, 14:33:46 pm
Στη συνέχεια να διαβάζει τους αριθμούς κλήσης των συνδρομητών της εταιρίας και τους καταχωρεί με τη μορφή strings στο αρχείο.

Τι θέλει να πει ο ποιητής? Το 6934567890 πχ θα πρέπει να το κάνουμε κάτι του στυλ gamwtonekfwniti?

Το όνομα του αρχείου ταυτίζεται με τον αριθμό κλήσης του συνδρομητή.

 ;)

Ο πινακας numbers παντως γενικα δεν εχει πρακτικη χρησιμοτητα αλλα τωρα ασκηση ειναι αυτη. :D


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Orfikoss on May 19, 2010, 15:57:44 pm
πώς θα βάζω ως όνομα αρχείου το string που διάβασα;


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 19, 2010, 16:03:24 pm
Θα το αποθηκεύεις σε έναν πίνακα char και fopen(*array,"attrib")?


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Orfikoss on May 19, 2010, 16:15:10 pm
ok το βρήκα.
Δε θέλει αστεράκι, απλά fopen(string,"attr");


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 19, 2010, 18:41:00 pm
Και βέβαια δε θέλει αστεράκι, pointer δείχνει...


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: nohponex on May 19, 2010, 23:45:07 pm
δεν πιστεύω να έχει πρόβλημα ο mr. Kortesis αν δεν ακολουθήσουμε της προτροπές του ε?


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 20, 2010, 09:22:22 am
Στις εργασίες κάνε ό,τι γουστάρεις, εξάλλου δε βαθμολογούνται (δεν ξέρω αν τις κοιτάνε κι όλας). Στο τέλος όμως, numpers λέει, numpers βάλε. Μη σου πω και pampers.


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: sidj0n on May 20, 2010, 17:06:12 pm
πως γινεται να δηλωσουμε και να ανοιγουμε  τα αρχεια των συνδρομητων αφου οι αριθμοι τους δινονται κατα την εκτελεση του προγραμματος?


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 20, 2010, 17:30:03 pm
Ένα FILE pointer στον οποίο θα δίνεις κάθε φορά διαφορετική τιμή.

char a[],b[],...
FILE *skata;

skata = fopen(a,"a+b");
fwrite(*blabla,sizeof(int),1,skata);
fclose(skata);
skata = fopen(b,"a+b");
fwrite(*blabla,sizeof(int),1,skata);
fclose(skata);


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: sidj0n on May 20, 2010, 18:16:24 pm
και δηλαδη ο pointer θα περνει τιμες απο τον πινακα char που θα εχουμε τους αριθμους των συνδρομητων?


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 20, 2010, 20:51:50 pm
Βασικά int θα είναι στην άσκηση, εγώ σου λέω το γενικό σκεπτικό.


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: ScytheB on May 21, 2010, 00:42:02 am

Ο αριθμός του συνδρομητή να διαβάζεται και να καταχωρείται με τη μορφή string ενώ ο αριθμός του τηλεφώνου που τον καλεί με τη μορφή ακεραίου τύπου long.


Καλά και άν εχει πάνω απο 9 ψηφία ο αριθμός τι θα κάνουμε ? long int παει μεχρι 2 δις αντε 4 ο unsigned...


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 21, 2010, 07:15:16 am
Βάζεις double, ξέρω γω..


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: sidj0n on May 21, 2010, 10:08:57 am
Ένα FILE pointer στον οποίο θα δίνεις κάθε φορά διαφορετική τιμή.

char a[],b[],...
FILE *skata;

skata = fopen(a,"a+b");
fwrite(*blabla,sizeof(int),1,skata);
fclose(skata);
skata = fopen(b,"a+b");
fwrite(*blabla,sizeof(int),1,skata);
fclose(skata);

εδω τι συμβολιζουν οι πινακες α,b?


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: nohponex on May 21, 2010, 12:56:59 pm

εδω τι συμβολιζουν οι πινακες α,b?

είναι ονόματα αρχείων (ή path αρχείων)  σε μορφή string που θα χρησιμοποιήσει η fopen


------

να πάρει το numpers που λέει μας είπε ότι σημαίνει NUMbers PERSons :( κ οχι numbers


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: ScytheB on May 21, 2010, 14:20:09 pm
Καλά και άν εχει πάνω απο 9 ψηφία ο αριθμός τι θα κάνουμε ? long int παει μεχρι 2 δις αντε 4 ο unsigned...
Βάζεις double, ξέρω γω..
Σοβαρά με αυτό το κομμάτι τι παίζει ? Αμα το κάνω με string θα γυρίσει να μου πει τπτ?


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: nohponex on May 21, 2010, 14:33:42 pm
όταν τον ρωτούσα , του είπα οτι έβαλα string και ενταξη λεει μονο τα byte χανεις , απο τη στιγμη που σου δουλεύει τι να σου πει κ αυτος ...  ::)  :P


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: anid on May 21, 2010, 14:41:40 pm
Παιδιά αν μπορεί κάποιος να βοηθήσει...Στο τέλος που εμφανίζω τους αριθμούς των συνδρομητών και τους αντίστοιχους αριθμούς που τους κάλεσαν,μου βγάζει τον τελευταίο συνδρομητή 2 φορές


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Groucho on May 21, 2010, 15:16:01 pm
Τι ακριβως ειναι το δυαδικο καναλι?


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: SolidSNK on May 21, 2010, 15:34:13 pm
Τι ακριβως ειναι το δυαδικο καναλι?
binary stream. Windows bullshit. Στα windows πρέπει να ξέρεις αν ένα αρχείο είναι text ή δυαδικό.

Γιατί?
b: Open in binary (untranslated) mode; translations involving carriage-return and linefeed characters are suppressed.

http://msdn.microsoft.com/en-us/library/yeby3zcb%28VS.80%29.aspx


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: sidj0n on May 21, 2010, 16:42:50 pm
προσπαθω να φτιαξω ενα δισδιασταστο πινακα χαρακτηρων mxn δυναμικα(ωστε σε καθε γραμμη να καταχορω και απο ενα string)..δοκιμασα με malloc αλλα δεν νομιζω οτι δουλευει..μηπως ξερει καποιος πως γινεται?


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: nohponex on May 21, 2010, 17:52:08 pm
Παιδιά αν μπορεί κάποιος να βοηθήσει...Στο τέλος που εμφανίζω τους αριθμούς των συνδρομητών και τους αντίστοιχους αριθμούς που τους κάλεσαν,μου βγάζει τον τελευταίο συνδρομητή 2 φορές

Αν μπορείς στείλε περιεκτικά το loop σου , γτ και εγώ πριν κανω κατι διορθώσεις ειχα κατι τέτοια προβλήματα.

προσπαθω να φτιαξω ενα δισδιασταστο πινακα χαρακτηρων mxn δυναμικα(ωστε σε καθε γραμμη να καταχορω και απο ενα string)..δοκιμασα με malloc αλλα δεν νομιζω οτι δουλευει..μηπως ξερει καποιος πως γινεται?
για ποιο λογο τους θες τους 2D πινακες τι θα κρατήσεις σε αυτους.

anyway για το πως γινεται η δεσμευση
Code:
    char**array= (char**)malloc(X* sizeof(char*));

    for(int t=0;t<X;t++){
        array[t] = (char*)malloc(Y * sizeof(char));
    }


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: anid on May 21, 2010, 18:11:54 pm
Αρχίζω με while (!feof(f)) και μέσα διαβάζω από το αρχείο numpers το string,τυπώνω τον αριθμό,μετά άλλο ένα while(!feof(l)) και μέσα διαβάζω από το αρχείο με το όνομα του string τον αριθμό που κάλεσε,τον τυπώνω,κλείνω το εσωτερικό while,κλείνω το αρχείο με το όνομα του string και τέλος κλείνω την εξωτερική while.Γιατί μου φαίνεται σωστό και δε μπορώ να βρω το άτιμο λάθος?? :o


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: nohponex on May 21, 2010, 18:22:54 pm
ξες ποσες ωρες έχασα με αυτο καπως ετσι ξεκίνησα γιατί ειναι το λογικό...

αλλα τελικα αυτο που επρεπε ειναι της μορφης :


do{
   char Number[MAXCallerL];

   fread(Number,1,MAXCallerL,SubscriberFile);
   if(feof(SubscriberFile)){
      break;
   }
   printf("%s\n",Number);
}while(1);

δλδ πρώτα θα διαβάσεις και μετα ελέγχεις αν αυτο που πηγες να διαβάσεις ηταν εντός του αρχείου αλλιώς σταματάς το loop με break;
(αντι για do while(1) μπορεις να βαλεις οποιδήποτε αλλη ατέρμονα επανάληψη)


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: sidj0n on May 21, 2010, 18:34:25 pm
Quote
Code:
    char**array= (short **)malloc(X* sizeof(char*));

    for(int t=0;t<X;t++){
        array[t] = (char*)malloc(Y * sizeof(char));
    }

 δεν δουλευει αυτο ουτε μ char αντι για short..


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: anid on May 21, 2010, 18:52:34 pm
Να 'σαι καλά ρε nohponex αυτό ακριβώς είναι!


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: RaiDeR on May 22, 2010, 10:48:18 am
1η απορια :
γιατι τα αρχει απου δημιουργουντε εχουν 8 γραμματα μονο ??
πχ βαζω ως στρινγκ το κινητο μου και δημιουργει αρχειο το οποιο εχει ως ονομα τα πρωτα 8 ψηφια .... ?? ( μηπως φταει το παναρχαιο borland ??  :D :D)
2η απορια :
πως μπορω να ελεγξω αν το στριγκ( ;D ) του συνδρομητη μου ειναι ισο με το 0 για να σταματησω την επαναληψη ??

3η απορια :
τι κερδιζουμε που το κανουμε διαδικο το αρχειο ?? :Ρ
4η απορια :
πως δημιουργω φακελο μεσα απο το προγραμμα ???

 8)) 8)) 8)) 8)) 8))


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 22, 2010, 16:51:22 pm
Γιατί με το δυαδικό αρχείο μπορούμε να κάνουμε αυτά:

*        You can jump instantly to any structure in the file, which provides random access as in an array.

*        You can change the contents of a structure anywhere in the file at any time.

Για να δημιουργήσεις φάκελο πρέπει να χρησιμοποιήσεις συναρτήσεις που περιέχονται σε διάφορα headers αναλόγως με το λειτουργικό σου.


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Logan on May 22, 2010, 18:10:51 pm
ξερει κανεις αν αυτη ειναι η τελευταια εργασια?


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: il capitano on May 22, 2010, 18:19:46 pm
Λογικα θα εχει αλλη μια που θα ειναι και καλα επαναληπτικη και θα εχει λιγο απ'ολα :P


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: The Stig on May 22, 2010, 18:50:36 pm
Εμείς που έχουμε visual studio πως συγκρίνουμε strings? Υπάρχει η strcmp ή κάποια άλλη ή πρέπει να κάνουμε και συνάρτηση για σύγκριση?


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 22, 2010, 20:19:41 pm
Γιατί με fread; Αφού γράφει κάτω:

"Για την καταχώρηση και ανάγνωση των ονομάτων των αρχείων που αντιστοιχούν στους συνδρομητές να χρησιμοποιήσετε τις συναρτήσεις fscanf και fprintf."

Στο <string.h> είναι και στο visual studio (έλεος vs..)


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: pepe on May 22, 2010, 20:27:08 pm
Δεν έχω καταλάβει σχεδόν τίποτα με αυτά τα &^#@αρχεία και τα &^$*%strings!!  >:(
Ντάξει, το παραδέχομαι ότι έλειπα στην παράδοση,αλλά κι αυτές οι σημειώσεις δε βοηθάνε καθόλου ρε γμτ!
Έχω κάτι λίγες απορίες....
Λεπόν. Καταρχάς, η εργασία ζητάει να κάνουμε αρχεία (αυτά με τους αριθμούς των συνδρομητών) μέσα σε αρχείο (numpers) ή να κάνουμε το αρχείο numpers το οποίο θα περιέχει τους αριθμούς των συνδρομητών και μετά αυτοί οι αριθμοί θα γίνονται νέα αρχεία στα οποία θα βάζουμε τους αριθμούς αυτών που μας καλούν; ή μήπως είναι κάτι 3ο που δεν έχω καταλάβει;;;; ΑΝ είναι το 2ο (μου μοιάζει πιο λογικό...) πώς υλοποιείται πάνω-κάτω; θα ορίζω κάθε φορά αρχεία;;;
Επίσης, τον αριθμό των συνδρομητών θα τον θέσουμε με το γνωστό πατροπαράδοτο τρόπο (malloc) ή παίζει καμιά άλλη μαγκιά με τα strings που επίσης δεν έχω καταλάβει;
Ξέρω ότι πρήζω @@ αλλά όλη μέρα ψάχνω στο ίντερνετ από 'δω κι από 'κει και ακόμα έχω σκοτάδι...
Όποιο καλό παιδί καταλάβει τι έγραψα και μπει στον κόπο ν' απαντήσει έχει δώρο πίτσα-μπύρα για τον τελικό που αρχίζει σε 18'! :)


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: epi on May 22, 2010, 20:34:50 pm
πως δημιουργεις αρχειο μεσα στο αρχειο??????????????? :o το παλευω ολη μερα και δν βγαζω ακρη........... :(


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 22, 2010, 20:58:16 pm
long ld;
char a[4];
FILE *pp, *np = fopen("numpers", "w+b");

// afou exoume grapsei sto file numpers tous ari8mous olwn ton sundromhtwn

rewind(np); // phgainei ton deikth sthn arxh tou arxeiou numpers (ekei pou deixnei o np dld)

while(!feof(np)) { // oso o deikths den einai sto telos tou arxeiou numpers (ekei pou deixnei o np dld pali)
   fscanf(np, "%s ", a); // diabazei enan ari8mo enos sundromhth kai ton apo8hkeuei ston pinaka a
   pp = fopen(a, "a+b"); // 8etei ton pointer pp na deixnei to arxeio me onoma ton ari8mo pou diabasame proghoumenos (auton pou apo8hkeusame ston pinaka a)
      while(!feof(pp)) {
         scanf("%ld", &ld); // diabazei ton ari8mo pou kalese ton sundromhth
         fprintf(pp,"%ld ", ld); // apo8hkeuei ton ari8mo ston arxeio tou sundromhth
      }
    rewind(pp);
    fclose(pp);
}

Δεν τον έλεγξα, κάπως έτσι πάντως είναι τα πράγματα.


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: pepe on May 22, 2010, 20:59:10 pm
Δε διάβασα ακόμα το ποστ σου Neal αλλά είσαι ΜΕΓΑΛΟΣ!!! ΕΥΧΑΡΙΣΤΩ!!!!!


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Αιμιλία η φτερωτή χελώνα on May 22, 2010, 21:26:24 pm
πως δημιουργεις αρχειο μεσα στο αρχειο??????????????? :o το παλευω ολη μερα και δν βγαζω ακρη........... :(
δε δημιουργεις αρχειο μεσα σε αρχειο :o


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: The Stig on May 23, 2010, 13:22:34 pm
Τα strings που εισάγουμε στο numpers τι μήκος έχουν??
Οκ το βρήκα μην απαντήσετε.


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: The Stig on May 23, 2010, 14:51:14 pm
Τα strings που εισάγουμε στο numpers τι μήκος έχουν??
Οκ το βρήκα μην απαντήσετε.

Πες κ σε μας,μην το κρατάς για τον εαυτό σου..  ::)
Βασικά νομίζω ότι δεν παίζει ρόλο το μέγεθος του string (δεν ξέρω αν το διατυπώνω σωστά). Οπότε κάνεις ένα string με μέγεθος όσο μεγάλο θες εσύ, γράφεις τον αριθμό και όταν τελειώσεις με τον αριθμό πατάς enter και καταχωρείται (δεν είναι ανάγκη δηλαδή να χρησιμοποιήσεις όλες τις θέσεις του string).


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 23, 2010, 17:13:04 pm
Το μέγεθος του στρινγκ θα είναι τόσο ώστε να χωράει τον αριθμό, που στην περίπτωση μας το μεγαλύτερο που μπορεί να χρησιμοποιηθεί είναι το 6999999999. Άρα χρειαζόμαστε 33bit (2^33>6999999999), άρα 5 byte (5*8 = 40 bit) και 1 byte για τον escape char που μπαίνει στο τέλος κάθε string, 6 byte. Επειδή ο char δεσμεύει ένα byte για κάθε στοιχείο του, άρα θα βάλουμε 6 στοιχεία στον πίνακα char.


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Orfikoss on May 23, 2010, 17:43:06 pm
δε νομίζω ότι πάει έτσι
επειδή το string είναι πίνακας από char, κάθε κελί του πίνακα αντιστοιχεί σε μία θέση
αφού θέλουμε 10ψήφιο θα βάλεις 11 στοιχεία, ένα για κάθε ψηφίο και ένα για το \0
Η λογική σου είναι σωστή για αριθμούς, για strings όμως, σε κάθε θέση μπαίνουν περισσότερα στοιχεία, αφού είναι μέσα και οι χαρακτήρες κλπ...
διόρθωσέ με αν κάνω λάθος...


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: 8odwris the atsalinos 666 on May 23, 2010, 18:47:31 pm
δε νομίζω ότι πάει έτσι
επειδή το string είναι πίνακας από char, κάθε κελί του πίνακα αντιστοιχεί σε μία θέση
αφού θέλουμε 10ψήφιο θα βάλεις 11 στοιχεία, ένα για κάθε ψηφίο και ένα για το \0
Η λογική σου είναι σωστή για αριθμούς, για strings όμως, σε κάθε θέση μπαίνουν περισσότερα στοιχεία, αφού είναι μέσα και οι χαρακτήρες κλπ...
διόρθωσέ με αν κάνω λάθος...

κι εγω νομιζω οτι ετσι ειναι με τα strings...


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 23, 2010, 19:29:37 pm
#include <stdio.h>

int main ()
{
  char str [6];
  FILE * pFile;

  pFile = fopen ("myfile.txt","w+");
  fprintf (pFile, "%s", "6999999999");
  rewind (pFile);
  fscanf (pFile, "%s", str);
  fclose (pFile);
  printf ("I have read: %s \n",str);
  return 0;
}

Για δοκιμάστε.. Δε χρειάζονται 11 byte. 6 χρειάζονται. Και 5 να βάλετε πάλι θα σας το διαβάσει, αλλά αν είχατε κι άλλο str να διαβάσει θα κολλούσε.


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: lindou on May 23, 2010, 19:51:31 pm
επειδη δεν εχω πολυκαταλαβει αν μπορει ας με βοηθησει καποιος...
πως δημιουργουμε τα αρχεια(διαφορετικα)για καθε συνδρομητη?ειχα σκεφτει κατι σαν

fp (i) =fopen(?????)
ομως πως θα πρεπει να δωσουμε το ονομα του αρχειου ωστε να ειναι διαφορετικο για καθε συνδρομητη??


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 23, 2010, 20:04:07 pm
lindou ολόκληρο κώδικα έχω δώσει παραπάνω. Κάνεις που κάνεις ποστ, διάβασε λίγο τις απαντήσεις προηγουμένως.


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: lindou on May 23, 2010, 20:11:34 pm
το διαβασα απλα δεν το πολυκαταλαβα.για παραδειγμα ο α δεν ειναι μεταβλητη?μπορεις να βαλεις σαν ονομα αρχειου μεταβλητη?


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 23, 2010, 20:16:46 pm
FILE *fopen(char *όνομα_αρχείου,char *τρόπος);


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: JakeLaMotta on May 23, 2010, 20:19:34 pm
γενικα νομιζω οτι πανω-κατω εχω καταλαβει τι παιζει στην εργασια,αλλα θελω να κανω μια ερωτηση για τις παρατητησεις του Κορτεση.Αυτο που γραφει με τη συγκριση των στρινγκς που ακριβως χρειαζεται??φανταζομαι ασφαλως οτιγινεται και αλλιως...


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 23, 2010, 20:26:50 pm
Χρειάζεται στο να συγκρίνεις το string που δίνει ο χρήστης απ'το πληκτρολόγιο με τα string που υπάρχουν στο αρχείο numpers, ώστε να βρεις αν υπάρχει το string που έδωσε ο χρήστης και αν ναι να σε οδηγήσει στο αρχείο του.


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: The Stig on May 23, 2010, 21:40:58 pm
Μπορούν να συγκριθούν αυτά τα δύο string? Γιατί το ένα είναι const char* ενώ το άλλο FILE*...


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: nohponex on May 23, 2010, 22:07:44 pm
{....}

Για δοκιμάστε.. Δε χρειάζονται 11 byte. 6 χρειάζονται. Και 5 να βάλετε πάλι θα σας το διαβάσει, αλλά αν είχατε κι άλλο str να διαβάσει θα κολλούσε.

για string μεγαλύτερα των 5 ψηφίων , βγάζει σφάλμα
Run-Time Check Failure #2 - Stack around the variable 'str' was corrupted.
στο visual studio
& Program Received signal SIGSEGV στο code lite (g++) ..


Αυτο που ειχε γραψει ο Orfikoss ειναι αυτο που ισχύει για τα strings

 
δε νομίζω ότι πάει έτσι
επειδή το string είναι πίνακας από char, κάθε κελί του πίνακα αντιστοιχεί σε μία θέση
αφού θέλουμε 10ψήφιο θα βάλεις 11 στοιχεία, ένα για κάθε ψηφίο και ένα για το \0
{.....}





Μπορούν να συγκριθούν αυτά τα δύο string? Γιατί το ένα είναι const char* ενώ το άλλο FILE*...

δεν συγκρινεις το αρχειο , αλλα το string που εχεις διαβάσει απο το αρχειο, το οποιο αποθηκεύετε προσωρινά στη μνημη


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: JakeLaMotta on May 23, 2010, 22:37:21 pm
ναι,οκ,γινεται η συγκριση μεταξυ των 2 στρινγκς κανονικα,αλλα η συναρτηση αυτη(αυτη που αναφερει ο Κορτεσης για τη Borland)πωσ συντασεται??


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: nohponex on May 23, 2010, 22:59:24 pm
http://www.cplusplus.com/reference/clibrary/cstring/strcmp/

int strcmp ( const char * str1, const char * str2 );

Return Value
Returns an integral value indicating the relationship between the strings:
A zero value indicates that both strings are equal.
A value greater than zero indicates that the first character that does not match has a greater value in str1 than in str2; And a value less than zero indicates the opposite.


επισης αν θες μπορείς να κανεις δικη σου συνάρτηση για σύγκριση αντι να παρεις την έτοιμη.


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Orfikoss on May 24, 2010, 10:36:11 am
Code:
#include <stdio.h>

int main ()
{
  char str [6];
  FILE * pFile;

  pFile = fopen ("myfile.txt","w+");
  fprintf (pFile, "%s", "6999999999");
  rewind (pFile);
  fscanf (pFile, "%s", str);
  fclose (pFile);
  printf ("I have read: %s \n",str);
  return 0;
}

Για δοκιμάστε.. Δε χρειάζονται 11 byte. 6 χρειάζονται. Και 5 να βάλετε πάλι θα σας το διαβάσει, αλλά αν είχατε κι άλλο str να διαβάσει θα κολλούσε.

Το έτρεξες;
Size: 10 bytes (10 bytes)


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: lab_irs on May 24, 2010, 14:10:51 pm
Στη συνέχεια να διαβάζει τους αριθμούς κλήσης των συνδρομητών της εταιρίας και τους καταχωρεί με τη μορφή strings στο αρχείο. Αυτά τα strings θα είναι τα ονόματα των αρχείων που θα αντιστοιχούν σε κάθε συνδρομητή.  παιδια πως το κανουμε αυτο ?????


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Logan on May 24, 2010, 14:25:01 pm
Εχω και εγω μια απορια. Στη συγκριση που θα γινει για να δουμε αν ο συνδρομητης που δινουμε απο το πληκτρολογιο υπαρχει μεσα στο numpers, κανω μια fscanf ( np , " % s " ,&b) μεσα στο numpers, και μετα το συγκρινω με τον συνδρομητη που δινει ο χρηστης αλλα δε δουλευει. προφανως δεν μπορω να παρω το περιεχομενο του αρχειου και λογικα θα εχω προβλημα και μετα στην εκτυπωση. Γνωριζει κανεις τι μπορει να παιζει? Θα χρειαστει fseek, fread,fwrite ή μονο fprintf και fscanf που λεει στην εκφωνηση?


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Orfikoss on May 24, 2010, 17:52:49 pm
@ Logan: Τη σύγκριση την κάνεις με τη συνάρτηση strcmp(string1,string2) που βρίσκεται μέσα στο string.h
Αν η strcmp(string1,string2) έχει τιμή 0 τότε είναι ίσα, αλλιώς είναι διαφορετικά τα string1 και string2. πχ
Code:
if (strcmp(string1,string2)==0)
      printf("%s = %s",string1,string2);


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: nikitas350 on May 24, 2010, 19:30:47 pm
Δυαδικό κανάλι ----> Binary channel ----> Καμμιά σχέση με την C.
Κορτεσιανή μετάφραση.


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: duffy on May 24, 2010, 19:32:21 pm
μπορει καποιος να μου στειλει την εργασια με pm
ευχαριστω !!!
+1


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: festau on May 24, 2010, 20:04:08 pm
μπορει καποιος να μου στειλει την εργασια με pm
ευχαριστω !!!
+1
+1


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: il capitano on May 24, 2010, 20:06:10 pm
Χωρις να θελω να φανω κακος, αλλα μηπως ειναι λιγο παραλογο αυτο που ζητατε?????????και μαλιστα σε φορουμ...............που μπορει να τα διαβασει ο καθενας!!!


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Ευχαριστο Διαλειμμα on May 24, 2010, 20:16:16 pm
Χωρις να θελω να φανω κακος, αλλα μηπως ειναι λιγο παραλογο αυτο που ζητατε?????????και μαλιστα σε φορουμ...............που μπορει να τα διαβασει ο καθενας!!!

γενικα εισαι παραλογος :D
αλλα επι του θεματος συμφωνω μαζι σου 8)) :P


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: pepe on May 24, 2010, 20:19:01 pm
μπορει καποιος να μου στειλει την εργασια με pm
ευχαριστω !!!
+1

Χωρις να θελω να φανω κακος, αλλα μηπως ειναι λιγο παραλογο αυτο που ζητατε?????????και μαλιστα σε φορουμ...............που μπορει να τα διαβασει ο καθενας!!!
Προσωπικά δε θεωρώ ότι ζητάω κάτι περισσότερο παράλογο απ' αυτό που ζητάει ο Κορτέσης. Κάνουμε 4 συνεχόμενες εργασίες ΠΑΝΟΜΟΙΟΤΥΠΕΣ, χωρίς κάτι καινούριο και τώρα μας πετάει μέσα σε μια εργασία στριγκς, αρχεία, δεύτερα αρχεία, λονγκ, strcmp και δε συμμαζεύεται! ΕΛΕΟΣ!
Άσε που (εγώ τουλάχιστον) δε θα την ανεβάσω. Αν δεν κάνω λάθος μπορούμε να μην ανεβάσουμε μέχρι 2 εργασίες. Οπότε αν την έκανε κάποιος και δουλεύει ας μου τη στείλει για να την ΜΕΛΕΤΗΣΩ αφού δεν μπορώ να μάθω κάτι παραπάνω από τις σημειώσεις του mr. Kortesis και το βιβλίο που μας παρέχεται (το οποίο σημειωτέον είναι για τη γλώσσα C++ και μας χρησιμεύει για μάθημα του 3ου εξαμήνου, αλλά παρ' όλ' αυτά αυτό μας προτείνει ο καθηγητής, αλλά ας μην το αναλύσουμε εδώ τώρα!)...Ψάχνομαι απ' το Σάββατο και άκρη δε βγάζω. Δεν μπορώ να την κάνω, το πολύ πολύ να είμαι λίγο στόκος! ;D
Αλλά...ΑΪ ΣΙΧΤΙΡ ΠΙΑ!!!


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Ευχαριστο Διαλειμμα on May 24, 2010, 20:26:27 pm
δεν μπορώ να μάθω κάτι παραπάνω από τις σημειώσεις του mr. Kortesis και το βιβλίο που μας παρέχεται

Για το βιβλιο δεν ξερω να σου απαντησω, μονο απο τις σημειωσεις ειχα διαβασει και ειχα κανει εργασιες στη C.
Ωστοσο, πιστευω οτι η ασκηση ειναι σχετικα απλη. Ζηταει μεν αρκετα διαφορετικα πραγματα, αλλα εχει καποιες βοηθητικες υποδειξεις που ειναι πολυ σημαντικες και χρησιμες. Αν δεν ειχε αυτες συμφωνω πως θα ηταν αρκετης δυσκολιας η ασκηση. Αν εχεις διαβασει ομως τις σημειωσεις του κ.Κορτεση τοτε σε 2 το πολυ 3 ωριτσες(πολες βαζω αλλα δε βαριεσαι ::)) εχεις ετοιμο τον κωδικα, με τα αρχικα λαθη. Απο κει και περα τον διορθωνεις (10 λεπτα) και τελος. 8))


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: pepe on May 24, 2010, 20:45:00 pm
Προφανώς διαφέρουμε τότες στον τρόπο σκέψης και στην αντίληψη σχετικά με το αντικείμενο. Άρα
το πολύ πολύ να είμαι λίγο στόκος! ;D
  ;)
Εμένα πάντως μου πήρε πολλές ώρες να ψάχνω παραδείγματα, λυμένες ασκήσεις και άλλα διάφορα. Μπορεί να έψαχνα σε λάθος μέρος και να κουράστηκα τζάμπα. Το θέμα είναι ότι έφαγα 3 πολύτιμες μέρες και -ίσως- 3 πολύτιμες μονάδες απ' την αρχιτεκτονική, γιατί δεν προλαβαίνω να κάνω τη 2η εργασία μέχρι αύριο και από Τετάρτη ξεκινάω διάβασμα για τη 2η πρόοδο στοχαστικό. Τέσπα, όλ' αυτά είναι να 'χαμε να λέγαμε... Το θέμα είναι ότι το μάθημα είναι ενδιαφέρον αλλά έτσι όπως πήγε το πράμα έχασα τον μπούσουλα...


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: dnitsos on May 24, 2010, 20:50:47 pm
Προφανώς διαφέρουμε τότες στον τρόπο σκέψης και στην αντίληψη σχετικά με το αντικείμενο. Άρα
το πολύ πολύ να είμαι λίγο στόκος! ;D
 ;)
Εμένα πάντως μου πήρε πολλές ώρες να ψάχνω παραδείγματα, λυμένες ασκήσεις και άλλα διάφορα. Μπορεί να έψαχνα σε λάθος μέρος και να κουράστηκα τζάμπα. Το θέμα είναι ότι έφαγα 3 πολύτιμες μέρες και -ίσως- 3 πολύτιμες μονάδες απ' την αρχιτεκτονική, γιατί δεν προλαβαίνω να κάνω τη 2η εργασία μέχρι αύριο και από Τετάρτη ξεκινάω διάβασμα για τη 2η πρόοδο στοχαστικό. Τέσπα, όλ' αυτά είναι να 'χαμε να λέγαμε... Το θέμα είναι ότι το μάθημα είναι ενδιαφέρον αλλά έτσι όπως πήγε το πράμα έχασα τον μπούσουλα...


ο κυριος  Κορτέσης κανει τα πάντα ωστε  να απογοητευτείς, να τα παρατήσεις , να μισησεις τον προγραμματισμό και στο τέλος να αντιγράψεις, γιατι οι γονείς πληρώνουν και πρέπει να ξενοικίασεις, και να φύγεις, και να πάρεις πτυχιο και να.........

....μπράβο τους!!!


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: kakashi on May 24, 2010, 21:34:45 pm
Μια ερώτηση.Τι ακριβώς κάνουν οι συναρτήσεις fscanf και fprintf.Ποιά είναι για ανάγνωση απλά ενός string από το αχείο.Ρωτάω γιατί δεν μπορώ να κάνω την σύγκριση  που ζητάει η άσκηση.


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: nikitas350 on May 24, 2010, 21:40:26 pm
Το ότι ο κορτέσης έχει έναν "ιδιαίτερο" τρόπο διεξαγωγής του μαθήματος, δε δικαιολογεί το να ζητάς έτοιμη την εργασία από τον άλλο. Μπορείς απλά να μην την στείλεις, ή να ρωτήσεις γιατί δεν τρέχει το πρόγραμμα σου στο forum (θα μου πείς αυτό κάνεις τόση ώρα :D). Ως αναφορά για τα συγγράματα προτείνω http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ref=sr_1_1?ie=UTF8&s=books&qid=1274729863&sr=8-1 . (Αν δεν μπορείτε να το βρείτε σε pdf στείλτε pm) (για νας προτείνω αγοραστή φυσικά  :D  :D  :D  )


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: pepe on May 24, 2010, 22:29:34 pm
Το ότι ο κορτέσης έχει έναν "ιδιαίτερο" τρόπο διεξαγωγής του μαθήματος, δε δικαιολογεί το να ζητάς έτοιμη την εργασία από τον άλλο. Μπορείς απλά να μην την στείλεις, ή να ρωτήσεις γιατί δεν τρέχει το πρόγραμμα σου στο forum (θα μου πείς αυτό κάνεις τόση ώρα :D). 
Αυτό κάνω όπως λες κι εσύ! Κι επίσης εξήγησα ότι ΑΝ μου τη στείλει κάποιος ΔΕ θα την ανεβάσω, απλώς θέλω να τη ΜΕΛΕΤΗΣΩ για να καταλάβω πώς λειτουργεί το όλο θέμα με τα αρχεία. Και στην τελική αν δε μου τη στείλει κάποιος οκ, δεν έγινε και τίποτα.
Ως αναφορά για τα συγγράματα προτείνω...
Τι να το κάνω το βιβλίο που προτείνεις εσύ;; αν ήμουν κάποιος που απλώς ήθελα να μάθω C οκ, θα πήγαινα να αγοράσω ένα βιβλίο. Όμως είμαι φοιτητής και νομίζω ότι το μάθημα διδάσκεται στη σχολή και εκτός από τις διαλέξεις μέσα στην αίθουσα υπάρχουν και συγγράματα που προτείνονται για να σε βοηθήσουν να περάσεις το μάθημα, Όμως ο Κορτέσης λέει "Μην πάρετε το "C για μηχανικούς" γιατί δεν είναι καλό. Πάρτε το "Μάθετε τη C++ απ' το 0", απλώς είναι για επόμενο εξάμηνο"....Ας βάλει ένα βιβλίο που να κάνει γι' αυτά που μαθαίνουμε. Κοροϊδευόμαστε;;;


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Neal on May 25, 2010, 07:30:37 am
Θα ανέβουν όλες οι εργασίες λυμένες στο ethmmy


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Burlitsa on May 28, 2010, 17:17:23 pm
Δεν καταλαβαίνω τι εννοεί λέγοντας
"να ανοίγει το αντίστοιχο αρχείο συνδεόμενο με ένα δυαδικό κανάλι και να καταχωρείται σε αυτό ο αριθμός του τηλεφώνου που τον κάλεσε"

εγώ μέσα στο πρόγραμμα έχω δημιουργήσει το αρχειο numpers.txt kai ta thlefvna ka8e sindromiti .txt.
θέλει κάτι διαφορετικό απ το να γράψω στα .txt των συνδρομητών ποιοί τους κάλεσαν?

(leitourgiko: ubuntu, compiler: gnu)


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: τσαι-borg on May 28, 2010, 17:22:12 pm
οχι,απλα θελει να ειναι προσπελασιμο αρα δυαδικο.


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Burlitsa on May 28, 2010, 17:27:11 pm
dhladh na kanw k to numpers diadiko opws kai ta arxeia twn sindromitwn swsta???


Title: Re: [Δομημένος Πρ.] Εργασία G 09/10
Post by: Orfikoss on May 28, 2010, 18:39:20 pm
το numpers δε χρειάζεται να ειναι δυαδικό