Berechnung des Flächeninhaltes eines Rechteckes

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
Antworten
sunshine94
Beiträge: 4
Registriert: Mi 17. Okt 2012, 21:18

Berechnung des Flächeninhaltes eines Rechteckes

Beitrag von sunshine94 »

Hey. :D
Ich habe ein ganz dringendes Problem...muss für die Schule ein Programm zur Berechnung des Flächeninhaltes eines Rechteckes bzw. Kreises herstellen...nunja ich schreibe am Freitag eine Klassenarbeit und irgendwie will mein Programm nicht funktionieren..es weigert sich meinen Flächeninhalt auszurechnen :(
ich würde mich freuen, wenn mal einer drübergucken könnte und mir meinen Fehler nennen könnte...
Daaaaaaanke =)
Lg

Code: Alles auswählen

 var
  wahl:integer;
  flaecheninhaltkreis:Extended;
  flaecheninhaltrechteck:Extended;
  Umfangkreis:real;
  Umfangrechteck:real;
  a:real;
  b:real ;
  r:real;
 
begin
//Eingabe:
write('mit diesem Programm können sie den Flaecheninhalt eines Kreises oder eines Rechteckes ausrechnen') ;
write('Rechteck(1) oder Kreis(2)') ;
read(wahl);
 
//Verarbeitung:
IF (wahl=2)
then begin
write ('r');
read (r);
flaecheninhaltkreis :=r*3.14159265 ;
read(flaecheninhaltkreis);
Umfangkreis :=2*r*3.14159265;
read(Umfangkreis)
 
end
Else begin
write('a');
read (a);
write ('b');
read(b);
flaecheninhaltrechteck:=a*b;
read(flaecheninhaltrechteck);
Umfangrechteck :=2*a+2*b ;
read (umfangrechteck);
 
end;
//Ausgabe:
write('Der Flaecheninhaltkreis betraegt:' ,flaecheninhaltkreis:8:2);
readln
 
 
end.
Zuletzt geändert von Lori am Do 18. Okt 2012, 16:49, insgesamt 2-mal geändert.
Grund: Bitte den Highlighter und einen aussagekräftigeren Titel verwenden

amrs
Beiträge: 9
Registriert: Fr 12. Okt 2012, 22:55
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: 32Bit

Re: Probleme...:-(

Beitrag von amrs »

Hi,

probiers doch mal mit

Code: Alles auswählen

 
writeln(flaecheninhaltkreis);                     
writeln(Umfangkreis)       ´                                                           
writeln(flaecheninhaltrechteck);                                               
writeln(umfangrechteck);   


statt mit

Code: Alles auswählen

 
read(flaecheninhaltkreis);
read(Umfangkreis)
read(flaecheninhaltrechteck);
read (umfangrechteck);


Dann würde ich auch einen einheitlichen Datentyp für die Variablen verwenden, also statt

Code: Alles auswählen

var
...
flaecheninhaltkreis:Extended;
flaecheninhaltrechteck:Extended;
Umfangkreis:real;
Umfangrechteck:real;
 
würde ich schreiben
var
...
flaecheninhaltkreis, flaecheninhaltrechteck:real;


wie Du es für die anderen Variablen bereits gemacht hast.

Ein weiteres Problem könnte darin bestehen, wie Du die Zahlen eingibst (nach read(..)).

Gibst Du als Dezimalzeichen einen Punkt oder ein Komma ein - was ist bei Deinen Systemeinstellungen eingestellt.

Wenn Du das alles umsetzt, sollte das Programm eigentlich funktionieren.


Viel Erfolg!

Andreas

Umfangrechteck:real;
Zuletzt geändert von Lori am Do 18. Okt 2012, 16:53, insgesamt 1-mal geändert.
Grund: Bitte den Highlighter verwenden

amrs
Beiträge: 9
Registriert: Fr 12. Okt 2012, 22:55
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: 32Bit

Re: Probleme...:-(

Beitrag von amrs »

Nochmal ich,

da hat mir etwas die Formatierung verhagelt.

Schreibe writeln(flaecheninhaltkreis); anstelle read(flaecheninhaltkreis);
Schreibe writeln(Umfangkreis) anstelle read(Umfangkreis)
Schreibe writeln(flaecheninhaltrechteck); anstelle read(flaecheninhaltrechteck);
Schreibe writeln(umfangrechteck); anstelle read (umfangrechteck);

Funktioniert's jetzt?

Andreas

mintpc
Beiträge: 124
Registriert: Mo 6. Sep 2010, 18:39
OS, Lazarus, FPC: Win 7 (L 1.6 FPC 3.0.0)
CPU-Target: Win 7
Wohnort: Mailand

Re: Probleme...:-(

Beitrag von mintpc »

Der Fehler liegt hier:

Code: Alles auswählen

flaecheninhaltkreis :=r*3.14159265 ;   
read(flaecheninhaltkreis);         
Umfangkreis :=2*r*3.14159265;
read(Umfangkreis)


Erst wird der Flächeninhalt berechnet, und dann nochmal eingelesen, algorithmisch falsch.

Richtig wäre:

flaecheninhaltkreis :=r*3.14159265 ;
write(flaecheninhaltkreis);

Also eine Ausgabeanweisung, statt der Leseanweisung.

Und ... ihr habt in der Schule doch das Einrücken gelernt. Damit ist der
Quelltext besser lesbar.

Gruß
mintpc

mintpc
Beiträge: 124
Registriert: Mo 6. Sep 2010, 18:39
OS, Lazarus, FPC: Win 7 (L 1.6 FPC 3.0.0)
CPU-Target: Win 7
Wohnort: Mailand

Re: Probleme...:-(

Beitrag von mintpc »

Ach, da war jemand schneller :D

sunshine94
Beiträge: 4
Registriert: Mi 17. Okt 2012, 21:18

Re: Probleme...:-(

Beitrag von sunshine94 »

Dankeschoen!!!!
,das war meine Rettung und jetzt klappt es :D :D
...nur,dass es jetzt mein Ergebnis in dem schwarzen Fenster so kurz anzeigt, dass ich es eig gar nicht richtig lesen kann...

Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Re: Probleme...:-(

Beitrag von Eb »

Ich vermute mal, dass du nicht weisst, was die Befehle write, writeln, read und readln machen ...

Code: Alles auswählen

write(a);    // gibt die Variable a aus.
writeln(a);   // gibt die Varibale a aus und macht danach einen Zeilenumbruch.
read(a);      // wartet darauf dass der Benutzer einen Wert eingibt und setzt diesen Wert dann in die Variable a.
readln;       // wartet darauf, dass der Benutzer ENTER drückt


Damit ein Konsolenprogramm 'anhält', z.B. damit man die Ausgabe lesen kann, verwendet man readln.

Grundsätzlich ist es beim Programmieren hilfreich, wenn man weiss was die Befehle tun, die man einsetzt .
Und die Formel für den Flächeninhalt eines Kreises würde ich mir auch nochmal anschauen ;-)

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Probleme...:-(

Beitrag von Euklid »

sunshine94: Wir helfen Dir hier gerne weiter. Du kannst uns dabei die Arbeit erleichtern, indem Du.den Syntax-Highlighter nutzt um den Code lesbarer zu machen und die Überschriften Deiner Threads aussagekräftig gestaltest.

Für den Flächeninhalt eines Kreises gilt:

Code: Alles auswählen

Flaecheninhalt := r*r*3,1415926;


- Euklid

Antworten