Μετατροπή θερμοκρασίας με χρήση function στην Turbo Pascal

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

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

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

Μετατροπή θερμοκρασίας με χρήση function στην Turbo Pascal

Δημοσίευση από Spyrus21 » 25 Δεκ 2007 22:23

Να δημιουργήσετε ένα πρόγραμμα το οποίο θα ζητάει από το χρήστη να εισάγει από το πληκτρολόγιο τη θερμοκρασία σε κάποιο συγκεκριμένη κλίμακα και θα την μετατρέπει στις άλλες 2 κλίμακες μέτρησης. Για παράδειγμα, ο χρήστης θα μπορούσε να δώσει 34 και C, οπότε το πρόγραμμα θα πρέπει να εκτυπώνει στην οθόνη την τιμή των 34οC στις άλλες 2 κλίμακες (F και K). Το ίδιο θα πρέπει να συμβαίνει και όταν δίνουμε τιμή για κάθε μία από τις άλλες 2 κλίμακες.

Υπενθυμίζεται ότι, οι μετατροπές στις διάφορες κλίμακες μέτρησης είναι οι ακόλουθες:

1. K=C+273.16 και F=(C*9/5)+32
2. K=(F+459.67)*5/9 και C=(F-32)*5/9
3. C=K-273.16 και F=K*9/5-459.67


Στην άσκηση θεωρείται υποχρεωτική η χρήση functions


Έχω φτιάξει ένα πρόγραμμα αλλά δεν το τρέχει :

Program Klimakes_Thermokrasias;
{Uses crt;}

Var
a,x1,x2:real;
b { ,c }:char;
BEGIN
Writeln('Dwse Klimaka thermokrasias');
writeln('K:Kelvin,C:Celsius,F:Farenheit');
readln(b);
writeln('Dwse Vathmoys-Timi thermokrasias');
readln(a);


FUNCTION MetatropiF1(a:Real):Real;

Begin
metatropiF1=((a*9)/5)+32;
End;


FUNCTION MetatropiF2(a:Real):Real;

Begin
metatropiF2:=((a*9)/5)-459.67;
End;


FUNCTION MetatropiK1(a:Real):Real;

Begin
metatropiK1:=a+273.16;
End;


FUNCTION MetatropiK2(a:Real):Real;

Begin
metatropiK2:=(a+459.67)*(5/9);
End;


FUNCTION MetatropiC1(a:Real):Real;

Begin
metatropiC1:=(a-273.16);
End;

FUNCTION MetatropiC2(a:Real):Real;

Begin
metatropiC2:=(a-32)*(5/9);
End;


If b:= F then

x1:=metatropiK2 and x2:=metatropiC2

writeln('Oi Vathmoi se klimaka Kelvin einai:',x1);
writeln('Oi Vathmoi se klimaka Celsiu einai:',x2);

End;


If b:= K then

x1:=metatropiC1 and x2:=metatropiF2

writeln('Oi Vathmoi se klimaka Celsius einai:',x1);
writeln('Oi Vathmoi se klimaka Farenheit einai:',x2);

End;

If b:= C then

x1:=metatropiK1 and x2:=metatropiF1

writeln('Oi Vathmoi se klimaka Kelvin einai:',x1);
writeln('Oi Vathmoi se klimaka Farenheit einai:',x2);

End;

{c:=readkey;}

END.





Τι χρειάζεται να διορθωθεί για να τρέξει;
turbospyrus

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Μετατροπή θερμοκρασίας με χρήση function στην Turbo Pascal

Δημοσίευση από dva_dev » 25 Δεκ 2007 22:57

Βάλε όλες τις functions που έχεις φτιάξει ΠΡΙΝ το BEGIN που έχεις μετά τις δηλώσεις μεταβλητών b { ,c }:char;

επίσης ο έλεγχος για ισότητα δεν είναι := αλλά =

τα C, F, K μήπως πρέπει να γίνουν χαρακτήρες;

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

Μετατροπή θερμοκρασίας με χρήση function στην Turbo Pascal

Δημοσίευση από Spyrus21 » 26 Δεκ 2007 02:25

Τις έκανα τις αλλαγές αλλά και πάλι δεν το τρέχει , αλλά μου βγάζει συνεχώς το μήνυμα
(4,1) Fatal : Can't find Unit system used by Klimakes_Thermokrasias.
turbospyrus

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Μετατροπή θερμοκρασίας με χρήση function στην Turbo Pascal

Δημοσίευση από dva_dev » 26 Δεκ 2007 12:33

Το unit system είναι μια από τις βιβλιοθήκες της turbo pascal, μήπως δεν έχεις κάνει σωστά (ή σου έβγαλε πρόβλημα) η εγκατάσταση της pascal;

[edit]
Αν θέλεις δείξε μας τι αλλαγές έχεις κάνει.
[/edit]

Άβαταρ μέλους
proghostrammer
Δημοσιεύσεις: 14
Εγγραφή: 15 Ιουν 2007 18:30

Μετατροπή θερμοκρασίας με χρήση function στην Turbo Pascal

Δημοσίευση από proghostrammer » 26 Δεκ 2007 13:00

Φίλε , το uses crt πρέπει να το βάλεις χωρίς τις αγκύλες γιατί δεν το βλέπει καθόλου ο compiler (γιατί είναι σχόλιο).

Αν πάλι δεν τρέχει,δοκίμασε το wincrt αντί του crt .

Καλές γιορτές! :D
The programming is fantastic !!!! ;-)

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

Μετατροπή θερμοκρασίας με χρήση function στην Turbo Pascal

Δημοσίευση από Spyrus21 » 26 Δεκ 2007 17:08

Program Klimakes_Thermokrasias;
Uses crt;

Var
a,x1,x2,K,C,F:real;
b { ,c }:char;

Writeln('Dwse Klimaka thermokrasias');
writeln('K:Kelvin,C:Celsius,F:Farenheit');
readln(b);
writeln('Dwse Vathmoys-Timi thermokrasias');
readln(a);


FUNCTION MetatropiF1(a:Real):Real;

Begin
metatropiF1=((a*9)/5)+32;
End;


FUNCTION MetatropiF2(a:Real):Real;

Begin
metatropiF2=((a*9)/5)-459.67;
End;


FUNCTION MetatropiK1(a:Real):Real;

Begin
metatropiK1=a+273.16;
End;


FUNCTION MetatropiK2(a:Real):Real;

Begin
metatropiK2=(a+459.67)*(5/9);
End;


FUNCTION MetatropiC1(a:Real):Real;

Begin
metatropiC1=(a-273.16);
End;

FUNCTION MetatropiC2(a:Real):Real;

Begin
metatropiC2=(a-32)*(5/9);
End;

BEGIN


If b= F then

x1=metatropiK2 and x2=metatropiC2

writeln('Oi Vathmoi se klimaka Kelvin einai:',x1);
writeln('Oi Vathmoi se klimaka Celsiu einai:',x2);

End;


If b= K then

x1=metatropiC1 and x2=metatropiF2

writeln('Oi Vathmoi se klimaka Celsius einai:',x1);
writeln('Oi Vathmoi se klimaka Farenheit einai:',x2);

End;

If b= C then

x1=metatropiK1 and x2=metatropiF1

writeln('Oi Vathmoi se klimaka Kelvin einai:',x1);
writeln('Oi Vathmoi se klimaka Farenheit einai:',x2);

End;


{c:=readkey;}

END.
turbospyrus

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Μετατροπή θερμοκρασίας με χρήση function στην Turbo Pascal

Δημοσίευση από dva_dev » 26 Δεκ 2007 18:28

Γιατί μου δίνεις την εντύπωση ότι κάνεις δοκιμές χωρίς να καταλαβαίνεις τι αλλάζεις; Αυτό που διόρθωσες έχει περισσότερα λάθη από το αρχικό.

Παράτα τις άσκοπες δοκιμές στην άκρη και ξεκίνα το διάβασμα της pascal από τα πολύ βασικά.

Πως συντάσεται το πρόγραμμα.
Ποιοί είναι οι τελεστές
Ποιοί είναι οι λογικοί τελεστές
Πως συντάσσονται οι έλεγχοι
Πως συντάσσεται η εντολή if
Πως συντάσσονται οι σύνθετες εντολές
Τι ρόλο παίζει το begin, end
Πως συντάσσονται οι functions και οι procedures
Πως καλλούνται οι functions και οι procedures

Πρέπει οπωσδήποτε να μάθεις να διαβάζεις τα μηνύματα που βγάζει ο compiler.

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

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

Μετατροπή θερμοκρασίας με χρήση function στην Turbo Pascal

Δημοσίευση από Spyrus21 » 27 Δεκ 2007 01:44

στην εκφώνηση λέει : Να δημιουργήσετε ένα πρόγραμμα το οποίο θα ζητάει από το χρήστη να εισάγει από το πληκτρολόγιο τη θερμοκρασία σε κάποια συγκεκριμένη κλίμακα και θα την μετατρέπει στις άλλες 2 κλίμακες μέτρησης. Για παράδειγμα, ο χρήστης θα μπορούσε να δώσει 34 και C, οπότε το πρόγραμμα θα πρέπει να εκτυπώνει στην οθόνη την τιμή των 34οC στις άλλες 2 κλίμακες (F και K). Το ίδιο θα πρέπει να συμβαίνει και όταν δίνουμε τιμή για κάθε μία από τις άλλες 2 κλίμακες.
εγώ έφτιαξα το πρόγραμμα με functions αλλά για μία κλίμακα μου δείχνει στην οθόνη μετατροπή σε άλλη κλίμακα.

Το ερώτημα είναι:Πώς θα το κάνω αν γράφω τη μία κλίμακα να μου δείχνει και τις άλλες δύο στην ίδια οθόνη;


Το πρόγραμμα που έφτιαξα είναι το εξής:

program functions;
uses crt;
var a,d,e,g,h,i,j:real;
b:longint;
z:char;



FUNCTION MetatropiF1(a:real):real;

Begin
{readln(a);}

metatropiF1:=((a*9)/5)+32;
End;

FUNCTION MetatropiF2(a:Real):Real;

Begin
{readln(a);}

metatropiF2:=((a*9)/5)-459.67;
End;
FUNCTION MetatropiK1(a:Real):Real;

Begin
{readln(a);}
metatropiK1:=a+273.16;
End;
FUNCTION MetatropiK2(a:Real):Real;

Begin
{readln(a);}
metatropiK2:=(a+459.67)*(5/9);
End;
FUNCTION MetatropiC1(a:Real):Real;

Begin
metatropiC1:=(a-273.16);
End;

FUNCTION MetatropiC2(a:Real):Real;

Begin
metatropiC2:=(a-32)*(5/9);
End;
begin
writeln('Gia metatropi apo C se F,grapse 1,pata enter,dwse tin timi kai ksanapata enter');
writeln('Gia metatropi apo K se F,grapse 2,pata enter,dwse tin timi kai ksanapata enter');
writeln('Gia metatropi apo C se K,grapse 3,pata enter,dwse tin timi kai ksanapata enter');
writeln('Gia metatropi apo F se K,grapse 4,pata enter,dwse tin timi kai ksanapata enter');
writeln('Gia metatropi apo K se C,grapse 5,pata enter,dwse tin timi kai ksanapata enter');
writeln('Gia metatropi apo F se C,grapse 6,pata enter,dwse tin timi kai ksanapata enter');
readln(b);
readln(a);
if b=1 then {do Begin}
{writeln('MetatropiF1');}
{writeln('the sum is ',d);}
d:=metatropif1(a);
writeln(d);
if b=2 then
e:=metatropif2(a);
writeln(e);
if b=3 then
g:=metatropiK1(a);
writeln(g);
if b=4 then
h:=metatropiK2(a);
writeln(h);
if b=5 then
i:=metatropiC1(a);
writeln(i);
if b=6 then
j:=metatropiC2(a);
writeln(j);

{end.}
z:=readkey;
end.
turbospyrus

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Μετατροπή θερμοκρασίας με χρήση function στην Turbo Pascal

Δημοσίευση από dva_dev » 27 Δεκ 2007 04:27

χρειάζεσαι μόνο τρείς επιλογές (όσες είναι και οι κλίμακες θερμοκρασίας που θα διαλέγεις) και όχι 6.
Στο πρόγραμμα όπως το έχεις διαμορφώσει οι 1 και 3, 4 και 6, 2 και 5 πρέπει να γίνονται μαζί.
Επίσης πρέπει να χρησιμοποιείς το begin/end στο if αφού δεν εκτελείς μόνο μία εντολή κάθε φορά αλλά δύο.

Με λίγη μορφοποίηση ο κώδικας σου μπορεί να γίνει κάπως έτσι

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

program functions; 
uses crt; 

var
	a : real; 
	b : char;

{sxolia gia to ti kanei h function. Metatropi apo X se Y}
FUNCTION MetatropiF1(a:real):real; 
Begin 
	MetatropiF1 := a * 9 / 5 + 32;
End; 

{sxolia gia to ti kanei h function. Metatropi apo X se Y}
FUNCTION MetatropiF2(a:Real):Real; 
Begin 
	MetatropiF2 := a * 9 / 5 - 459.67; 
End;
 
{sxolia gia to ti kanei h function. Metatropi apo X se Y}
FUNCTION MetatropiK1(a:Real):Real; 
Begin 
	MetatropiK1 := a + 273.16; 
End;

{sxolia gia to ti kanei h function. Metatropi apo X se Y}
FUNCTION MetatropiK2(a:Real):Real; 
Begin 
	MetatropiK2 := (a + 459.67) * 5 / 9;
End;
 
{sxolia gia to ti kanei h function. Metatropi apo X se Y}
FUNCTION MetatropiC1(a:Real):Real; 
Begin 
	MetatropiC1 := a-273.16;
End; 

{sxolia gia to ti kanei h function. Metatropi apo X se Y}
FUNCTION MetatropiC2(a:Real):Real; 
Begin 
	MetatropiC2 := (a - 32) * (5 / 9); 
End;

begin 
	writeln('Dwse Klimaka thermokrasias (K:Kelvin,C:Celsius,F:Farenheit)'); 
	readln(b);
{
		kati prepei na emfanizei an doseis lathos epiloges
		an kai einai kalytera na ginetai aytos o elegxos prin zitiseis thn thermokrasia
		oste na mhn dinei o xrhsths V (anti gia C) kai 12, kai meta na toy les oti to
		gramma poy edose den einai sosth epilogi
}

	writeln('Dwse Vathmoys-Timi thermokrasias');
	readln(a);
	{prepei na elexthei h thermokrasia gia logikes times (oxi mikroteres apo to apolyto mhden)}

{
	prepei na ginetai elegxos kai gia kefalaia kai gia mikra grammata: C,c,K,k,F,f
	akoma kalytera na xrhsimopoih8ei h case anti gia pollapla if
}
	if b='C' then
	begin
		writeln('F=',MetatropiF1(a)); 
		writeln('K=',MetatropiK1(a));
	end
	else if b='K' then
	begin 
		writeln('F=',MetatropiF2(a));
		writeln('C=',MetatropiC1(a));
	end
	else if b='F' then 
	begin
		writeln('K=',MetatropiK1(a));
		writeln('C=',MetatropiC2(a));
	end;
	
	b:=readkey; 
end.

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

Μετατροπή θερμοκρασίας με χρήση function στην Turbo Pascal

Δημοσίευση από Spyrus21 » 27 Δεκ 2007 12:14

Σημασία έχει 1) ότι το πρόγραμμα τρέχει και 2) Ανταποκρίνεται στην εκφώνηση της άσκησης.

:D Ευχαριστώ Πολύ για τη βοήθεια και το χρόνο που διαθέσατε :D

Καλές Γιορτές και Καλή Πρωτοχρονιά!!!
turbospyrus

Απάντηση

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

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

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