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

Ερώτηση σε Pascal


stelios99

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

Δημοσ.

Παιδιά έγραψα αυτό το πρόγραμμα:

 

Program geometry;

Uses crt;

Var choice:integer;

 

Procedure get_data(Var pleura1,pleura2:real);

Begin

Case choice of

1:Begin

Clrscr;

writeln;

writeln;

writeln('Data Entry':45);

writeln('==========':45);

writeln;

writeln;

write('Give the side of the square: ':45);

readln(pleura1);

end;

2:Begin

Clrscr;

writeln;

writeln;

writeln('Data Entry':45);

writeln('==========':45);

writeln;

writeln;

write('Give the two sides of the rectangle: ':45);

readln(pleura1,pleura2);

end;

3:Begin

Clrscr;

writeln;

writeln;

writeln('Data Entry':45);

writeln('==========':45);

writeln;

writeln;

write('Give the two sides of the right triangle: ':45);

readln(pleura1,pleura2);

end;

end;

 

Procedure compute1(a:real; Var perimeter,area:real);

Begin

perimeter:=4*a;

area:=a*a;

end;

 

Procedure compute2(a,b:real; Var perimeter,area:real);

Var upotinousa:real;

Begin

Case choice of

2:Begin

perimeter:=2*(a+B);

area:=a*b;

end;

3:Begin

upotinousa:=SQRT(SQR(a)+SQR(B));

perimeter:=a+b+upotinousa;

area:=(a*B)/2;

end;

end;

 

Procedure print(shape:string;perimeter,area:real;);

Var ch1:char;

Begin

Clrscr;

writeln;

writeln;

writeln;

writeln('Show Results':45);

writeln('============':45);

writeln;

writeln;

writeln(shape:45);

write('Area: ':45);

writeln(area:5:2);

write('Perimeter: ':45);

writeln(perimeter:5:2);

writeln;

writeln;

writeln;

writeln;

writeln;

writeln;

writeln;

write('Press the ENTER to return on the catalogue::45);

readln(ch1);

end;

 

Procedure main_menu;

Var ch1:char;

a,b,perimeter,area:real;

shape:string;

Begin

Repeat

Clrscr;

writeln;

writeln('Calalogue':45);

writeln('=-=-=-=-=':45);

writeln('1. Square':45);

writeln('2. Rectangle':45);

writeln('3. Right Triangle':45);

writeln('4. Exit':45);

writeln;

write('Make one choice from the above catalogue(1-4):':45);

readln(choice);

While (choice<1) OR (choice>5) Do

Begin

writeln('Wrong value!':45);

writeln;

write('Choose again(1-4):':45);

readln(choice);

end;

Case choice of

1: Begin

shape:='Square';

get_data(a);

compute1(a,perimeter,area);

print(shape,perimeter,area);

end;

2: Begin

shape:='Rectangle';

get_data(a,B);

compute2(a,b,perimeter,area);

print(shape,perimeter,area);

end;

3: Begin

shape:='Right Triangle';

get_data(a,B);

compute2(a,b,perimeter,area);

print2(shape,perimeter,area);

end;

4:exit;

Until choice=4;

end;

 

Begin

main_menu;

End.

 

Δυστυχώς δεν δουλεύει,μπορεί να μου βρει κάποιος το λάθος;

Επίσης η Procedure exit δεν είναι τελειωμένη, επειδή δεν ξέρω τον κώδικα με τον οποίο θα κλείνει κατευθείαν το πρόγραμμα, ξέρει κανείς τον κώδικα;

Δημοσ.

Τί είναι το code;

Για το πρώτο τί να πω....

Όταν γράφεις ένα μήνυμα εδώ στο Insomnia, στην γραμμή εργαλείων του κειμενογράφου υπάρχει ένα σύμβολο "<>". Είναι απόσπασμα κώδικα. Όταν το πατήσεις σου βάζει μόνο του

[/cοde] μέσα στο οποίο ο κώδικας είναι πολύ πιο ευανάγνωστος!
Δημοσ.

1) το Δεν δουλεύει δεν λέει τίποτα. τι περιμένεις να βγάλει και τι βγάζει.

2) από μια γρήγορη ματιά όλα φαίνονται να είναι σωστά αλλά με το smiles που έχει βγάλει και τον κώδικα χωρίς indents μπορεί και να μου ξεφεύγει κάτι.

 

3) και βασικό ποιον compiler χρησιμοποιείς δίνει την εντύπωση οτι είναι turbo pascal για dos αλλά δεν παίρνω και όρκο.

Δημοσ.

>τα λάθη σε γενικές γραμμές είναι
=====================================
1) λείπουν όλα τα end; από το τέλος του case
2) λείπει ένα ορισμα από το get_data(a)   ( οταν επιλέγεις square )
3)σε ένα μήνυμα υπάρχει ::45 αντί ':45  ( write('Press the ENTER to return on the catalogue::45); )
4) σε μια διαδικασία υπάρχει ; αντι );  ( στην print )
5) λείπει το end; από το repeat
6) print2 αντί print

 

και ο σωστός κώδικας είναι

 

>
Program geometry;
Uses crt;

Var choice:integer;
Procedure get_data(Var pleura1,pleura2:real);
Begin
Case choice of
    1:Begin
           Clrscr;
           writeln;
           writeln;
           writeln('Data Entry':45);
           writeln('==========':45);
           writeln;
           writeln;
           write('Give the side of the square: ':45);
           readln(pleura1);
      end;
    2:Begin
           Clrscr;
           writeln;
           writeln;
           writeln('Data Entry':45);
           writeln('==========':45);
           writeln;
           writeln;
           write('Give the two sides of the rectangle: ':45);
           readln(pleura1,pleura2);
      end;
    3:Begin
           Clrscr;
           writeln;
           writeln;
           writeln('Data Entry':45);
           writeln('==========':45);
           writeln;
           writeln;
           write('Give the two sides of the right triangle: ':45);
           readln(pleura1,pleura2);
      end;
end;
end;

Procedure compute1(a:real; Var perimeter,area:real);
Begin
    perimeter:=4*a;
    area:=a*a;
end;

Procedure compute2(a,b:real; Var perimeter,area:real);
Var upotinousa:real;
Begin
    Case choice of
         2:Begin
                perimeter:=2*(a+;
                area:=a*b;
           end;
         3:Begin
                upotinousa:=SQRT(SQR(a)+SQR();
                perimeter:=a+b+upotinousa;
                area:=(a*B)/2;
           end;
    end;
end;

Procedure print(shape:string;perimeter,area:real);
Var ch1:char;
Begin
    Clrscr;
    writeln;
    writeln;
    writeln;
    writeln('Show Results':45);
    writeln('============':45);
    writeln;
    writeln;
    writeln(shape:45);
    write('Area: ':45);
    writeln(area:5:2);
    write('Perimeter: ':45);
    writeln(perimeter:5:2);
    writeln;
    writeln;
    writeln;
    writeln;
    writeln;
    writeln;
    writeln;
    write('Press the ENTER to return on the catalogue':45);
    readln(ch1);
end;

Procedure main_menu;
Var ch1:char;
a,b,perimeter,area:real;
shape:string;
Begin
    Repeat
          Clrscr;
          writeln;
          writeln('Catalogue':45);
          writeln('=-=-=-=-=':45);
          writeln('1. Square':45);
          writeln('2. Rectangle':45);
          writeln('3. Right Triangle':45);
          writeln('4. Exit':45);
          writeln;
          write('Make one choice from the above catalogue(1-4):':45);
          readln(choice);
          While (choice<1) OR (choice>5) Do
          Begin
               writeln('Wrong value!':45);
               writeln;
               write('Choose again(1-4):':45);
               readln(choice);
          end;
          Case choice of
               1: Begin
                       shape:='Square';
                       get_data(a,;
                       compute1(a,perimeter,area);
                       print(shape,perimeter,area);
                  end;
               2: Begin
                       shape:='Rectangle';
                       get_data(a,;
                       compute2(a,b,perimeter,area);
                       print(shape,perimeter,area);
                  end;
               3: Begin
                       shape:='Right Triangle';
                       get_data(a,;
                       compute2(a,b,perimeter,area);
                       print(shape,perimeter,area);
                 end;
               4:exit;
    end;
       Until choice=4;
end;

Begin
main_menu;
End.

Δημοσ.

Ευχαριστώ πάρα πολύ virxen75 :D

Μία τελευταία ερώτηση: στον κατάλογο υπάρχει και μία τέταρτη επιλογή, Exit, για κλείσιμο του προγράμματος. Tο μόνο πρόβλημα είναι ότι δεν ξέρω ποιος είναι ο κώδικας στην Pascal για να κλείσει το πρόγραμμα.

Μήπως τον γνωρίζεις;

Έχω βρει αυτό: http://www.freepascal.org/docs-html/rtl/system/exit.html

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

Δημοσ.

To exit χρησιμοποιήτε για την έξοδο απο την τρέχουσα υπορουτήνα για την έξοδο από την εφαρμογή προσπάθησε την Halt.

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

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

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