Προς το περιεχόμενο

Pascal πρόβλημα


Linus_21

Προτεινόμενες αναρτήσεις

Δημοσ.
{Να γραφεί πρόγραμμα που να υπολογίζει τις τιμές της συνάρτησης 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

 

Κάποια ιδέα, ώστε να μην αναγκάζομαι αργότερα σε πιο σύνθετα προγράμματα να τσεκάρω με άλλο τρόπο τα αποτελέσματα ώστε να ξέρω αν όντως δούλεψαν σωστά?

 

2v9f6g8.jpg

Δημοσ.

Φαίνεται να δουλεύει σωστά. Δεν επηρεάζει όμως το πρόγραμμα το γεγονός ότι το type αποτελέσματα δεν χρησιμοποιείτε?

 

 

Επίσης τώρα που σε βρήκα :P ξέρεις πώς θα αποφύγω το

1.000000000000000E+000

 

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

Δημοσ.

Φαίνεται να δουλεύει σωστά. Δεν επηρεάζει όμως το πρόγραμμα το γεγονός ότι το type αποτελέσματα δεν χρησιμοποιείτε?

 

 

Επίσης τώρα που σε βρήκα :P ξέρεις πώς θα αποφύγω το

 

 

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

 

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

Ο τρόπος που χρησιμοποιούσες δεν μπορούσε να το κάνει αυτό.Αν όμως διαβάσεις τα περιεχόμενα του αρχείου με την pascal

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

Δημοσ.

για δοκίμασε αυτό για το πρόβλημα με τα νούμερα

 

>
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.

Δημοσ.

.Αν όμως διαβάσεις τα περιεχόμενα του αρχείου με την pascal

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

 

Ναι αυτό το είχα τσεκάρει. Εμφάνισα τα κινέζικα του αρχείου στη οθόνη, και τα έβγαζε όπως έπρεπε.

 

 

C και πάλι C...

 

Πιο πολύ μ'αρέσει η C++ αλλά δεν αποφασίζω εγώ. :P

 

 

για δοκίμασε αυτό για το πρόβλημα με τα νούμερα

 

>
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 ξανά :D

  • 2 εβδομάδες αργότερα...
Δημοσ.

Καλησπερα!! Εχω μια ασκηση για τη σχολη σε 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ίναι τελειως λαθος ε?

  • 4 εβδομάδες αργότερα...
Δημοσ.

Καλησπερα!! Εχω μια ασκηση για τη σχολη σε 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!

Δημοσ.

Καλησπερα!! Εχω μια ασκηση για τη σχολη σε 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 ....)

Δημοσ.

Κατ' αρχας το αρχείο που θα διαβασεις τα δεδομενα δηλωσε το text (var plithismos:text)

Οταν θα διαβασουμε αρχειο χρησιμοποιουμε reset

 

To σημαντικοτερο η μεταβλητη size δεν ειναι string. Τα data θα ξαναχρειαστουν στο ερωτημα 3 , οποτε πρεπει να τα βαλεις σε ενα πινακα.

Και μαλιστα πινακα longint (> 65000)

 

(Eτσι οπως είναι γραμμενο αυτη τη στιγμη πας να διαβασεις ενα χαρακτηρα απο ενα αρχειο integer ....)

 

Διαβασε ξανά την εκφώνηση δεν αναφέρει πουθενά ότι το αρχείο εισόδου είναι text.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...