Πρόγραμμα στην PASCAL που διαβαζει συγκεκριμένες στήλες

Συζητήσεις σχετικές με την Delphi και την πρόγονη της Pascal

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Spyrus21
Δημοσιεύσεις: 9
Εγγραφή: 26 Ιουν 2007 18:54

Πρόγραμμα στην PASCAL που διαβαζει συγκεκριμένες στήλες

Δημοσίευση από Spyrus21 » 26 Ιουν 2007 19:49

έχω ένα πρόγραμμα (find.txt ) του οποίου η μορφή είναι ως εξής

1 2004 1 1 3 37 23 15 1008 1010 1 55 230.0 285.80 283.10 10000 2 1 75 55 00
1 2004 1 1 6 37 23 15 1007 1009 4 50 0.0 282.80 282.00 10000 2 1 50 55 00
1 2004 1 1 9 37 23 15 1008 1010 5 50 0.0 287.00 283.20 10000 2 1 60 55 50
1 2004 1 1 12 37 23 15 1005 1007 9 55 170.0 287.40 282.30 15000 2 1 90 55 50

όπως φαίνεται αποτελείται από 4 γραμμές και 21 στήλες και μόνο από αριθμούς , τα νούμερα της 2ης στήλης αντιπροσωπεύουν χρόνια,της 3ης μήνες ,της 4ης μέρες,της 5ης ώρες και της 15ης στήλης αντιπροσωπεύουν βαθμούς μέτρησης θερμοκρασίας σε Kelvin.Χρειάζομαι ένα πρόγραμμα Pascal που i)να διαβάζει (όχι να τυπώνει στην οθόνη) τα 21 πεδία στήλες του παραπάνω αρχείου(find.txt)ii)να μετατρέπει τα στοιχεία της 15ης στήλης από βαθμούς Kelvin(K) σε Κελσίου(°C) (°C=K-273.16) iii)Στο ίδιο πρόγραμμα να εντοπίζονται η απόλυτη μέγιστη και ελάχιστη θερμοκρασία του σταθμού σε μονάδες °C και να εκτυπώνονται στην οθόνη μαζί με την ακριβή ημερομηνία και ώρα ως εξής: Year, Month,
Day, Time, Temperature(°C) iv)Να υπολογίζεται η μέση μηνιαία θερμοκρασία για το έτος 2004 και το αποτέλεσμα να τυπώνεται στην οθόνη ως εξής: Month, Average temperature(°C).

Η προθεμία του συγκεκριμένου προγράμματος είναι μέχρι και την 1η Ιουλίου του 2007 .
turbospyrus

Άβαταρ μέλους
greekbytes
WebDev Moderator
Δημοσιεύσεις: 2438
Εγγραφή: 15 Νοέμ 2002 15:42
Τοποθεσία: Αθήνα
Επικοινωνία:

Πρόγραμμα στην PASCAL που διαβαζει συγκεκριμένες στήλες

Δημοσίευση από greekbytes » 27 Ιουν 2007 02:20

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

Spyrus21
Δημοσιεύσεις: 9
Εγγραφή: 26 Ιουν 2007 18:54

Πρόγραμμα στην PASCAL που διαβαζει συγκεκριμένες στήλες

Δημοσίευση από Spyrus21 » 27 Ιουν 2007 03:09

βασικά έχω φτιάξει τα εξής πρόγραμματα , αλλά είναι λάθος γιατί δεν κάνουν ακριβώς αυτό που ζητάει η άσκηση και έχω πράγματι κολλήσει αρκετά :
1)

Κώδικας: Επιλογή όλων

PROGRAM ERGASIA_meteo
USES newdelay,crt;
CONST max_dimension=2889;
      stable=273.16;
TYPE board1=array[1..max_dimension] of real;
     board2=array[1..max_dimension] of integer;
     board3=array[1..max_dimension] of integer;
     board4=array[1..max_dimension] of integer;
     board5=array[1..max_dimension] of integer;
 VAR { intfile : file of integer ;
     r,NUM : INTEGER;
     c:char;}
     helliniko:text;
     stat:longint;
     row1:board1;
     row2:board2;
     row3:board3;
     row4:board4;
     row5:board5;
     yy,mm,dd,hh:integer;
     lat,lon,elev:real;
     clh,clm,cll,vis:real;
     pres,msl,pt,pc,wd,ws,t,td,prec:real;
     metr:1..1000000;
     max,min,ar1,ar2,ar3,ar4,ar5,ar6,ar7,ar8,ar9,ar10,ar11,ar12:real;
     i,Year2,Month2,Day2,wra2,Year1,Month1,Day1,wra1,metritis:integer;
     c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12:integer;
     w:char;
{      Begin
assign ( intfile , 'c:\find.txt');
reSeT (intfile);
WHILE NOT (EOF(intfile)) do begin
read (intfile, num);
writeln (num);
end;
close (intfile);
c:=readkey;
end.                              }
     FUNCTION ther(te:real):real;
     BEGIN
     te:=te-stable;
    writeln(te:7:3);
    metr:=metr+1;
    row1[metr]:=te;
    te:=0;
    row2[metr]:=yy;
    row3[metr]:=mm;
    row4[metr]:=dd;
    row5[metr]:=hh;
    END;
   BEGIN
   patchcrt(crt.delay);
   clrscr;
   assign(helliniko,'c:\find.txt');
   reset(helliniko);
    while not eof(helliniko) DO
     BEGIN
      readln(helliniko,stat,yy,mm,dd,hh,lat,lon,elev,clh,clm,cll,vis,pres,msl,pt,pc,wd,ws,t,td,prec);
     ther(pt);
     END;
      FOR metr:=1 to max_dimension DO
       BEGIN
        IF max<row1&#91;metr&#93; then
         BEGIN
          max&#58;=row1&#91;metr&#93;;
          Year1&#58;=row2&#91;metr&#93;;
          Month1&#58;=row3&#91;metr&#93;;
          Day1&#58;=row4&#91;metr&#93;;
          wra1&#58;=row5&#91;metr&#93;;
         END;
        END;
      writeln&#40;'kakin-kakws  h  MEGISTH THERMOKRASIA EINAI-MAX TEMPERATURE &#58;',max&#58;4&#58;3,' oC ',                 ' DATE ', Year1,
      '/',Month1,'/',Day1,' TIME ',wra1&#41;;
      FOR metr&#58;=1 to max_dimension DO
       BEGIN
        IF min>row1&#91;metr&#93; then
          BEGIN
           min&#58;=row1&#91;metr&#93;;
           Year2&#58;=row2&#91;metr&#93;;
           Month2&#58;=row3&#91;metr&#93;;
           Day2&#58;=row4&#91;metr&#93;;
           wra2&#58;=row5&#91;metr&#93;;
          END;
         END;
       writeln&#40;'eyt-dystyxws h ELAXISTH THERMOKRASIA EINAI-MIN TEMPERATURE &#58;',min&#58;4&#58;3,' oC ',' DATE ', Year2,
       '/',Month2,'/',Day2,' TIME ',  wra2&#41;;
                    FOR metr&#58;=1 to max_dimension DO
          BEGIN
          IF row3&#91;metr&#93;=1 then
          BEGIN
          ar1&#58;=ar1+row1&#91;metr&#93;;
          c1&#58;=c1+1;
          END;
          END;
          writeln&#40;' MESOS OROS-TIMH-AVERAGE GIA TON   1o MHNA-MONTH EINAI&#58;',&#40;ar1/c1&#41;&#58;4&#58;3&#41;;
                    FOR metr&#58;=1 to max_dimension DO
          BEGIN
          IF row3&#91;metr&#93;=2 then
          BEGIN
          ar2&#58;=ar2+row1&#91;metr&#93;;
          c2&#58;=c2+1;
          END;
          END;
          writeln&#40;' MESOS OROS-TIMH-AVERAGE GIA TON   2o MHNA-MONTH EINAI&#58;',&#40;ar2/c2&#41;&#58;4&#58;3&#41;;
                    FOR metr&#58;=1 to max_dimension DO
          BEGIN
          IF row3&#91;metr&#93;=3 then
          BEGIN
          ar3&#58;=ar3+row1&#91;metr&#93;;
          c3&#58;=c3+1;
          END;
          END;
          writeln&#40;' MESOS OROS-TIMH-AVERAGE GIA TON   3o MHNA-MONTH EINAI&#58;',&#40;ar3/c3&#41;&#58;4&#58;3&#41;;
                    FOR metr&#58;=1 to max_dimension DO
          BEGIN
          IF row3&#91;metr&#93;=4 then
          BEGIN
          ar4&#58;=ar4+row1&#91;metr&#93;;
          c4&#58;=c4+1;
          END;
          END;
          writeln&#40;' MESOS OROS-TIMH-AVERAGE GIA TON   4o MHNA-MONTH EINAI&#58;',&#40;ar4/c4&#41;&#58;4&#58;3&#41;;
                    FOR metr&#58;=1 to max_dimension DO
          BEGIN
          IF row3&#91;metr&#93;=5 then
          BEGIN
          ar5&#58;=ar5+row1&#91;metr&#93;;
          c5&#58;=c5+1;
          END;
          END;
          writeln&#40;' MESOS OROS-TIMH-AVERAGE GIA TON   5o MHNA-MONTH EINAI&#58;',&#40;ar5/c5&#41;&#58;4&#58;3&#41;;
                    FOR metr&#58;=1 to max_dimension DO
          BEGIN
          IF row3&#91;metr&#93;=6 then
          BEGIN
          ar6&#58;=ar6+row1&#91;metr&#93;;
          c6&#58;=c6+1;
          END;
          END;
          writeln&#40;' MESOS OROS-TIMH-AVERAGE GIA TON   6o MHNA-MONTH EINAI&#58;',&#40;ar6/c6&#41;&#58;4&#58;3&#41;;
                   FOR metr&#58;=1 to max_dimension DO
          BEGIN
          IF row3&#91;metr&#93;=7 then
          BEGIN
          ar7&#58;=ar7+row1&#91;metr&#93;;
          c7&#58;=c7+1;
          END;
          END;
          writeln&#40;' MESOS OROS-TIMH-AVERAGE GIA TON   7o MHNA-MONTH EINAI&#58;',&#40;ar7/c7&#41;&#58;4&#58;3&#41;;
                    FOR metr&#58;=1 to max_dimension DO
          BEGIN
          IF row3&#91;metr&#93;=8 then
          BEGIN
          ar8&#58;=ar8+row1&#91;metr&#93;;
          c8&#58;=c8+1;
          END;
          END;
          writeln&#40;' MESOS OROS-TIMH-AVERAGE GIA TON   8o MHNA-MONTH EINAI&#58;',&#40;ar8/c8&#41;&#58;4&#58;3&#41;;
                    FOR metr&#58;=1 to max_dimension DO
          BEGIN
          IF row3&#91;metr&#93;=9 then
          BEGIN
          ar9&#58;=ar9+row1&#91;metr&#93;;
          c9&#58;=c9+1;
          END;
          END;
          writeln&#40;' MESOS OROS-TIMH-AVERAGE GIA TON   9o MHNA-MONTH EINAI&#58;',&#40;ar9/c9&#41;&#58;4&#58;3&#41;;
                    FOR metr&#58;=1 to max_dimension DO
          BEGIN
          IF row3&#91;metr&#93;=10 then
          BEGIN
          ar10&#58;=ar10+row1&#91;metr&#93;;
          c10&#58;=c10+1;
          END;
          END;
          writeln&#40;' MESOS OROS-TIMH-AVERAGE GIA TON  10o MHNA-MONTH EINAI&#58;',&#40;ar10/c10&#41;&#58;4&#58;3&#41;;
                    FOR metr&#58;=1 to max_dimension DO
          BEGIN
          IF row3&#91;metr&#93;=11 then
          BEGIN
          ar11&#58;=ar11+row1&#91;metr&#93;;
          c11&#58;=c11+1;
          END;
          END;
          writeln&#40;' MESOS OROS-TIMH-AVERAGE GIA TON  11o MHNA-MONTH EINAI&#58;',&#40;ar11/c11&#41;&#58;4&#58;3&#41;;
                    FOR metr&#58;=1 TO max_dimension DO
          BEGIN
          IF row3&#91;metr&#93;=12 then
          BEGIN
          ar12&#58;=ar12+row1&#91;metr&#93;;
          c12&#58;=c12+1;
          END;
          END;
          writeln&#40;' MESOS OROS-TIMH-AVERAGE GIA TON  12o MHNA-MONTH EINAI&#58;',&#40;ar12/c12&#41;&#58;4&#58;3&#41;;

    w&#58;=readkey;
    close&#40;helliniko&#41;;
END.
2)

Κώδικας: Επιλογή όλων

program ASKHSH_PLIROFORIKHS;
uses
newdelay,crt;
const
max_dimension=2888;
type
arrayN= array&#91;1..max_dimension&#93; of real;
arrayC= array&#91;1..max_dimension&#93; of integer;
var
TEMP&#58;arrayN;
YEAR&#58;arrayC;
ELAXISTO&#58;arrayC;
DAY&#58;arrayC;
TIME&#58;arrayC;
MEGISTO1,ELAXISTO2&#58;real;
c&#58;char;
myfile&#58;text;
outfile&#58;text;
rows,i&#58;longint;
stat&#58; longint;
yy,nm,dd,hh&#58;integer;
lat,lon, elen&#58;real;
cln,clm,cll,vis&#58; integer;
pres,msl,pt,pv,wd,ws,t,td,prec&#58;real;
function METATROPH_KELVIN&#40;A&#58;real&#41;&#58;real;
begin
METATROPH_KELVIN&#58;=A-273.16;
end;
procedure EYRESH_MEGISTOY_K_ELAXISTOY &#40;MEGISTO,ELAXISTO3&#58;real&#41;;
var
pos,pos2,I&#58;integer;
begin
MEGISTO&#58;=TEMP&#91;1&#93;;
ELAXISTO3&#58;=TEMP&#91;1&#93;;
rows&#58;=max_dimension;
for I&#58;=1 to rows do
begin
if TEMP&#91;I&#93;>MEGISTO then
begin
MEGISTO&#58;=TEMP&#91;I&#93;;
pos&#58;=I;
end;
if TEMP&#91;I&#93;<ELAXISTO3 then
begin
ELAXISTO3&#58;=TEMP&#91;I&#93;;
pos2&#58;=I;
end;
end;
writeln &#40;'The MEGISTO is ',MEGISTO&#58;3&#58;2,'   Year  ', YEAR&#91;pos&#93;, '   Month  ' ,ELAXISTO&#91;pos&#93;,
'  Day  ', DAY&#91;pos&#93;, '  Hour  ', TIME&#91;pos&#93;&#41;;
writeln &#40;'The ELAXISTO3 is ',ELAXISTO3&#58;3&#58;2,'   Year  ', YEAR&#91;pos2&#93;, '   Month  ' ,ELAXISTO&#91;pos2&#93;,
'  Day  ', DAY&#91;pos2&#93;, '  Hour  ', TIME&#91;pos2&#93;&#41;
end;
procedure mines;
var
sum1,sum2,sum3,sum4,sum5,sum6,sum7,sum8,sum9,sum10,sum11,sum12&#58;real;
counter1,counter2,counter3,counter4,counter5,counter6,counter7,counter8,counter9,counter10,counter11,counter12&#58;longint;
begin
counter1&#58;=0;
counter2&#58;=0;
counter3&#58;=0;
counter4&#58;=0;
counter5&#58;=0;
counter6&#58;=0;
counter7&#58;=0;
counter8&#58;=0;
counter9&#58;=0;
counter10&#58;=0;
counter11&#58;=0;
counter12&#58;=0;
sum1&#58;=0;
sum2&#58;=0;
sum3&#58;=0;
sum4&#58;=0;
sum5&#58;=0;
sum6&#58;=0;
sum7&#58;=0;
sum8&#58;=0;
sum9&#58;=0;
sum10&#58;=0;
sum11&#58;=0;
sum12&#58;=0;
for I&#58;=1 to rows do
begin
if ELAXISTO&#91;I&#93;=1 then
begin
 sum1&#58;=sum1+TEMP&#91;I&#93;;
 counter1&#58;=counter1+1;
 writeln &#40;counter1&#41;;
end;
if ELAXISTO&#91;I&#93;=2 then
begin
sum2&#58;=sum2+TEMP&#91;i&#93;;
counter2&#58;=counter2+1;
end;
if ELAXISTO&#91;I&#93;=3 then
begin
sum3&#58;=sum3+TEMP&#91;I&#93;;
counter3&#58;=counter3+1;
end;
if ELAXISTO&#91;I&#93;=4 then
begin
 sum4&#58;=sum4+TEMP&#91;I&#93;;
 counter4&#58;=counter4+1;
end;
if ELAXISTO&#91;I&#93;=5 then
begin
sum5&#58;=sum5+TEMP&#91;I&#93;;
counter5&#58;=counter5+1;
end;
if ELAXISTO&#91;I&#93;=6 then
begin
sum6&#58;=sum6+TEMP&#91;I&#93;;
counter6&#58;=counter6+1;
end;
if ELAXISTO&#91;I&#93;=7 then
begin
 sum7&#58;=sum7+TEMP&#91;I&#93;;
 counter7&#58;=counter7+1;
end;
if ELAXISTO&#91;I&#93;=8 then
begin
sum8&#58;=sum8+TEMP&#91;I&#93;;
counter8&#58;=counter8+1;
end;
if ELAXISTO&#91;I&#93;=9 then
begin
sum9&#58;=sum9+TEMP&#91;I&#93;;
counter9&#58;=counter9+1;
end;
if ELAXISTO&#91;I&#93;=10 then
begin
 sum10&#58;=sum10+TEMP&#91;i&#93;;
 counter10&#58;=counter10+1;
end;
if ELAXISTO&#91;I&#93;=11 then
begin
sum11&#58;=sum11+TEMP&#91;I&#93;;
counter11&#58;=counter11+1;
end;
if ELAXISTO&#91;I&#93;=12 then
begin
sum12&#58;=sum12+TEMP&#91;I&#93;;
counter12&#58;=counter12+1;
end;
end;
writeln &#40;'JAN av.   ',&#40;sum1/counter1&#41;&#58;3&#58;2, '  FEB av.  ',&#40;sum2/counter2&#41;&#58;3&#58;2,
 ' MAR av.   ', &#40;sum3/counter3&#41;&#58;3&#58;2, '  APR av.  ', &#40;sum4/counter4&#41;&#58;3&#58;2,' MAY av.  ',&#40;sum5/counter5&#41;&#58;3&#58;2,' JUN av. ',
  &#40;sum6/counter6&#41;&#58;3&#58;2, ' JUJ av.  ',&#40;sum7/counter7&#41;&#58;3&#58;2 ,'  AUG av.  ', &#40;sum8/counter8&#41;&#58;3&#58;2,
  ' SEP av.  ',&#40;sum9/counter9&#41;&#58;3&#58;2,'  OCT  ',
  &#40;sum10/counter10&#41;&#58;3&#58;2,' NOV', &#40;sum11/counter11&#41;&#58;3&#58;2, '  DEC ', &#40;sum12/counter12&#41;&#58;3&#58;2&#41;;
end;
begin
clrscr;
assign &#40;myfile,'c&#58;\find.txt'&#41;;
reset &#40;myfile&#41;;
&#123;assign &#40;outfile,'c&#58;\New.dat'&#41;;
rewrite &#40;outfile&#41;;&#125;
rows&#58;=max_dimension;
for I&#58;=1 to rows do
begin
readln &#40;myfile,stat,yy,nm,dd,hh,lat,lon,elen,pres,msl,pt,pv,wd,
ws,t,td,cln,clm,cll,vis,prec&#41;;
t&#58;=METATROPH_KELVIN&#40;t&#41;;
TEMP&#91;I&#93;&#58;=t;
YEAR&#91;I&#93;&#58;=yy;
ELAXISTO&#91;I&#93;&#58;=nm;
DAY&#91;I&#93;&#58;=dd;
TIME&#91;I&#93;&#58;=hh;
writeln &#40;outfile,stat&#58;6,yy&#58;5,nm&#58;3,dd&#58;3,hh&#58;3,lat&#58;7&#58;2,lon&#58;7&#58;2,elen&#58;7&#58;2,pres&#58;2&#58;2,msl&#58;9&#58;2,pt&#58;5&#58;1,pv&#58;6&#58;1,wd&#58;6&#58;1,
ws&#58;6&#58;1,t&#58;9&#58;2,td&#58;9&#58;2,cln&#58;6,clm&#58;3,cll&#58;3,vis&#58;4,prec&#58;6&#58;1&#41;;
end;
&#123;EYRESH_MEGISTOY_K_ELAXISTOY &#40;MEGISTO,ELAXISTO&#41;;
MONTHS;&#125;
c&#58;=readkey;
end.

Τα lan,lon,ps,wd είναι τα ονόματα των υπόλοιπων στηλών
turbospyrus

Spyrus21
Δημοσιεύσεις: 9
Εγγραφή: 26 Ιουν 2007 18:54

Πρόγραμμα στην PASCAL που διαβαζει συγκεκριμένες στήλες

Δημοσίευση από Spyrus21 » 30 Ιουν 2007 14:01

Τα προγράμματα κώδικες που έχς φτιάξει έχουν καποια λάθη .Το μόνο που χρειάζομαι είναι μία διόρθωση σε ένα το πολύ από αυτά ώστε να ανταποκρίνονται στην εκφώνηση της άσκησης.Πρέπει να το έχω έως αύριο το μεσημέρι . Ευχαριστώ
turbospyrus

Απάντηση

Επιστροφή στο “Delphi, Pascal”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες