Linus_21 Δημοσ. 3 Ιανουαρίου 2011 Δημοσ. 3 Ιανουαρίου 2011 {Να γραφεί πρόγραμμα που να υπολογίζει τις τιμές της συνάρτησης y=(x*x*x+exp(7*2-2))/sin(x) για x=1..N και να βγάζει τα αποτελέσματα σε αρχείο data.txt}program values; type apotelesmata = file of real; var f:apotelesmata; y:real; x,N,a:integer; begin write('N= '); readln(N); assign(f,'C:/Pascal/Arxeia/Sinartisi_a/data.txt'); rewrite(f); for x:=1 to N do begin y:=(x*x*x+exp(7*2-2))/sin(x); write(f,y); end; close(f); write(y:10:2); readln(a); end. To πρόγραμμα νομίζω είναι σωστό, αλλά κάτι πάει στραβά με την κωδικοποίηση(?) στην έξοδο στο data.txt Κάποια ιδέα, ώστε να μην αναγκάζομαι αργότερα σε πιο σύνθετα προγράμματα να τσεκάρω με άλλο τρόπο τα αποτελέσματα ώστε να ξέρω αν όντως δούλεψαν σωστά?
virxen75 Δημοσ. 3 Ιανουαρίου 2011 Δημοσ. 3 Ιανουαρίου 2011 για δοκίμασε έτσι > ..... var f:text; .......
Linus_21 Δημοσ. 3 Ιανουαρίου 2011 Μέλος Δημοσ. 3 Ιανουαρίου 2011 Φαίνεται να δουλεύει σωστά. Δεν επηρεάζει όμως το πρόγραμμα το γεγονός ότι το type αποτελέσματα δεν χρησιμοποιείτε? Επίσης τώρα που σε βρήκα ξέρεις πώς θα αποφύγω το 1.000000000000000E+000 στην έξοδο του αρχείου, και να το εμφανίζει κανονικό νούμερο για δικιά μου ευκολία. Το :10:2 που χρησιμοποιώ συνήθως για έξοδο στην οθόνη δεν δουλεύει στα αρχεία.
virxen75 Δημοσ. 3 Ιανουαρίου 2011 Δημοσ. 3 Ιανουαρίου 2011 Φαίνεται να δουλεύει σωστά. Δεν επηρεάζει όμως το πρόγραμμα το γεγονός ότι το type αποτελέσματα δεν χρησιμοποιείτε? Επίσης τώρα που σε βρήκα ξέρεις πώς θα αποφύγω το στην έξοδο του αρχείου, και να το εμφανίζει κανονικό νούμερο για δικιά μου ευκολία. Το :10:2 που χρησιμοποιώ συνήθως για έξοδο στην οθόνη δεν δουλεύει στα αρχεία. τώρα με την αλλαγή που σου πρότεινα το σώζει σαν αρχείο κειμένου οπότε μπορείς να το δεις με έναν κειμενογράφο. Ο τρόπος που χρησιμοποιούσες δεν μπορούσε να το κάνει αυτό.Αν όμως διαβάσεις τα περιεχόμενα του αρχείου με την pascal και τα εμφανίσεις θα δεις ότι τα σώζει σωστά παρόλο που δεν μπορείς να τα δεις με έναν κειμενογράφο.
virxen75 Δημοσ. 3 Ιανουαρίου 2011 Δημοσ. 3 Ιανουαρίου 2011 για δοκίμασε αυτό για το πρόβλημα με τα νούμερα > program TextFileWriteExample; var F : Text; a : Integer; begin Assign(F,'c:\TextFileWriteExample.txt'); Rewrite(F); a := 46; Write(F,'The square root of ',a:-5,' is ',Sqrt(a):-10:3); Close(F); end.
Linus_21 Δημοσ. 4 Ιανουαρίου 2011 Μέλος Δημοσ. 4 Ιανουαρίου 2011 .Αν όμως διαβάσεις τα περιεχόμενα του αρχείου με την pascal και τα εμφανίσεις θα δεις ότι τα σώζει σωστά παρόλο που δεν μπορείς να τα δεις με έναν κειμενογράφο. Ναι αυτό το είχα τσεκάρει. Εμφάνισα τα κινέζικα του αρχείου στη οθόνη, και τα έβγαζε όπως έπρεπε. C και πάλι C... Πιο πολύ μ'αρέσει η C++ αλλά δεν αποφασίζω εγώ. για δοκίμασε αυτό για το πρόβλημα με τα νούμερα > program TextFileWriteExample; var F : Text; a : Integer; begin Assign(F,'c:\TextFileWriteExample.txt'); Rewrite(F); a := 46; Write(F,'The square root of ',a:-5,' is ',Sqrt(a):-10:3); Close(F); end. Θα δοκιμάσω αύριο. Thanks ξανά
JimxxZe Δημοσ. 15 Ιανουαρίου 2011 Δημοσ. 15 Ιανουαρίου 2011 Καλησπερα!! Εχω μια ασκηση για τη σχολη σε pascal,εχουμε κανει 5 μαθηματα μεχρι στιγμης στις προηγουμενες ασκησεις τα ειχα παει καλα(δεν ειχα ξαναασχοληθει με πασκαλ),αλλα αυτη τωρα με εχει δυσκολεψει παααρα πολυ! Ειμαστε στο κεφαλαιο αρχεια και προσπαθω απο σημειωσεις στο νετ να διαβασω περι αυτων γιατι ο καθηγητης δεν τα εξηγει σχεδον καθολου,αλλα δεν τα καταφερνω στη συγκεκριμενη.... Λει.. Να γραφεί πρόγραµμα σε PASCAL το οποίο να διαβάζει από το αρχείο pop.dat τις εγγραφές των πληθυσμών για τους 52 νομούς της Ελλάδας. 1. Να υπολογιστεί το πλήθος των νομών με πληθυσμό πάνω από 100000 κατοίκους. 2. Να υπολογιστεί ο πληθυσμός της Ελλάδας. 3. Να ταξινοµεί κατά αύξουσα σειρά τους πληθυσμούς και τα ταξινομημένα στοιχεία να αποθηκεύονται στο αρχείο sort.dat υπό μορφή text. το 3ο δεν το εχω γραψει καθολου γιατι δοκιμαζα για τα δυο πρωτα και μου εβγαζε σφαλματα ο compiler Αν μπορουσε καποιος να με βοηθησει!Ευχαριστω! >Program population; USES CRT; Var plithismos: file of integer; size:string[52]; c:char; i,sum,totalpop :integer; Begin sum:=0; totalpop:=0; Assign(plithismos,'pop.dat'); Rewrite(plithismos); For i:= 1 to 52 DO while not Eof(plithismos) do begin Read(plithismos,size); end; begin If plithismos>100000 THEN sum:=sum+1 ; end; write totalpop:=plithismos*size; close(plithismos); c:=readkey; END. Eίναι τελειως λαθος ε?
Linus_21 Δημοσ. 9 Φεβρουαρίου 2011 Μέλος Δημοσ. 9 Φεβρουαρίου 2011 Χωρίς να είμαι και ο πλέον ειδικός, αφού θέλεις να διαβάζει γιατί έχεις rewrite. Θα έπρεπε να έχεις reset(plithismos)
taazz Δημοσ. 9 Φεβρουαρίου 2011 Δημοσ. 9 Φεβρουαρίου 2011 Καλησπερα!! Εχω μια ασκηση για τη σχολη σε pascal,εχουμε κανει 5 μαθηματα μεχρι στιγμης στις προηγουμενες ασκησεις τα ειχα παει καλα(δεν ειχα ξαναασχοληθει με πασκαλ),αλλα αυτη τωρα με εχει δυσκολεψει παααρα πολυ! Ειμαστε στο κεφαλαιο αρχεια και προσπαθω απο σημειωσεις στο νετ να διαβασω περι αυτων γιατι ο καθηγητης δεν τα εξηγει σχεδον καθολου,αλλα δεν τα καταφερνω στη συγκεκριμενη.... Λει.. το 3ο δεν το εχω γραψει καθολου γιατι δοκιμαζα για τα δυο πρωτα και μου εβγαζε σφαλματα ο compiler Αν μπορουσε καποιος να με βοηθησει!Ευχαριστω! > Program population; USES CRT; Var plithismos: file of integer; size:string[52]; c:char; i,sum,totalpop :integer; Begin sum:=0; totalpop:=0; Assign(plithismos,'pop.dat'); Reset(plithismos); For i := 1 to 52 DO begin if not Eof(plithismos) then Read(plithismos, size[i-1]) else size[i-1] := 0; If size[i-1]>100000 then begin sum := sum + 1; writeln(size[i-1]); end; totalpop:=totalpop+size[i-1]; end; close(plithismos); c:=readkey; END. ρίξε μια ματια σε αυτο και πες αν δεν καταλαβαινεις κατι. εεγγωω ππρρεεππεειι νναα ββρρωω γγιιααττιι οο firefox τταα γγρρααφφεειι δδιιππλλάά gmt!
citizen Δημοσ. 13 Φεβρουαρίου 2011 Δημοσ. 13 Φεβρουαρίου 2011 Καλησπερα!! Εχω μια ασκηση για τη σχολη σε pascal,εχουμε κανει 5 μαθηματα μεχρι στιγμης στις προηγουμενες ασκησεις τα ειχα παει καλα(δεν ειχα ξαναασχοληθει με πασκαλ),αλλα αυτη τωρα με εχει δυσκολεψει παααρα πολυ! Ειμαστε στο κεφαλαιο αρχεια και προσπαθω απο σημειωσεις στο νετ να διαβασω περι αυτων γιατι ο καθηγητης δεν τα εξηγει σχεδον καθολου,αλλα δεν τα καταφερνω στη συγκεκριμενη.... Λει.. το 3ο δεν το εχω γραψει καθολου γιατι δοκιμαζα για τα δυο πρωτα και μου εβγαζε σφαλματα ο compiler Αν μπορουσε καποιος να με βοηθησει!Ευχαριστω! >Program population; USES CRT; Var plithismos: file of integer; size:string[52]; c:char; i,sum,totalpop :integer; Begin sum:=0; totalpop:=0; Assign(plithismos,'pop.dat'); Rewrite(plithismos); For i:= 1 to 52 DO while not Eof(plithismos) do begin Read(plithismos,size); end; begin If plithismos>100000 THEN sum:=sum+1 ; end; write totalpop:=plithismos*size; close(plithismos); c:=readkey; END. Eίναι τελειως λαθος ε? Κατ' αρχας το αρχείο που θα διαβασεις τα δεδομενα δηλωσε το text (var plithismos:text) Οταν θα διαβασουμε αρχειο χρησιμοποιουμε reset To σημαντικοτερο η μεταβλητη size δεν ειναι string. Τα data θα ξαναχρειαστουν στο ερωτημα 3 , οποτε πρεπει να τα βαλεις σε ενα πινακα. Και μαλιστα πινακα longint (> 65000) (Eτσι οπως είναι γραμμενο αυτη τη στιγμη πας να διαβασεις ενα χαρακτηρα απο ενα αρχειο integer ....)
taazz Δημοσ. 13 Φεβρουαρίου 2011 Δημοσ. 13 Φεβρουαρίου 2011 Κατ' αρχας το αρχείο που θα διαβασεις τα δεδομενα δηλωσε το text (var plithismos:text) Οταν θα διαβασουμε αρχειο χρησιμοποιουμε reset To σημαντικοτερο η μεταβλητη size δεν ειναι string. Τα data θα ξαναχρειαστουν στο ερωτημα 3 , οποτε πρεπει να τα βαλεις σε ενα πινακα. Και μαλιστα πινακα longint (> 65000) (Eτσι οπως είναι γραμμενο αυτη τη στιγμη πας να διαβασεις ενα χαρακτηρα απο ενα αρχειο integer ....) Διαβασε ξανά την εκφώνηση δεν αναφέρει πουθενά ότι το αρχείο εισόδου είναι text.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.