THMMY.gr

Μαθήματα Βασικού Κύκλου => Δομημένος Προγραμματισμός => Topic started by: Emfanever on May 22, 2008, 09:46:22 am



Title: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 22, 2008, 09:46:22 am
Εργασία F (Hμ/νία λήξης δηλώσεων: 28/05/2008)


Το σύστημα που καταγράφει τις ενδείξεις ενός σεισμογράφου καταχωρεί σε ένα αρχείο σκληρού δίσκου, για κάθε ημέρα του έτους, τον αριθμό των δονήσεων που έγιναν αντιληπτές από αυτόν. Σε ένα δεύτερο αρχείο καταχωρούνται η ώρα και το μέγεθος των σεισμών που συνέβησαν κατά τη διάρκεια της ημέρας. Το μέγεθος του σεισμού καταχωρείται ως αριθμός τύπου float ενώ η ώρα καταχωρείται με τη μορφή τριών ακεραίων αριθμών που αντιστοιχούν στην ώρα τα λεπτά και τα δευτερόλεπτα.

Να γραφεί το πρόγραμμα το οποίο διαχειρίζεται το σύστημα καταγραφής του σεισμογράφου. Στο πρόγραμμα να ανοίγουν τα αρχεία daysnum και earthquake στο πρώτο από τα οποία θα καταχωρείται, για μια περίοδο 365 ημερών, ο αριθμός των δονήσεων που ανιχνεύτηκαν για κάθε ημέρα και στο δεύτερο η ώρα και το μέγεθος της κάθε δόνησης.

Στο πρόγραμμα να ορισθεί μια ανακύκλωση με 365 επαναλήψεις σε κάθε μια από τις οποίες  να ορίζεται μια νέα ατέρμονα ανακύκλωση σε κάθε επανάληψη της οποίας να ζητείται η εισαγωγή της ώρας  και του μεγέθους ενός σεισμού στοιχεία τα οποία και να καταχωρούνται στο αρχείο earthquake.  Η ανακύκλωση αυτή να τερματίζεται με την εισαγωγή αριθμού μεγαλύτερου του 23 ως τιμή της ώρας. Με την έξοδο από την ατέρμονα ανακύκλωση να καταχωρείται στο αρχείο daysnum ο αριθμός των δονήσεων που ανιχνεύτηκαν. Με τη συμπλήρωση των 365 επαναλήψεων να κλείνουν τα δύο αρχεία που άνοιξε το πρόγραμμα.

Στη συνέχεια το πρόγραμμα να δίνει τη δυνατότητα εισάγοντας τον αύξοντα αριθμό μιας ημέρας του έτους να αναζητούνται στο αρχείο earthquake και να εκτυπώνονται τα μεγέθη και η ώρα των δονήσεων που συνέβησαν την ημέρα αυτή. 


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: zeus90 on May 22, 2008, 15:47:46 pm
Απλή και ξεκάθαρη φαίνεται...επιτέλους!!! :D
Για να δούμε...  8)


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 22, 2008, 21:29:33 pm
Η εκφώνηση απλά σε αφήνει ελεύθερο να κάνεις ό,τι γουστάρεις εδώ. :P


Η άσκηση έχει πολύ μεγάλο ενδιαφέρον... και ξεκινώ με το εξής: πώς θα "γράψετε" τα δεδομένα στα αρχεία σας;  ::)


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: timmyyy on May 22, 2008, 22:31:45 pm
Παιδια εχεις κανεις ιδεα ποσες ακομα εργασιες θα βαλει και ποτε θα γινει η εξεταση των εργασιων?

εχει πει τιποτα στο μαθημα?

ευχαριστω..


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: zeus90 on May 22, 2008, 22:39:11 pm
Λογικά αυτή είναι η τελευταία εργασία (Την άλλη Πέμπτη είναι και το τελευταίο εργαστήριο...)

Δεν έχουν πει ακόμα πότε θα γίνει η εξέταση των εργασιών...Όταν πουν λογικά θα υπάρξει ενημέρωση και στο e-THMMY...


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: tomshare3 on May 23, 2008, 02:08:01 am
Η εκφώνηση απλά σε αφήνει ελεύθερο να κάνεις ό,τι γουστάρεις εδώ. :P


Η άσκηση έχει πολύ μεγάλο ενδιαφέρον... και ξεκινώ με το εξής: πώς θα "γράψετε" τα δεδομένα στα αρχεία σας;  ::)

μια πρωτη ιδεα:
ημερα ωρα λεπτα δευτερολεπτα μεγεθος\n

ισως το πιο απλο! ;)
---επιτελους και μια σωστη εργασια!! :D


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Komimis on May 23, 2008, 10:52:36 am
πώς ψάχνω για τα στοιχεία της συκγεκριμένης μέρας στο earthquake (στο τέλος του προγράμματος) και τα εμφανίζω στον χρήστη ? =)


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: anonymous-root on May 23, 2008, 15:16:17 pm
"Στο πρόγραμμα να ορισθεί μια ανακύκλωση με 365 επαναλήψεις σε κάθε μια από τις οποίες  να ορίζεται μια νέα ατέρμονα ανακύκλωση σε κάθε επανάληψη της οποίας να ζητείται η εισαγωγή της ώρας  και του μεγέθους ενός σεισμού στοιχεία τα οποία και να καταχωρούνται στο αρχείο earthquake."



Δηλαδή;


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 23, 2008, 16:00:13 pm
"Στο πρόγραμμα να ορισθεί μια ανακύκλωση με 365 επαναλήψεις σε κάθε μια από τις οποίες  να ορίζεται μια νέα ατέρμονα ανακύκλωση σε κάθε επανάληψη της οποίας να ζητείται η εισαγωγή της ώρας  και του μεγέθους ενός σεισμού στοιχεία τα οποία και να καταχωρούνται στο αρχείο earthquake."



Δηλαδή;
Τι δηλαδή;  :P

Για κάθε μέρα ζητάς ώρα και ισχύ ενός σεισμού και προχωράς στην επόμενη μέρα εάν η ώρα είναι > 23.



πώς ψάχνω για τα στοιχεία της συκγεκριμένης μέρας στο earthquake (στο τέλος του προγράμματος) και τα εμφανίζω στον χρήστη ? =)
Αυτό έλεγα και πριν αλλά τώρα "βγαίνω"....  ::)



Εσύ θα επιλέξεις το πώς!  8)
Το πώς θα τα οργανώσεις δηλαδή στα αρχεία σου είναι καθαρά δικό σου θέμα. Ο πιο απλός τρόπος είναι προφανώς ώρα-λεπτό-δευτερόλεπτο-ισχύς-ώρα-ώρα-λεπτό-δευτερόλεπτο-ισχύς, κοκ... Χύμα δηλαδή!




Και υπάρχουν κι άλλοι τρόποι....  :D (Από "s" αρχίζει :P)


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Komimis on May 23, 2008, 16:21:00 pm


πώς ψάχνω για τα στοιχεία της συκγεκριμένης μέρας στο earthquake (στο τέλος του προγράμματος) και τα εμφανίζω στον χρήστη ? =)
Αυτό έλεγα και πριν αλλά τώρα "βγαίνω"....  ::)



Εσύ θα επιλέξεις το πώς!  8)
Το πώς θα τα οργανώσεις δηλαδή στα αρχεία σου είναι καθαρά δικό σου θέμα. Ο πιο απλός τρόπος είναι προφανώς ώρα-λεπτό-δευτερόλεπτο-ισχύς-ώρα-ώρα-λεπτό-δευτερόλεπτο-ισχύς, κοκ... Χύμα δηλαδή!




Και υπάρχουν κι άλλοι τρόποι....  :D (Από "s" αρχίζει :P)

όχι ρε δεν εννοώ αυτό..εννοώ πώς διαβάζω συγκεκριμένα πράγματα και τα τυπώνω από το αρχείο που δημιουργώ! με την fseek?


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: tomshare3 on May 23, 2008, 16:30:16 pm
ενας τροπος ειναι να τα βαλεις ολα σε ενα πινακα (ειτε απλο ειτε δυναμικο) με την fread και μετα να κανεις την αναζητηση απο τον πινακα..
Ή αν βαλεις τη μια μερα κατω απο την αλλη οπως ειπα πριν μπορεις να διαβαζεις γραμμη γραμμη με την fgets..
Αλλα θα ειμαι πιο σιγουρος οταν ολοκληρωσω το κωδικα.... :-\


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 23, 2008, 17:04:59 pm
Πάντως μη χρησιμοποιήσετε fprintf και fscanf γιατί γα*****αι το πρόγραμμα...

Ή αν βαλεις τη μια μερα κατω απο την αλλη οπως ειπα πριν μπορεις να διαβαζεις γραμμη γραμμη με την fgets..

H fgets για χαρακτήρες δεν είναι??


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: tomshare3 on May 23, 2008, 18:02:57 pm
η fgetc ειναι για χαρακτηρες η fgets διαβαζει ολη τη σειρα σαν ενα string μεχρι να βρει χαρακτηρα αλλαγης γραμμης..

Πάντως μη χρησιμοποιήσετε fprintf και fscanf γιατί γα*****αι το πρόγραμμα...


ισα ισα αφου σε ενδιαφερει πως θα τοποθετιθουν τα δεδομενα ,για να τα αναζητησεις μετα, δεν πρεπει να χρησιμοποιησεις fprintf??


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 23, 2008, 18:11:37 pm
η fgetc ειναι για χαρακτηρες η fgets διαβαζει ολη τη σειρα σαν ενα string μεχρι να βρει χαρακτηρα αλλαγης γραμμης..

Πάντως μη χρησιμοποιήσετε fprintf και fscanf γιατί γα*****αι το πρόγραμμα...


ισα ισα αφου σε ενδιαφερει πως θα τοποθετιθουν τα δεδομενα ,για να τα αναζητησεις μετα, δεν πρεπει να χρησιμοποιησεις fprintf??

Η fgets διαβάζει string αλλά δε θέλουμε να διαβάζει τα δεδομένα σαν string, σαν αριθμούς . Εξάλλου το string αποτελείται από χαρακτήρες ,άρα δε πρέπει να το αποθηκεύεις σε πίνακα char?
Στην εκφώνηση λέει:
Quote
Το μέγεθος του σεισμού καταχωρείται ως αριθμός τύπου float ενώ η ώρα καταχωρείται με τη μορφή τριών ακεραίων αριθμών

2.Μα ούτως ή άλλως τα δεδομένα καταχωρούναται σε σειρά. Με το fprintf εκτός από τα bytes που καταλαμβάνει κάθε αριθμός αποθηκεύονται και άλλα bytes ,οπότε όταν πας να κάνεις fseek (με βάση τα bytes) θα μπερδευτείς.

Εμένα πάντως μου έφαγε πολύ χρόνο το fprintf. Όταν έβαλα putw ,fwrite κτλ ,λύθηκε το πρόβλημά μου!


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: tomshare3 on May 23, 2008, 19:12:24 pm
οταν εισαγω τα δεδομενα στο αρχειο τα εισαγω ως int κ float ανοιστοιχα.. αλλα στο δευτερο μερος δεν διευκρινιζει τι τυπου θα ειναι τα δεδομενα που θα εκτυπωνονται! οποτε τα εβαλα σε εναν δυναμικο πινακα χαρακτηρων με την fread και εκανα την αναζητηση...


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 23, 2008, 19:30:51 pm
Άρα το έκανες με fread ,όχι με fgets! Αυτό λέω και εγώ


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: tomshare3 on May 23, 2008, 19:50:47 pm
Άρα το έκανες με fread ,όχι με fgets! Αυτό λέω και εγώ

 :D


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Komimis on May 23, 2008, 21:21:45 pm
Δηλάδη εκτός απο την καταχώριση των δεδομένων στο αρχείο earthquake να τα κάνω και σε ένα πίνακα και να τα διαβάσω από εκεί?? καλό ακούγεται..


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 23, 2008, 21:25:13 pm
Δηλάδη εκτός απο την καταχώριση των δεδομένων στο αρχείο earthquake να τα κάνω και σε ένα πίνακα και να τα διαβάσω από εκεί?? καλό ακούγεται..

Δεν είναι απαραίτητο να κάνεις πίνακα. Απλά να ξέρεις σε ποιο byte αρχίζουν και τελειώνουν τα δεδομένα που αφορούν κάθε σεισμό.
Όπως βολεύει τον καθένα....


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Komimis on May 23, 2008, 21:47:31 pm
Δηλάδη εκτός απο την καταχώριση των δεδομένων στο αρχείο earthquake να τα κάνω και σε ένα πίνακα και να τα διαβάσω από εκεί?? καλό ακούγεται..

Δεν είναι απαραίτητο να κάνεις πίνακα. Απλά να ξέρεις σε ποιο byte αρχίζουν και τελειώνουν τα δεδομένα που αφορούν κάθε σεισμό.
Όπως βολεύει τον καθένα....

ωραία άρα με αυτον τον τρόπο χρησιμοποιώ την fgets ? και πως μετράω τα bytes?  ::)


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 23, 2008, 22:21:28 pm
sizeof  8)



Καλοί οι πίνακες btw.... αλλά υπάρχουν κι άλλες δομές. :P


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 24, 2008, 00:57:18 am
Δηλάδη εκτός απο την καταχώριση των δεδομένων στο αρχείο earthquake να τα κάνω και σε ένα πίνακα και να τα διαβάσω από εκεί?? καλό ακούγεται..

Δεν είναι απαραίτητο να κάνεις πίνακα. Απλά να ξέρεις σε ποιο byte αρχίζουν και τελειώνουν τα δεδομένα που αφορούν κάθε σεισμό.
Όπως βολεύει τον καθένα....

ωραία άρα με αυτον τον τρόπο χρησιμοποιώ την fgets ? και πως μετράω τα bytes?  ::)

Όχι δε χρησιμοποιείς την fgets. Για να διαβάσεις και να γράψεις ακέραιους χρησιμοποιείς getw και putw. (H σύνταξή τους υπάρχει στις σημειώσεις).
Μπορείς να χρησιμοποιήσεις και fread,fwrite.

Όσον αφορά το μέτρημα των bytes:
int hour    ->      ως συνήθως 2 bytes (ανάλογα με το σύστημα)
int minutes     ->      2 bytes
int seconds    ->      2 bytes
float megethos  ->    4 bytes

Σύνολο :  10 bytes

Τα παραπάνω, όπως είπε και ο Γιώργος, μπορείς να τα επιβεβαιώσεις με το sizeof.
Έτσι ξέροντας τη μέρα μπορείς με την fseek να πηγαίνεις στο σημείο που θέλεις και μετά να διαβάζεις τα 10 bytes που σε ενδιαφέρουν. Προσοχή όμως γιατί μια μέρα μπορεί να έχει παραπάνω από έναν σεισμό!


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: mitsos_dlx on May 24, 2008, 19:15:50 pm
Αν κάνουμε τα αρχεία text και όχι binary υπάρχει κάποιος τρόπος να προσπελάσουμε μια συγκεκριμένη σειρά κατευθείαν;
Για να έχουν τα αρχεία νόημα και από μόνα τους. Να μπορεί κάποιος να τα ανοίξει και να τα διαβάσει χωρίς το πρόγραμμα, αν είναι πχ κάπως έτσι:

09:45:21 4,5
10:34:01 3,2
κλπ...

Η fseek() δουλεύει με bits οπότε δεν είναι βολική. Μήπως ξέρει κανείς κάτι αντίστοιχο για text files;


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 24, 2008, 20:24:02 pm
Σε text files γίνεται, απλά θα σου φάει πιο πολύ χρόνο έτσι. Νομίζω πχ ότι μπορείς να το βάλεις έτσι και να το παίρνεις με μία
fscanf(f, "%d:%d:%d", &h, &m, &s)

Αλλά binary files και τα μυαλά στα μίξερ. ;)
Άσε που θα μπουν πιο οργανωμένα έτσι..




key word για την εργασία: struct


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 24, 2008, 20:26:53 pm
Αν κάνουμε τα αρχεία text και όχι binary υπάρχει κάποιος τρόπος να προσπελάσουμε μια συγκεκριμένη σειρά κατευθείαν;
Για να έχουν τα αρχεία νόημα και από μόνα τους. Να μπορεί κάποιος να τα ανοίξει και να τα διαβάσει χωρίς το πρόγραμμα, αν είναι πχ κάπως έτσι:

09:45:21 4,5
10:34:01 3,2
κλπ...

Η fseek() δουλεύει με bits οπότε δεν είναι βολική. Μήπως ξέρει κανείς κάτι αντίστοιχο για text files;


Αυτός είναι ένας τρόπος ,άλλα στην fseek μπορεί να μπερδευτείς!
Code:
#include <stdio.h>

void main()
{
  int n,t1=1,t2=2,t3=3,t4=4,t5=5,t6=6,t7=7,t8=8,t9=9;
  int t,tt,ttt;
  FILE *arxeio;


  arxeio=fopen("test.txt","w");

  fprintf(arxeio,"%d %d %d\n",t1,t2,t3);
  fprintf(arxeio,"%d %d %d\n",t4,t5,t6);
  fprintf(arxeio,"%d %d %d\n",t7,t8,t9);

  fclose(arxeio);

  arxeio=fopen("test.txt","r");
  printf("Se poia grammi thes na pas?(0,1 h 2?)");
  scanf("%d",&n);

  if (n)
      fseek(arxeio,n*7-1,SEEK_SET);     // 7 bytes einai to megethos kathe grammis. To vriskeis me ftell()

  fscanf(arxeio,"%d %d %d\n",&t,&tt,&ttt);

  printf("\n%d %d %d",t,tt,ttt);

}



Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: anonymous-root on May 24, 2008, 20:41:29 pm
Οκ και εγώ σκέφτηκα την struct, εξάλλου δεν έβαλε εργασία που να την εξετάζει.

Τα αρχεία θα είναι binary έτσι;


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 24, 2008, 20:51:18 pm
Η εκφώνηση δε θέτει κανένα περιορισμό για τον τύπο του αρχείου. Όπως και να έχει το δικό μου binary είναι!


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 24, 2008, 20:54:15 pm
Το αρχείο daysnum είναι λίγο άχρηστο από τη στιγμή που θα καταχωρηθεί ο αριθμός των σεισμών κάθε μέρας. Θα μπορούσε να χρησιμεύσει για την αναζήτηση στο earthquake αλλά αφού δεν το επιβάλλει η εκφώνηση , μπορούμε να διαλέξουμε ευκολότερο τρόπο !


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 24, 2008, 21:59:55 pm
Οκ και εγώ σκέφτηκα την struct, εξάλλου δεν έβαλε εργασία που να την εξετάζει.

Τα αρχεία θα είναι binary έτσι;
Ναι, αν χρησιμοποιήσεις struct. Βέβαια.... εγώ δεν έβαλα το πρόσθετο "b" στην fopen και δεν μου έχει παρουσιάσει πρόβλημα όσες φορές το 'χω κάνει αυτό. (Να πω την αλήθεια αυτό το "b" δεν ξέρω πού σκατά χρησιμεύει! :D)

Το αρχείο daysnum είναι λίγο άχρηστο από τη στιγμή που θα καταχωρηθεί ο αριθμός των σεισμών κάθε μέρας. Θα μπορούσε να χρησιμεύσει για την αναζήτηση στο earthquake αλλά αφού δεν το επιβάλλει η εκφώνηση , μπορούμε να διαλέξουμε ευκολότερο τρόπο !
Θα μπορούσε να χρησιμοποιηθεί μαζί με μία fseek ώστε να πάμε κατευθείαν στο record που μας ενδιαφέρει στην earthquake. Oh well, δεν πειράζει αν βάλεις το πρόγραμμα να σου εκτυπώνει και πόσοι σεισμοί έγιναν εκείνη την ημέρα - για να δώσεις ένα νόημα στην άχαρη ζωή του daysnum. :P


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 24, 2008, 23:05:48 pm
Ένα struct πως διαβάζεται και γράφεται σε αρχείο??Με fread ,fwrite ?


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 24, 2008, 23:08:43 pm
Ένα struct πως διαβάζεται και γράφεται σε αρχείο??Με fread ,fwrite ?
Oh yeah. ;)


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 24, 2008, 23:36:36 pm
Μάλιστα, και πως συντάσσονται σε αυτή την περίπτωση? Δηλαδή στη θέση του pointer τι βάζεις?


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 24, 2008, 23:41:33 pm
Εάν δουλέψεις με δείκτες, προφανώς τον δείκτη που δείχνει στη δομή σου. Αλλιώς, τη διεύθυνση της δομής.


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: ripper_george on May 25, 2008, 05:21:59 am
Ρε παιδες, έχει κανένας ιδέα για το πως μπορώ να πω στην fseek να πάει σε άλλη γραμμη <Enter>
χωρίς να χρειάζεται να ξέρω το μέγεθος της γραμμής???
Αυτό που σκέφτηκα είναι:

rewind ( fp );
fscanf ( fp , "%c" , &s );
for ( i=0 ; i<enter ; i++ )
{
 fseek ( fp, 1, SEEK_CUR );
 while ( s != '\n' )
 {
  fseek ( fp, 1, SEEK_CUR );
  fscanf ( fp , "%c" , &s );
 }
 if ( s=='\n' )
 {
  fseek ( fp , 2 , SEEK_CUR );
 }
}


Όπου enter οι πόσες γραμμές θέλω να πάω κάτω....

Δυστηχώς όμως κάπου χωλαίνει.....
Μήπως υπάρχει κάτι πιο "μαζεμένο" ή τέλος πάντων βλέπει κανένας σας πού έχω σφάλμα???? :-[


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: AgentCain on May 25, 2008, 10:35:12 am
Υπάρχει κάτι πιο μαζεμένο
Προσωπικά χρησιμοποιήσα μόνο fscanf και fprintf και το πρόγραμμα τρέχει ομαλά.
Τα δεδομένα βρίσκονται σε διαφορετικές γραμμές. Απλώς ότι έβαλα στην fprintf έβαλα και ως όρισμα στη fscanf
Το οποίο σημαίνει ένα "\n" στο τέλος.


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Abstract on May 25, 2008, 17:59:23 pm
Αδυναμία σύνδεσης με τη βάση δεδομένων [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.. Επικοινωνήστε με τους διαχειριστές του συστήματος

ξέρει κανείς γιατί το βγάζει αυτο όταν δημιουργώ ομάδα και τι κάνω? :-\


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: zeus90 on May 25, 2008, 18:27:54 pm
Αδυναμία σύνδεσης με τη βάση δεδομένων [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.. Επικοινωνήστε με τους διαχειριστές του συστήματος

ξέρει κανείς γιατί το βγάζει αυτο όταν δημιουργώ ομάδα και τι κάνω? :-\

Απλά περιμένεις να διορθωθεί το πρόβλημα του e-THMMY το οποίο παρουσιάζεται πολύ συχνα τελευταίως.... :-\
Αν θέλεις στείλε τους και κανα μαιλ μπας και το πάρουν χαμπάρι νωρίτερα..... :D
Δοκίμασε ξανά σε λίγες ώρες και λογικά θα είναι οκ.... ;)


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Abstract on May 25, 2008, 18:43:24 pm
θενκς!  :)


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: fourier on May 25, 2008, 22:51:03 pm
Υπάρχει κάτι πιο μαζεμένο
Προσωπικά χρησιμοποιήσα μόνο fscanf και fprintf και το πρόγραμμα τρέχει ομαλά.
Τα δεδομένα βρίσκονται σε διαφορετικές γραμμές. Απλώς ότι έβαλα στην fprintf έβαλα και ως όρισμα στη fscanf
Το οποίο σημαίνει ένα "\n" στο τέλος.

Κι εγω ακριβως αυτο εκανα, δηλαδη με αρχεια κειμενου, αλλα εχω προβλημα στο τελος στην αναζητηση.
Η καταχωρηση στα αρχεια γινεται κανονικα, με την εξης μορφη:
D,H:M:S,R\n
οπου, προφανως, D μερα, H ωρα, M λεπτο, S δευτερολεπτο και R ενταση.

Εχω ελεγξει τα αρχεια, μετα απο δοκιμαστικη εκτελεση, και η καταχωρηση ειναι ΟΚ. Εχω ομως προβλημα στην αναζητηση. Παραθετω το κομματι αυτο του κωδικα:
Code:
	earthquake = fopen("earthquake.txt", "r");

if(earthquake==NULL) {
printf("\nLa8os sto anoigma tou arxeiou...\n");
return 0;
}

printf("\nGia poia mera 8elete anazhthsh dedomenwn? ");
scanf("%d",&search);

if(search==0) {
printf("Eksodos apo to programma!\n\n");
return 0;
}

while(!feof(earthquake)){
fscanf(earthquake,"%d%c%d%c%d%c%d%c%f%c",&rd_d,&q,&rd_hr,&q,&rd_mn,&q,&rd_sc,&q,&rd_rch,&q);
if(rd_d==search) {
printf("%d:%d:%d : seismos %4.2f richter\n",rd_hr,rd_mn,rd_sc,rd_rch);
}
}

Για να μην κουραζεστε στην.. αποκρυπτογραφηση του κωδικα, η δουλεια γινεται ως εξης: Σε ενα while-loop (με συνθηκη "οσο δεν ειμαστε στο τελος του αρχειου "feof") το fscanf διαβαζει με τη σειρα:
int ημερας --> rd_d
char ","
int ωρας --> rd_hr
char ":"
int λεπτου --> rd_mn
char ":"
int δευτερολεπτου --> rd_sc
char ","
float εντασης --> rd_rch
char "\n"

Μια if-συνθηκη λεει οτι εαν η μερα που αναγνωστηκε (aka rd_d) ειναι ιση με την επιθυμητη (aka search) να μου εκτυπωσεις με τη σειρα αυτα που σου ζηταω.
Αλλιως φτανουμε στο }, το οποιο σημαινει πως το loop ξαναρχιναει απ' την αρχη διαβαζοντας την επομενη σειρα κλπ κλπ κλπ,
μεχρι να φτασουμε στο τελος οπου τελειωνει το loop, και απο κατω εχει ενα return 0 και τελειωνει το προγραμμα.

Το αποτελεσμα ομως ειναι μια ατελειωτη επαναληψη του τελευταιου αποτελεσματος........


Any help plz???  :-[


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 25, 2008, 22:54:59 pm
fscanf(earthquake,"%d,%d:%d:%d,%f", ...

δοκίμασε :)


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: fourier on May 25, 2008, 22:57:40 pm
fscanf(earthquake,"%d,%d:%d:%d,%f", ...

δοκίμασε :)

Thanx, θα το δοκιμασω, αλλα με το '\n' τι να κανω?
Να βαλω "....%d,%f\n)" ??



Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 25, 2008, 22:59:03 pm
ΠΟΤΕ (f)scanf με το '\n', νομίζω κολλά το πρόγραμμα or something.
Δεν θυμάμαι τι πρέπει να κάνεις για ν' αλλάξεις γραμμή... έχω καιρό να χρησιμοποιήσω μη-binary αρχείο.


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: fourier on May 25, 2008, 22:59:54 pm
Thanx, παντως και παλι το προβλημα δεν λυθηκε...


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 25, 2008, 23:17:43 pm
Για δώσε μου την fprintf με την οποία περνάς στο αρχείο σου τα δεδομένα..


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: fourier on May 25, 2008, 23:19:11 pm
Ολοκληρο το προγραμμα:

Code:
#include <stdio.h>
#include <stdlib.h>
FILE *daysnum, *earthquake;

int main(void) {

int d, j, hr, mn, sc, rd_d, search, rd_hr, rd_mn, rd_sc;
float rch, rd_rch;
char q;
struct seismos {
int day;
int hrs;
int min;
int sec;
float richter;
};


daysnum = fopen("daysnum.txt", "w");
earthquake = fopen("earthquake.txt", "w");

if(daysnum==NULL || earthquake==NULL) {
printf("\nLa8os sto anoigma tou arxeiou...\n");
return 0;
}

for (d=1; d<=5; d++) {
hr=mn=sc=j=0;
rch=0.0;
printf("\nHmera %dh:",d);
for(;;) {
printf("\nEisagete thn wra tou seismou, sth morfh HH MM SS afhnontas TOULAXISTON ENA KENO anamesa: \n");
scanf("%d %d %d", &hr, &mn, &sc);
if(hr>=24) {
break;
}

printf("Eisagete to mege8os tou seismou: ");
scanf("%f",&rch);

fprintf(earthquake, "%d,%d:%d:%d,%f\n",d,hr,mn,sc,rch);
j++;
}
fprintf(daysnum, "%d\n",j);
}

fclose(daysnum);
fclose(earthquake);

/* TELOS KATAXWRHSHS TIMWN. AKOLOU8EI TO KOMMATI THS ANAZHTHSHS */

earthquake = fopen("earthquake.txt", "r");

if(earthquake==NULL) {
printf("\nLa8os sto anoigma tou arxeiou...\n");
return 0;
}

printf("\nGia poia mera 8elete anazhthsh dedomenwn? ");
scanf("%d",&search);

if(search==0) {
printf("Eksodos apo to programma!\n\n");
return 0;
}

while(!feof(earthquake)){
fscanf(earthquake,"%d,%d:%d:%d:%f%c",&rd_d,&rd_hr,&rd_mn,&rd_sc,&rd_rch,&q);
if(rd_d==search) {
printf("%d:%d:%d : seismos %4.2f richter\n",rd_hr,rd_mn,rd_sc,rd_rch);
}
}

return 0;
}




Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 25, 2008, 23:32:41 pm
Δεν μπορώ να βρω άκρη. :-\
Είναι και το ότι έχω καιρό να το κάνω αυτό.


Γιατί δεν το γυρνάς σε binary file με fread και fwrite να βρεις την υγειά σου;


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: fourier on May 25, 2008, 23:45:34 pm
Δεν μπορώ να βρω άκρη. :-\
Είναι και το ότι έχω καιρό να το κάνω αυτό.


Γιατί δεν το γυρνάς σε binary file με fread και fwrite να βρεις την υγειά σου;

Να σου πω την αληθεια, αυτο αποφασισα, αλλα το αφησα για αυριο με καθαρο μυαλο.

Παντως κατι πρεπει να παιζει με το while-loop, γιατι δεν τερματιζεται ποτε...
Θα κανω και αλλη μια δοκιμη πριν το παρατησω: Θα το βαλω να χωνει 1-2 χαρακτηρες του αλφαβητου (π.χ. qq) μετα την τελευταια εισαγωγη τιμων, και θα βαλω το while να ψαχνει μεχρι να βρει αυτους και οχι μεχρι το τελος του αρχειου...


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 25, 2008, 23:48:46 pm
Α ναι, θα σε πω. Η feof γενικά επιστρέφει την τιμή 1 ΑΦΟΥ έχεις διαβάσει κάτι απ' το αρχείο.
Οπότε βάλε την read στο ΤΕΛΟΣ ΤΕΛΟΣ της επανάληψης.


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 26, 2008, 00:09:39 am
Εφόσον η feof επιστρέφει μη μηδενικές τιμές πριν τελειώσει το αρχείο γιατί βάζουμε
while(!feof(earthquake))

και όχι while(feof(earthquake))  ,δηλαδή χωρίς θαυμαστικό? Έγινε η ίδια ερώτηση στον Τριανταφυλλίδη αλλά δε θυμάμαι αν απάντησε... :-\


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: tomshare3 on May 26, 2008, 00:17:54 am
νομιζω καταληξαμε στο συμπερασμα οτι εχει λαθος ο κορτεσης στις σημειωσεις οτι η foef επιστρεφει 0 οταν τελειωσει το αρχειο.. αλλα ενταξει στ τελικη ενα printf  κανεις και βλεπεις την τιμη της καθε στιγμη ;)

http://www.cplusplus.com/reference/clibrary/cstdio/feof.html
Return Value:
A non-zero value is returned in the case that the End-of-File indicator associated with the stream is set.
Otherwise, a zero value is returned.

Αρα επιστρεφει 0 μεχρι να φτασει στο τελος οπου δινει μια μη μηδενικη!


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 26, 2008, 04:08:37 am
Ολοκληρο το προγραμμα:

Code:
#include <stdio.h>
#include <stdlib.h>
FILE *daysnum, *earthquake;

int main(void) {

int d, j, hr, mn, sc, rd_d, search, rd_hr, rd_mn, rd_sc;
float rch, rd_rch;
char q;
struct seismos {
int day;
int hrs;
int min;
int sec;
float richter;
};


daysnum = fopen("daysnum.txt", "w");
earthquake = fopen("earthquake.txt", "w");

if(daysnum==NULL || earthquake==NULL) {
printf("\nLa8os sto anoigma tou arxeiou...\n");
return 0;
}

for (d=1; d<=5; d++) {
hr=mn=sc=j=0;
rch=0.0;
printf("\nHmera %dh:",d);
for(;;) {
printf("\nEisagete thn wra tou seismou, sth morfh HH MM SS afhnontas TOULAXISTON ENA KENO anamesa: \n");
scanf("%d %d %d", &hr, &mn, &sc);
if(hr>=24) {
break;
}

printf("Eisagete to mege8os tou seismou: ");
scanf("%f",&rch);

fprintf(earthquake, "%d,%d:%d:%d,%f\n",d,hr,mn,sc,rch);
j++;
}
fprintf(daysnum, "%d\n",j);
}

fclose(daysnum);
fclose(earthquake);

/* TELOS KATAXWRHSHS TIMWN. AKOLOU8EI TO KOMMATI THS ANAZHTHSHS */

earthquake = fopen("earthquake.txt", "r");

if(earthquake==NULL) {
printf("\nLa8os sto anoigma tou arxeiou...\n");
return 0;
}

printf("\nGia poia mera 8elete anazhthsh dedomenwn? ");
scanf("%d",&search);

if(search==0) {
printf("Eksodos apo to programma!\n\n");
return 0;
}

while(!feof(earthquake)){
fscanf(earthquake,"%d,%d:%d:%d:%f%c",&rd_d,&rd_hr,&rd_mn,&rd_sc,&rd_rch,&q);
if(rd_d==search) {
printf("%d:%d:%d : seismos %4.2f richter\n",rd_hr,rd_mn,rd_sc,rd_rch);
}
}

return 0;
}



Το πρόγραμμα σου τρέχει μια χαρά, απλά έκανες ένα μικρό λάθος μέσα στα "" της fscanf .    Ανεβάζω την εργασία σου διορθωμένη!   
                                                                               
 |                             
 |
\/


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: zeus90 on May 26, 2008, 11:38:43 am
Το struct πού ακριβώς χρησιμεύει στο παραπάνω πρόγραμμα του fourier????


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: fourier on May 26, 2008, 12:12:38 pm
Το struct πού ακριβώς χρησιμεύει στο παραπάνω πρόγραμμα του fourier????

LOL!

Πουθενα :D
Ειχα ξεκινησει να δουλευω με δομες αλλα στην πορεια το μετανιωσα, ομως ξεχασα να διαγραψω εκεινο το κομματι του κωδικα! Να 'σαι καλα που το παρατηρησες :D


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 26, 2008, 19:27:32 pm
Still, εγώ επιμένω ότι με τα structs το πρόγραμμα είναι... αέρας! :P


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 26, 2008, 19:41:33 pm
Βασικά, με struct διευκολύνεσαι στο διάβασμα από το αρχείο, αλλού δε βοηθάει... Παρόλο που είναι στις σημειώσεις ο Κορτέσης δεν το έχει παραδώσει,ίσως στα τελευταία μαθήματα


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 26, 2008, 19:44:41 pm
Doh, σιγά μην περιμένουμε! :D
http://computer.howstuffworks.com/c39.htm


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: solli144 on May 27, 2008, 14:16:48 pm
αν κανω fopen με τροπο "a" το αρχείο δημιουργείται  αν δεν υπαρχει?


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 27, 2008, 14:29:48 pm
Αν υπάρχει ανοίγει το υπάρχον, αν όχι δημιουργείται καινούριο. :)


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 27, 2008, 14:31:35 pm
Βασικά, με struct διευκολύνεσαι στο διάβασμα από το αρχείο, αλλού δε βοηθάει... Παρόλο που είναι στις σημειώσεις ο Κορτέσης δεν το έχει παραδώσει,ίσως στα τελευταία μαθήματα

Τελικά παρέδωσε σήμερα structs


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: solli144 on May 27, 2008, 15:28:19 pm
στην fscanf στην θέση των μεταβλητών βάζουμε τους pointer τους οπως στη scanf ?


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 27, 2008, 15:40:56 pm
Εννοείς τις διευθύνσεις των μεβλητών. Ναι πρέπει να βάλεις ένα & πριν από κάθε μεταβλητή!


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 27, 2008, 20:41:14 pm
Εννοείς τις διευθύνσεις των μεβλητών. Ναι πρέπει να βάλεις ένα & πριν από κάθε μεταβλητή!
Εκτός κι αν βάλει pointers στη μεταβλητή, οπότε βάζεις σκέτο τον pointer, χωρίς το &. :)


(Πχ αν έχει pointer σε struct)


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Papatanasis on May 27, 2008, 20:44:45 pm
Ρε παιδια το struct που το εχει στις σημειωσεις??? :???: :???:


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 27, 2008, 20:50:40 pm
Εννοείς τις διευθύνσεις των μεβλητών. Ναι πρέπει να βάλεις ένα & πριν από κάθε μεταβλητή!
Εκτός κι αν βάλει pointers στη μεταβλητή, οπότε βάζεις σκέτο τον pointer, χωρίς το &. :)


(Πχ αν έχει pointer σε struct)

Σωστό,
απλά είναι λίγο "κακός προγραμματισμός" να δεσμεύει κανείς τζάμπα χώρο για pointer από τη στιγμή που μπορεί να το αποφύγει!

Ρε παιδια το struct που το εχει στις σημειωσεις??? :???: :???:

Σελ 54


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: anonymous-root on May 27, 2008, 21:19:42 pm
Μπορεί κάποιος να βοηθήσει στην αναζήτηση σε δυαδικό αρχείο;

εδιτ: με struct το έκανα...

έγραψα κάτι αλλά χτυπάει κάπου...


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 27, 2008, 21:42:11 pm
Μια ιδέα:

ορίζεις ένα πίνακα counter[365] όπου καταχωρείς τον αριθμό των σεισμών κάθε μέρας.
Για να γίνει αναζήτηση ,εισάγει ο χρήστης τον αριθμό της ζητούμενης μέρας π.χ 5

Υπολογίζεται ο συνολικός αριθμός σεισμών που έγιναν πριν τη 5η μέρα (αθροίζοντας τα counter(i)),έστω sum και μετά -->

fseek(arxeio,sum*sizeof(struct),SEEK_ SET);
 :)


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: anonymous-root on May 27, 2008, 21:45:30 pm
έστω ότι είναι μια λύση (θα την δοκιμάσω). το πρόγραμμα δεν υποτίθεται ότι δουλεύει μόνο με αρχεία στο δίσκο όμως;

ή μήπως θα πρεπει να κάνουμε να διαβάζει το daysnum;


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 27, 2008, 21:48:30 pm
Ναι και εγώ το σκέφτηκα αυτό με το daysnum ,αλλά αφού δε μας το επιβάλλει η εκφώνηση γιατί να το κάνουμε με το δύσκολο τρόπο? ::)


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: anonymous-root on May 27, 2008, 21:51:11 pm
Για πες μου βρε σωτήρα! το παρακάτω είναι σωστό:


Code:
while(!feof(fila)) {
if (fseek(fila,sizeof(struct seismos),SEEK_SET)){printf("SEEK ERROR");}
if(fread(&meres,sizeof(struct seismos),1,fila)){printf("FREAD ERROR");}
if(meres.mera==imera){
printf("\n");
printf("Tin imera %i exoume ta eksis dedomena\n",imera);
printf("Imera: %i, Ora: %i:%i:%i , Megethos: %f\n",meres.mera,meres.ora,meres.lepta,meres.deuterolepta,meres.megethos);
//cnt++;
}


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 27, 2008, 22:23:11 pm
Οκ ,φαίνεται ,τώρα δε ξέρω σίγουρα! Δεν το δοκίμασες αν δουλεύει?


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: anonymous-root on May 27, 2008, 22:25:43 pm
Οκ ,φαίνεται ,τώρα δε ξέρω σίγουρα! Δεν το δοκίμασες αν δουλεύει?

Compile κάνει, χτυπάει στην εκτέλεση...
με το που εισάγω τη μέρα βγάζει
"Unhandled exception at 0x102a497a (msvcr80d.dll) in ergf.exe: 0xC0000005: Access violation writing location 0x00000000."


τα αρχεία υπάρχουν κανονικά.


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 27, 2008, 22:35:23 pm
Πάει μάλλον να γράψει σε θέση της μνήμης που δεν είναι ελεύθερη.Λογικά το λάθος είναι αλλού όχι στο συγκεκριμένο κομμάτι.  :-\Αν θες στείλε όλο το πρόγραμμα ή στείλε pm


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: anonymous-root on May 27, 2008, 23:02:31 pm
Από ότι κατάλαβα, χτυπάει η fread κάπου στο μέγεθος του struct...


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: solli144 on May 27, 2008, 23:18:36 pm
στο printf στο επόμενο κομμάτι κώδικα μου βγάζει πάντα αποτέλεσμα -1

printf("Dwse ton au3onta ari8mo ths imeras\n");
    scanf("%d",&mera);
    fseek(fdays,mera*sizeof(int),SEEK_SET);
    getw(fdays);
    printf("%d",getw(fdays));

τι πρόβλημα μπορεί να έχει?


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: anonymous-root on May 27, 2008, 23:26:07 pm
Οκ ,φαίνεται ,τώρα δε ξέρω σίγουρα! Δεν το δοκίμασες αν δουλεύει?

Compile κάνει, χτυπάει στην εκτέλεση...
με το που εισάγω τη μέρα βγάζει
"Unhandled exception at 0x102a497a (msvcr80d.dll) in ergf.exe: 0xC0000005: Access violation writing location 0x00000000."


τα αρχεία υπάρχουν κανονικά.


Λύθηκε αυτό το πρόβλημα! (θενξ εμφανέβερ). αυτά παθαίνεις αν ξεχνάς ένα σύμβολο :D


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 27, 2008, 23:53:12 pm
στο printf στο επόμενο κομμάτι κώδικα μου βγάζει πάντα αποτέλεσμα -1

printf("Dwse ton au3onta ari8mo ths imeras\n");
    scanf("%d",&mera);
    fseek(fdays,mera*sizeof(int),SEEK_SET);
    getw(fdays);
    printf("%d",getw(fdays));

τι πρόβλημα μπορεί να έχει?

Τι ακριβώς αποθηκεύεις στο fdays?  Με τον τρόπο αυτό το βάζεις να διαβάσει δύο φορές. Δηλαδή, διαβάζει μια πριν το printf και μια μέσα στο printf (οπότε ότι διάβασε την πτώτη φορά χάνεται!) Κάντο έτσι καλύτερα.
κ= getw(fdays);
printf("%d",κ);

ή σβήσε το πρώτο getw()


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: solli144 on May 28, 2008, 00:00:03 am
τελικά ανακάλυψα ότι έφταιγε ότι δεν έκανα έλεγχο αν η getw επέστρεφε τιμή EOF.
Αλλά πάντα όταν εκτελώ το πρόγραμμα επιστρεύει EOF

to fdays είναι το (FILE *) για το αρχείο daysnum που εχω ανοίξει με "r"


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: solli144 on May 28, 2008, 00:02:32 am
τι φταίει για αυτο???  :???:


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 28, 2008, 00:05:47 am
Πώς γράφεις τα δεδομένα στο αρχείο? Με fprintf ή κάτι άλλο? Κάντο με putw. Αν δε φταίει και αυτό δε μπορώ να σου πω αν δε δω και το υπόλοιπο πρόγραμμα...


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: athina75 on May 28, 2008, 12:55:22 pm
Γεια σας,
θα ήθελα να σας ρωτήσω τι λάθος υπάρχει ή τι λείπει από το τελευταίο κομμάτι της εργασίας (δηλαδή της αναζήτησης ....)



while(!feof(earthquake_1))
           {
             fscanf(earthquake_1,"%d ,%d:%d:%d,%f\n",hmera,wra,minutes,deyterolepta,richter);
   
       if (survey==0)
       {
         printf("termatismos tou programmatos.");
         exit(1);
       }
         

       if(survey==hmera)
                                                                                                                                                       printf("Stis %d:%d:%dpragmatopoih8hke seismos %3.2f   richter\n",wra,minutes,deyterolepta,richter);
    
          
                 }



Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: furygl on May 28, 2008, 14:42:48 pm
ekana tin ergasia ala sinexizi akoma kai an balo h>23,les kai den douleuei to break,episis na rotiso kati,an exo kanis px
scaf("%d",&a);
kai thelo na sbiso to noumero sti thesi a gia na balo alo,ti entoli grafo??
clear(a);
scanf("%d",&a);
kai mpeni to neo???


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 28, 2008, 15:32:50 pm
Γιατί δε δουλεύει το break ?Δε τερματίζεται το πρόγραμμα ,αλλά πηγαίνει στην επόμενη μέρα,αυτό ειναι το ζητούμενο.
Δε χρειάζεται να βάλεις clear κατευθείαν scanf.

και επίσης κάντο έτσι :
fscanf(earthquake,"mera %d,xronikistigmi %d:%d:%d,entasi %f\n",&od,&oh,&om,&os,&oz);


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Anyparktos on May 28, 2008, 18:21:10 pm
Να ρωτήσω,είναι η τελευταία εργασία αυτή σωστά?Ισχύει και φέτος αυτό ότι μπορούμε να παραδώσουμε n-1 εργασίες όπου n το σύνολο των εργασιών?Έχει ακούσει κανείς τπτ από τον Κορτέση?


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Γιώργος on May 28, 2008, 19:14:57 pm
Σωστό,
απλά είναι λίγο "κακός προγραμματισμός" να δεσμεύει κανείς τζάμπα χώρο για pointer από τη στιγμή που μπορεί να το αποφύγει!
Νταξ, ένας πόιντερ είναι μία θέση μνήμης, σιγά. :)



Επίσης είμαι της άποψης ότι καλύτερα (σε λογικά πλαίσια) να θυσιάζουμε σε μνήμη για να κερδίσουμε σε χρόνο (και κατανόηση, συντήρηση, κοκ). :)

Καθότι εύκολα "αγοράζεις" μνήμη, αλλά όχι υπολογιστική ταχύτητα (well, εδώ δεν υπάρχει θέμα χρόνου, αλλά nonetheless, την οικονομία μνήμης δεν την έχω σε πρώτη προτεραιότητα, είμαι fan των κατανοητών και στρωτών προγραμμάτων - φυσικά πάντα σε λογικά πλαίσια :P )


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 28, 2008, 19:53:07 pm
Να ρωτήσω,είναι η τελευταία εργασία αυτή σωστά?Ισχύει και φέτος αυτό ότι μπορούμε να παραδώσουμε n-1 εργασίες όπου n το σύνολο των εργασιών?Έχει ακούσει κανείς τπτ από τον Κορτέση?

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


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: adianohtos on May 28, 2008, 20:42:54 pm

και επίσης κάντο έτσι :
fscanf(earthquake,"mera %d,xronikistigmi %d:%d:%d,entasi %f\n",&od,&oh,&om,&os,&oz);
[/quote]

Γιατι πρεπει ετσι??


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 28, 2008, 20:48:51 pm
Γιατί στο αρχείο τα έχει καταχωρήσει έτσι
fprintf(earthquake,"mera %d,xronikistigmi %d:%d:%d,entasi %f\n",d,h,m,s,z);

Άρα όταν πάει να τα διαβάσει πρέπει να βάλει το ίδιο μέσα στα "" για να είναι σωστές οι αντιστοιχίες. Το πρόγραμμα δε ξέρει ποιοι είναι οι αριθμοί για να επιλέξει μόνο αυτούς...


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: gagas on May 28, 2008, 21:54:32 pm
παιδια το αρχειο που ανεβασατε πριν τι λαθη εχει και δεν λειτουργει?


Title: Re: [Δομημένος Προγραμ.] Εργασία F
Post by: Emfanever on May 29, 2008, 02:03:08 am
Αν εννοείς την εργασία που ανέβασε ο furygl διάβασε λίγο παρακάτω,λέει που είναι το λάθος